1. IDE Extensions

[MITRE 설명]
Adversaries may abuse an integrated development environment (IDE) extension to establish persistent access to victim systems. IDEs such as Visual Studio Code, IntelliJ IDEA, and Eclipse support extensions - software components that add features like code linting, auto-completion, task automation, or integration with tools like Git and Docker. A malicious extension can be installed through an extension marketplace (i.e., Compromise Software Dependencies and Development Tools) or side-loaded directly into the IDE.

- MITRE가 25.04 ATT@CK v17에 신규로 추가한 기법 (Persistence > Software Extensions > IDE Extensions) [1]

- 악성 플러그인이 개발 환경에 영구적 접근 권한을 제공할 수 있다고 경고

> Visual Studio Code, IntelliJ IDEA, Eclipse와 같은 IDE는 확장 프로그램(코드 린팅, 작업 자동화, 타 도구와의 통합 등)을 지원

> 악성 확장 프로그램은 확장 프로그램 마켓플레이스를 통해 설치되거나 IDE에 직접 사이드로딩될 수 있음

> IDE가 실행될 때마다 악성 확장 프로그램이 실행되어 임의 코드 실행, 백도어 설정, 암화화폐 채굴, 데이터 유출 등에 사용

탐지 네트워크 트래픽 모니터링 - 통신이 발생해서는 안되는 서버 또는 네트워크에서 IDE로 향하는 네트워크 트래픽 모니터링
프로세스 생성 모니터링 - 서버 또는 비개발 엔드포인트에서의 IDE 실행을 모니터링
대응 심사 - 많은 악성 확장 프로그램이 정상을 위장하므로, 설치된 확장 프로그램 검토
실행 방지 - 보안 정책에 맞는 IDE 확장 허용 또는 거부 목록 설정
소프트웨어 설치 제한 - 검증이 가능한 신뢰할 수 있는 출처의 IDE 확장 프로그램만 설치
소프트웨어 업데이트 - OS와 IDE가 최신 버전을 사용하고 있는지 확인
사용자 교육 - IDE 확장 프로그램 사용 최소 및 신뢰할 수 있는 확장 프로그램만 설치하도록 교육

2. 주요내용

- 오픈소스 기반 VS 코드 확장 프로그램 마켓플레이스 "Open VSX Registry"에서 치명적 취약점 발견 [2][3]

> 공격자가 전체 확장 마켓플레이스를 완전히 제어할 수 있게 하며, 이를 통해 개발자 시스템 장악 가능

> 해당 취약점은 자동 게시용 깃허브 저장소 ‘publish-extensions’의 CI(지속적 통합) 워크플로에서 확인

 

- Open VSX에 확장을 게시하는 두 가지 방법

① 직접 Open VSX에 업로드

② extensions.json 파일에 확장을 추가하는 풀 리퀘스트를 생성하여 자동 게시 요청

 

- Open VSX의 자동 게시 방식 [4]

① 사용자는 open-vsx/publish-extensions의 extensions.json 파일에 풀 리퀘스트를 제출 [5]

② publish-extensions 저장소는 매일 밤 자동 실행되는 GitHub Actions 워크플로 존재

> extensions.json 파일에서 확장 프로그램 목록을 가져와 새 버전이 있는 경우 자동으로 확장 프로그램 업데이트

> 모든 확장 프로그램을 게시 또는 덮어쓰기할 수 있는 권한을 가진 @open-vsx 서비스 계정의 비밀 토큰(OVSX_PAT)을 포함한 권한 있는 자격 증명과 함께 실행

[사진 1] 자동 게시

- 해당 워크플로가 실행되어 확장 프로그램을 게시할 때 OVSX_PAT 토큰을 외부에 노출

> 공격자는 악성 확장을 extensions.json에 추가하여 OVSX_PAT 토큰 탈취 가능

구분 설명
악성 저장소 생성 - OVSX_PAT 토큰을 탈취하는 스크립트가 저장되어 있는 저장소 생성
자동 게시 요청 - open-vsx/publish-extensions (Open VSX의 중앙 저장소)의 extensions.json 파일에 풀 리퀘스트 전송
자동 게시 워크플로우 실행 - Open VSX는 extensions.json에 등록된 내용을 기준으로 워크플로우 실행
> 확장 프로그램의 새 버전이 존재하면 자동으로 업데이트
> @open-vsx 서비스 계정의 비밀 토큰(OVSX_PAT)을 포함한 권한 있는 자격 증명과 함께 실행
토큰 탈취 및 권한 획득 - 공격자의 스크립트가 실행되면서 OVSX_PAT 토큰 탈취
마켓플레이스 장악 - 탈취한 OVSX_PAT 토큰을 이용해 임의 덮어쓰기, 새 악성 버전 추가 등 악성 행위 수행

 

- 대응방안

구분 설명
위험 평가 - 모든 확장 및 마켓플레이스를 잠재적인 공격 표면으로 취급
> 출처, 유지보수 여부, 필요 권한, 역할 등을 평가
정책 적용 - 허용 목록을 정의
가시성 확보 - 모니터링 : 확장 기능과 업데이트에 대한 가시성 확보
- 유지관리 : 설치된 확장, 확장이 설치된 IDE, 사용자 등에 대한 가시성 확보

3. 참고

[1] https://attack.mitre.org/techniques/T1176/002/
[2] https://open-vsx.org/
[3] https://blog.koi.security/marketplace-takeover-how-we-couldve-taken-over-every-developer-using-a-vscode-fork-f0f8cf104d44
[4] https://github.com/EclipseFdn/open-vsx.org/wiki/Auto-Publishing-Extensions#request-an-extension-be-auto-published
[5] https://github.com/EclipseFdn/publish-extensions/blob/master/extensions.json
[6] https://www.dailysecu.com/news/articleView.html?idxno=167406

+ Recent posts