VS Code 신뢰 설정, 악성 코드 실행의 위험성을 파헤치다!
VS Code의 '저자 신뢰' 기능이 악성 코드 자동 실행에 악용될 수 있음을 경고함
코딩 테스트 과정에서 .vscode/tasks.json 파일을 통해 악성 스크립트가 실행되는 사례를 분석
curl | sh와 같은 명령어를 사용하여 악성 코드를 다운로드하고 실행하는 공격 기법을 상세히 설명
GitHub 및 Vercel에 신고하여 해당 조직의 계정이 삭제되는 결과를 가져옴
VS Code 신뢰 설정의 취약점
VS Code는 폴더의 저자를 신뢰할 경우, .vscode/tasks.json 파일 내의 쉘 명령어를 자동 실행한다. 이는 개발 환경 설정의 편의성을 제공하지만, 악의적인 코드가 포함된 경우 심각한 보안 위협으로 이어진다. 특히, curl | sh와 같은 명령어를 통해 원격 스크립트를 다운로드하여 실행하는 방식은 공격자가 손쉽게 시스템 권한을 획득할 수 있는 경로가 된다. 개발 환경 설정의 안전성(Development Environment Security)을 위해 신뢰할 수 있는 소스에서 제공된 코드만 실행해야 한다.
악성 코드 분석 및 실행 과정
공격자는 .vscode/tasks.json 파일에 악성 코드를 삽입하여, 개발자가 해당 폴더를 신뢰하는 순간 악성 스크립트가 실행되도록 유도한다. 분석 결과, tokenlinux.sh 스크립트를 다운로드하고 실행하는 방식으로, 추가적인 악성 행위를 수행할 수 있다. 이 스크립트는 JWT(JSON Web Token)를 사용하여 권한을 획득하고, 시스템 정보를 탈취하거나 추가적인 악성 코드를 설치할 수 있다. 이러한 공격은 지속적인 위협(Persistent Threat)으로 작용할 수 있다.
GitHub 조직 신고 및 대응
저자는 해당 코딩 테스트를 제공한 GitHub 조직을 GitHub에 신고하여, 조직 계정이 삭제되는 결과를 이끌어냈다. 이는 보안 취약점을 발견하고, 적절한 조치를 취한 모범적인 사례이다. 또한, Vercel에도 해당 도메인을 신고하여 추가적인 피해를 방지하려 했다. 이러한 적극적인 대응은 보안 사고 대응(Incident Response)의 중요성을 보여준다.
보안 강화 및 예방 전략
본 사례는 개발 환경의 보안 설정을 강화해야 함을 시사한다. .vscode/tasks.json 파일의 내용을 꼼꼼히 검토하고, 신뢰할 수 없는 소스의 코드는 실행하지 않도록 주의해야 한다. 또한, 데이터 미저장 정책(Zero-Retention Policy)을 통해 민감한 정보를 보호하고, 정기적인 보안 감사를 수행하여 취약점을 사전에 발견하는 것이 중요하다. 개발자 보안 의식(Developer Security Awareness)을 높이는 교육 또한 필수적이다.