깃허브 코파일럿 트래픽 MITM 감청해보니: .env 파일까지 컨텍스트로 흘러들어가
- 저자가 GitHub Copilot의 네트워크 트래픽을 mitmproxy로 감청해 내부 동작을 역공학함
- recent edits 기능이 현재 편집 중인 파일 외에 다른 파일의 컨텍스트도 끌어오는데, 여기에 .env 파일도 포함되는 것으로 확인됨
- Chronicle이라는 이름의 SQLite 세션 저장소에 이전 프롬프트와 응답 기록이 저장되고, 모델이 툴 호출로 이 기록을 조회하는 과정이 관찰됨
- 모델/기능 탐색과 라우팅이 실시간으로 이루어지는 과정이 트래픽 감청으로 드러남
- HN 댓글에서 eBPF를 쓰면 인증서 피닝이나 mTLS를 신경 쓸 필요 없이 암호화 직전 평문 데이터를 바로 뽑아낼 수 있다는 대안이 제시됨
Hacker News opinions
코파일럿 크레딧이 왜 이렇게 빨리 없어지는지 궁금해서 mitmproxy로 트래픽을 감청해봤음. 모델/기능 탐색이랑 라우팅이 실시간으로 보이고, recent edits 기능이 .env 파일까지 끌어오는 거 확인함. Chronicle이라는 SQLite 세션 저장소에 이전 프롬프트/응답이 다 저장되고 모델이 툴 호출로 그 기록을 조회하더라.
이런 도구는 env 접근 없는 샌드박스에서 돌려야 한다는 걸 다시 느낌. 프록시 스왑 방식 마음에 든다.
copilot이 어떻게 동작하는지 항상 궁금했는데 좋은 글이다. env 파일 관련 규칙이 전혀 없다는 게 놀라움, github이랑 이렇게 통합된 도구면 기본으로 있을 줄 알았는데 아니었네.
사실 정정하자면 Codex 클라이언트는 오픈소스임. github.com/openai/codex 보면 됨.
대기업이 혁신을 위해 보안을 어떻게 타협하는지 보여주는 사례라고 봄. 아무것도 안 하는 것보다는 나은 선택이라고 생각함.
eBPF 쓰면 인증서 피닝이나 mTLS 신경 안 써도 됨. 암호화 직전, 복호화 직후의 평문 데이터를 그대로 뽑아낼 수 있어서 mitmproxy보다 편함. 텔레메트리부터 프롬프트까지 다 나오는데 관련 없는 것도 엄청 많이 수집하는 게 웃김.
어떻게 그게 되냐? TLS 오프로딩을 커널에서 하는 건 아닐 거고 대부분 openssl 링크해서 유저스페이스에서 하는데, 그 라이브러리를 패치하는 거냐?
ld.preload로 eBPF 모니터를 주입하는 방식인 듯. accept() 시스템콜을 가로채는 인터페이스로 쓰는 거 아닐까 싶음.
코파일럿 Java 코딩 능력이 별로임. episodic memory도 작업 끝난 후에만 기록해서 중간 탐색이나 실패 과정의 컨텍스트가 다 날아감. Codex는 멀티스레드 모델이 턴 출력을 episodic memory에 계속 쌓아서 여러 단계 문제 풀 때 인사이트가 더 좋음.
"Electron으로 만든 사랑받는 앱들"이라니, 사람들이 저 앱 쓰는 건 네트워크 효과나 대안이 없어서 그런 거지 딱히 좋아서 쓰는 게 아님.
MitM 안 쓰고 Wireshark 같은 걸로도 이거 가능하지 않나.