피드로 돌아가기
GeekNewsSecurity
원문 읽기
VSCode 버그를 통한 1-클릭 GitHub 토큰 탈취
Webview Keydown 이벤트 전파 결함 기반 GitHub OAuth 토큰 탈취
AI 요약
Context
github.dev는 브라우저 기반 VSCode 환경을 제공하며 github.com으로부터 광범위한 권한을 가진 OAuth 토큰을 전달받는 구조임. Webview 격리를 위해 iframe을 사용하지만 UX 편의를 위해 특정 키보드 이벤트를 메인 창으로 전달하는 설계적 허점이 존재함.
Technical Solution
- Webview 내 JavaScript 실행을 통한 did-keydown 메시지의 메인 창 전송 및 사용자 입력 위장
- HTML input 기반의 문자열 입력 제한을 회피하기 위한 기본 단축키(Ctrl+Shift+A)와 알림 수락 로직 조합
- .vscode/extensions.json 설정을 통한 추천 확장 설치 알림 유도 및 자동 수락 트리거
- Local Workspace Extension의 package.json에 커스텀 키바인딩을 정의하여 CSP 제약을 우회한 workbench.extensions.installExtension 호출
- skipPublisherTrust 컨텍스트 활용을 통한 게시자 신뢰 대화상자 무력화 및 악성 확장 설치
- 설치된 확장을 통한 GitHub API 호출 및 비공개 저장소 목록과 OAuth 토큰 외부 유출
실천 포인트
- Webview 및 iframe 간 메시지 통신 시 신뢰할 수 없는 출처의 입력 이벤트 전파 여부 검토 - 고권한 인증 토큰의 브라우저 내 보관 및 공유 범위 최소화 설정 확인 - CSP(Content Security Policy) 설정이 스크립트 실행뿐만 아니라 설정 파일(package.json 등)을 통한 간접 실행 경로까지 차단하는지 분석 - UI 자동화 가능성이 있는 단축키 바인딩의 권한 수준 및 실행 컨텍스트 검증