
보안 연구 랩으로, CVE-2026-41414(.github/workflows/pr.yml의 pull_request_target pwn)를 재현합니다 — skim-rs/skim @ ca986f4의 스냅샷이며, 포크가 아닙니다.
자동화된 연구 산출물 — 업스트림 프로젝트가 아님.
이 저장소는 Université Laval의 석사 논문에서 게시된 GitHub Actions 워크플로우 취약점 재현을 위해 자동화된 하네스가 구축한 일회용 실험실입니다. 이는
skim-rs/skim의 커밋ca986f444c37d2c1dc15ce1fad2fe101776af8d9(2026-04-14) 시점의 축어적 스냅샷으로, 해당 프로젝트의 자체 라이선스에 따라 재배포되며, 해당 라이선스 파일은 이 스냅샷에 변경 없이 포함되어 있습니다.업스트림 프로젝트는 관여하지 않으며, 결코 공격 대상이 아니고, 여기서 연구된 취약점은 이미 공개된 상태입니다. 이 저장소의 모든 비밀과 변수는 무작위로 생성된 더미 값입니다 — 실제 자격 증명은 존재하지 않습니다. 액션 참조와 러너 이미지는 2026-04-14에 확인된 값으로 고정되어 있습니다. 스냅샷에 적용된 모든 변경 사항은 하네스 출력의
pinning.md를 참조하세요.질문 또는 이의 제기: [email protected]
인생은 짧다, skim하자!
우리는 파일, 줄, 명령어를 탐색하는 데 너무 많은 시간을 보냅니다. 바로 그때 Skim이 등장합니다! Skim은 워크플로우를 더 빠르고 효율적으로 만들어 주도록 설계된 강력한 퍼지 파인더입니다.
Skim은 sk라는 단일 실행 파일을 제공합니다. grep과 같은 도구의 더 똑똑한 대안이라고 생각하세요 — 한번 사용해 보면, 그것 없이 어떻게 살았는지 궁금해질 것입니다!
skim 프로젝트는 여러 구성 요소를 포함합니다:
sk 실행 파일 - 핵심 프로그램sk를 호출합니다. Vim 지원은 skim.vim을 확인하세요.| OS | 패키지 관리자 | 명령어 |
|---|---|---|
| macOS | Homebrew | brew install sk |
| macOS | MacPorts | sudo port install skim |
| Alpine | apk | apk add skim |
| Arch | pacman | pacman -S skim |
| Fedora | COPR | 아래 참조 |
| Gentoo | Portage | emerge --ask app-misc/skim |
| Guix | guix | guix install skim |
| Void | XBPS | xbps-install -S skim |
최신 Fedora 패키지는 비공식 커뮤니티 유지 관리 COPR 저장소를 통해 제공됩니다.```bash sudo dnf copr enable sisyphus1813/skim sudo dnf install skim
## 수동 설치
다음 중 하나에 해당하는 경우:
- 설치 스크립트 사용:
```sh
# 실행 전에 항상 스크립트 내용을 확인하세요!
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/latest/download/skim-installer.sh | sh
```
- 바이너리 사용: [sk 실행 파일을 직접 다운로드](https://github.com/skim-rs/skim/releases)하세요.
- [crates.io](https://crates.io/)에서 설치: `cargo install skim`
- 수동 빌드:
```sh
$ git clone --depth 1 [email protected]:skim-rs/skim.git ~/.skim
$ cd ~/.skim
$ cargo build --release
$ # 생성된 `target/release/sk` 실행 파일을 PATH에 추가하세요
```
그러면 다음에 접근할 수 있습니다:
- man 페이지: 올바른 경로에 작성하거나 `man --local-file <(sk --man)`을 실행할 수 있습니다.
- 셸 완성(및 선택적 키바인드): `source <(sk --shell \<shell> \[--shell-bindings])` 사용, 자세한 내용은 아래 참조.
# 사용법
Skim은 일반 필터(`grep`과 유사)로 사용하거나 명령을 실행하기 위한
대화형 인터페이스로 사용할 수 있습니다.
## Vim 플러그인으로 사용 (neovim에서는 [fzf-lua](https://github.com/ibhagwan/fzf-lua)를 skim 프로필과 함께 확인하세요)
vim-plug를 통한 설치(권장):
skim을 설치한 후:```vim
Plug 'skim-rs/skim'
시작하는 데 도움이 되는 몇 가지 예시입니다:```bash
sk
vim $(find . -name "*.rs" | sk -m)
이 마지막 명령은 ".rs" 확장자를 가진 파일을 선택할 수 있게 해주며, 선택한 파일을 Vim에서 엽니다. 개발자에게 큰 시간 절약이 됩니다!
## 대화형 인터페이스로 사용하기
`skim`은 다른 명령을 동적으로 호출할 수 있습니다. 일반적으로 프로젝트 디렉터리에서 내용을 검색할 때 [grep](https://www.gnu.org/software/grep/), [ack](https://github.com/petdance/ack2), [ag](https://github.com/ggreer/the_silver_searcher), 또는 [rg](https://github.com/BurntSushi/ripgrep)과 통합하고 싶을 것입니다:```sh
# works with grep
sk --ansi -i -c 'grep -rI --color=always --line-number {q} .'
# works with ack
sk --ansi -i -c 'ack --color {q}'
# works with ag
sk --ansi -i -c 'ag --color {q}'
# works with rg
sk --ansi -i -c 'rg --color=always --line-number {q}'
참고: 이 예제들에서
{q}는 현재 입력 쿼리(작은따옴표로 묶인)로 문자 그대로 확장됩니다. 즉, 이 예제들은 정확한 쿼리 문자열을 검색하며, 퍼지 검색을 하지 않습니다. 퍼지 검색을 하려면 대화형 모드를 사용하지 않고 명령 출력을sk로 파이프하세요.

Fish, Bash 및 Zsh용 바인딩은 shell 디렉터리에서 사용할 수 있습니다:
completion.{shell}에는 sk CLI 사용을 위한 완성 스크립트가 포함되어 있습니다.key-bindings.{shell}에는 키 바인딩과 셸 통합이 포함되어 있습니다:
ctrl-t는 sk를 통해 파일을 선택합니다.ctrl-r은 sk를 통해 기록 항목을 선택합니다.alt-c는 sk를 통해 선택한 디렉터리로 cd합니다.fish에서는 사용 불가) **는 파일 경로를 완성합니다. 예를 들어 ls **<tab>은 폴더를 선택할 수 있는 sk 위젯을 표시합니다.이 기능들을 활성화하려면 key-bindings.{shell} 파일을 소스하고 셸 문서에 따라 완성을 설정하거나 아래를 참조하세요.
지원되는 셸(bash, zsh, fish, powershell 또는 elvish) 중 하나와 함께 --shell 플래그를 사용하여 선호하는 셸용 완성 스크립트를 생성할 수 있습니다:
source <(sk --shell bash)
source <(sk --shell zsh)
sk --shell fish | source
#### 옵션 2: 셸 시작 시 자동으로 로드되도록 파일에 저장```sh
# For bash, add to ~/.bashrc
echo 'source <(sk --shell bash)' >> ~/.bashrc # Or save to ~/.bash_completion
# For zsh, add to ~/.zshrc
sk --shell zsh > ~/.zfunc/_sk # Create ~/.zfunc directory and add to fpath in ~/.zshrc