티스토리 뷰

📌 3줄 요약

1. 공격자의 표적이 서비스 서버에서 개발자 PC로 옮겨왔습니다. VS Code 계열 확장, npm·PyPI 패키지, AI 코딩 도구가 새로운 침입 경로입니다.

2. 2025~2026년 Amazon Q 확장 변조, Nx 패키지 감염(s1ngularity), GlassWorm 확장 웜이 이어졌고, 2026년 5월에는 정상 확장(Nx Console)의 악성 버전이 단 18분 배포되고도 미국 CISA KEV 목록에 올랐습니다.

3. 개인 개발자는 확장 정리 → 업데이트 조절 → AI 권한 제한 → 설치 점검 → 토큰 관리 5단계로 대부분의 위험을 줄일 수 있습니다.

지금 VS Code나 Cursor의 확장 탭을 열면 몇 개가 설치돼 있나요? 그중 직접 고른 것, 이름만 보고 설치한 것, 언제 깔았는지 기억나지 않는 것은 각각 몇 개인가요?

확장은 밤사이 조용히 업데이트되고, AI 코딩 도구는 터미널과 파일에 손을 댈 수 있습니다. 이 글은 개인 개발자 기준으로, 내 개발 환경이 공급망 공격의 입구가 되지 않도록 점검하는 방법을 정리합니다.


🧭 왜 개발자 PC가 표적이 됐나

개발자 PC에는 소스 코드뿐 아니라 GitHub·npm 토큰, 클라우드 자격 증명, SSH 키, AI 도구의 API 키가 모여 있습니다. 공격자 입장에서는 서버 하나를 뚫는 것보다 개발자 한 명을 뚫는 편이 훨씬 넓은 곳으로 이어집니다. 훔친 토큰으로 그 개발자가 관리하는 확장이나 패키지에 악성 버전을 올리면, 다음 피해자가 자동으로 생기기 때문입니다.

특히 VS Code 공식 문서에 따르면 확장은 편집기 자체와 같은 권한으로 실행되고, 기본 설정에서는 자동으로 업데이트됩니다. Cursor, Windsurf, VSCodium 같은 VS Code 계열 편집기는 Microsoft 마켓플레이스 대신 Open VSX 레지스트리를 주로 쓰기 때문에, Open VSX에 올라온 악성 확장 하나가 여러 편집기에 동시에 영향을 줄 수 있습니다.

침입 경로 어떻게 들어오나
사칭 확장 인기 확장과 비슷한 이름·아이콘으로 올린 뒤, 설치되면 악성 코드를 내려받습니다.
계정 탈취 정상 확장 개발자의 배포 권한을 빼앗아, 이미 많이 설치된 확장에 악성 업데이트를 올립니다.
의존 확장 겉으로는 멀쩡한 확장이 "함께 설치할 확장" 항목으로 악성 확장을 끌어옵니다.
패키지 npm·PyPI 패키지의 설치 스크립트가 실행되는 순간 비밀값을 수집합니다.
AI 도구 조종 숨김 설정 파일이나 프롬프트 인젝션으로 AI 코딩 도구가 스크립트를 실행하게 만듭니다.

🔐 실제로 어떤 일이 있었나

시기 사건 핵심
2025.07 Amazon Q Developer 확장 1.84.0 외부인이 저장소에 넣은 "로컬 파일과 클라우드 자원을 삭제하라"는 프롬프트가 정식 버전에 포함돼 배포됐습니다. Amazon은 형식 오류로 실행되지 않는 코드였다고 밝혔고 1.85.0으로 교체했습니다.
2025.08 Nx npm 패키지 (s1ngularity) 악성 버전의 설치 스크립트가 토큰·SSH 키·.env 파일을 찾았는데, 이때 PC에 설치된 Claude, Gemini, q 같은 AI CLI를 승인 생략 옵션으로 실행해 탐색을 시켰습니다. 훔친 정보는 피해자 GitHub 계정에 새로 만든 공개 저장소로 올라갔습니다.
2025.10~ GlassWorm 처음 확인된 자가 전파형 VS Code 확장 웜입니다. Open VSX를 중심으로 2026년 3월까지 약 433개 구성 요소로 번졌고, 4월에는 Google Antigravity 등 AI 편집기 관련 확장을 사칭한 것을 포함해 73개가 추가로 발견됐습니다.
2026.05 Nx Console 18.95.0 정상 확장의 악성 버전이 VS Code 마켓플레이스에 약 18분, Open VSX에 약 36분 올라와 있었습니다. 그 사이 설치·업데이트한 PC에서 자격 증명 수집 코드가 실행됐고, CVE-2026-48027로 KEV에 등재됐습니다.
2026.09 GTIG AI 위협 보고서 Google 위협 인텔리전스 그룹은 TeamPCP(UNC6780)가 PyPI·npm·Docker Hub를 침해하고, 숨김 작업 공간 파일과 프롬프트 인젝션으로 AI 코딩 도구를 조종했다고 보고했습니다.

2026년 5월 26일에는 CrowdStrike가 Google, Shadowserver Foundation과 함께 GlassWorm 봇넷의 명령 채널 4개를 동시에 차단했습니다. 다만 차단은 이미 감염된 PC를 치료해 주지 않습니다. 감염 기간에 빠져나간 토큰은 여전히 공격자 손에 있을 수 있습니다.

🔐 보안 포인트

GTIG 보고서에 따르면 정보 탈취 악성코드가 Cline, Continue 같은 AI 코딩 도구의 설정 파일까지 노렸습니다. 이 파일들에는 API 키가 평문으로 저장될 수 있습니다. AI 도구의 키도 이제 GitHub 토큰만큼 중요한 탈취 대상입니다.


⚠️ 개발자가 자주 하는 착각 3가지

"유명하고 검증된 확장만 쓰니까 괜찮다"

Nx Console은 사칭 확장이 아니라 실제로 널리 쓰이던 정상 확장이었습니다. Amazon Q 확장도 대형 회사의 공식 확장이었습니다. 공급망 공격은 "믿을 만한 것"을 통로로 삼기 때문에, 유명세는 안전의 보증이 아니라 오히려 표적이 되는 이유가 됩니다.

"자동 업데이트가 가장 안전하다"

보안 패치를 빨리 받는다는 점에서는 맞지만, 악성 업데이트도 똑같이 빨리 받습니다. Nx Console 악성 버전은 18분 만에 내려졌지만, 자동 업데이트가 켜진 PC는 그 사이에 이미 설치를 마쳤을 수 있습니다.

"AI 코딩 도구는 나를 도와주는 쪽이다"

s1ngularity 공격에서 악성코드는 직접 파일을 뒤지는 대신, 내 PC에 설치된 AI CLI에게 비밀값을 찾아 정리하라고 시켰습니다. 사용자가 편의를 위해 쓰던 승인 생략 옵션이 그대로 공격자의 도구가 된 셈입니다. AI 도구에 준 권한은 그 도구를 조종하는 사람에게도 열립니다.


🛠 개발 환경 보안 점검 5단계

1단계. 모든 편집기의 확장 정리

VS Code만 보지 말고 Cursor, Windsurf 등 설치된 VS Code 계열 편집기를 전부 확인합니다. GlassWorm은 한 편집기에 들어오면 PC에 있는 다른 편집기에도 악성 확장을 설치했습니다. 아래 명령으로 설치된 확장과 버전을 한 번에 볼 수 있습니다.

# VS Code
code --list-extensions --show-versions

# Cursor 등 다른 편집기도 CLI가 있으면 같은 옵션을 지원하는지 확인
cursor --list-extensions --show-versions

안 쓰는 확장은 지우고, 남길 확장은 퍼블리셔 이름·인증 표시·설치 수·저장소 링크를 확인합니다. 인기 확장과 이름이 한두 글자 다르거나 퍼블리셔가 낯선 확장은 특히 의심하세요. VS Code 1.97부터는 새 퍼블리셔의 확장을 처음 설치할 때 퍼블리셔를 신뢰하는지 묻는 창이 뜹니다. 이 창을 습관처럼 넘기지 마세요.

2단계. 자동 업데이트 조절

확장 자동 업데이트를 끄고, 업데이트는 직접 변경 내역을 확인한 뒤 적용합니다. 새 버전이 나오자마자 받기보다 며칠 지켜본 뒤 받으면, 짧게 노출됐다가 내려지는 악성 버전은 대부분 피할 수 있습니다.

// settings.json
"extensions.autoUpdate": false

⚠️ 주의

자동 업데이트를 끄면 보안 패치도 늦어집니다. 주 1회 정도 날짜를 정해 업데이트 내역을 확인하는 습관을 함께 들이세요.

3단계. AI 코딩 도구 권한 제한

명령 실행 승인을 건너뛰는 옵션(모든 도구를 신뢰하거나 권한 확인을 생략하는 플래그)은 평소에 켜두지 마세요. 처음 받은 저장소는 VS Code의 제한 모드(Workspace Trust)로 열고, 저장소 안에 있는 AI 에이전트용 설정·지침 파일과 숨김 파일을 먼저 확인한 뒤 에이전트를 실행합니다.

4단계. 패키지 설치 점검

lockfile을 커밋하고, 설치는 lockfile 기준으로 합니다. 새 패키지는 AI가 추천했더라도 실제로 존재하는 정상 패키지인지, 최근 갑자기 버전이 올라오지 않았는지 확인합니다. 설치 스크립트를 실행하지 않는 옵션도 있지만, 일부 패키지는 정상 동작에 설치 스크립트가 필요하니 상황에 맞게 씁니다.

# lockfile 그대로 설치
npm ci

# 설치 스크립트 없이 설치 (필요한 경우에만)
npm install --ignore-scripts

5단계. 토큰 관리와 사고 대응

GitHub 토큰은 필요한 저장소와 권한만 가진 세분화 토큰으로 만들고 만료 기간을 짧게 잡습니다. AI 도구 설정 파일에 키가 평문으로 들어 있지 않은지도 확인하세요.

이미 감염이 의심되면 확장·패키지를 지우는 것으로 끝내지 말고, 그 PC에 있던 모든 토큰과 키를 폐기하고 재발급합니다. GitHub 계정에 내가 만들지 않은 저장소가 생겼는지(s1ngularity 사례), 비공개 저장소가 공개로 바뀌지 않았는지도 확인합니다. 네트워크 로그에서 CrowdStrike가 GlassWorm 감염 PC를 유도해 둔 싱크홀 주소(164.92.88[.]210)로의 접속이 보이면 감염 신호입니다.

# 내 계정의 저장소 목록 확인 (GitHub CLI)
gh repo list --limit 100

💡 팁

회사 업무용 PC라면 위 5단계에 더해 아래 항목을 보안 담당자와 함께 정해두면 좋습니다.

항목 내용
허용 목록 VS Code 1.96부터 지원하는 extensions.allowed 설정과 AllowedExtensions 정책으로 허용된 확장만 설치되게 합니다.
지연 배포 새 확장 버전은 일정 기간이 지난 뒤에만 설치되도록 내부 미러나 정책으로 관리합니다.
단말 탐지 개발자 PC에서 편집기·패키지 관리자가 낯선 외부 주소로 연결하거나 자격 증명 파일을 읽는 행위를 모니터링합니다.
CI 토큰 CI/CD에는 장기 토큰 대신 짧게 유효한 토큰을 쓰고, 배포 권한을 최소화합니다.

🎉 정리

이제 공급망 공격은 서버가 아니라 개발자가 매일 여는 편집기와 터미널에서 시작됩니다. 유명한 확장도, 공식 확장도, 나를 돕는 AI 도구도 통로가 될 수 있습니다. 개인 개발자가 지킬 핵심은 적게 설치하고, 천천히 업데이트하고, AI에게 권한을 덜 주고, 토큰은 짧게 쓰고, 의심되면 전부 바꾸는 것입니다.

✅ 내 개발 환경 점검 체크리스트

점검 확인할 내용
확장 목록 설치된 모든 VS Code 계열 편집기의 확장 목록을 확인하고 안 쓰는 확장을 지웠다
퍼블리셔 남긴 확장의 퍼블리셔와 이름이 정상 확장과 일치한다
업데이트 확장 자동 업데이트를 끄고 정기적으로 직접 업데이트한다
AI 권한 AI 코딩 도구의 승인 생략 옵션을 평소에 쓰지 않는다
새 저장소 처음 받은 저장소는 제한 모드로 열고 숨김 설정 파일을 먼저 본다
패키지 lockfile 기준으로 설치하고 새 패키지는 실제 존재와 이력을 확인한다
토큰 토큰은 최소 권한·짧은 만료로 만들고 AI 도구 설정에 평문 키가 없다
사고 대응 감염이 의심되면 모든 토큰과 키를 폐기·재발급하는 순서를 알고 있다

💬 자주 묻는 질문

Q. Cursor만 쓰는데 VS Code 확장 이야기가 해당되나요?
A. 해당됩니다. Cursor, Windsurf 같은 VS Code 계열 편집기는 같은 확장 형식을 쓰고 주로 Open VSX에서 확장을 받습니다. GlassWorm과 Nx Console 사례 모두 Open VSX가 경로에 포함돼 있었습니다.

Q. 악성 확장을 지우면 끝인가요?
A. 아닙니다. 확장이 실행되는 동안 토큰과 키가 이미 빠져나갔을 수 있습니다. 확장을 지운 뒤 그 PC에 있던 자격 증명을 모두 폐기하고 재발급해야 합니다.

Q. AI 코딩 도구를 쓰지 말아야 하나요?
A. 쓰지 말라는 뜻은 아닙니다. 위험한 것은 승인 없이 명령을 실행하게 두는 설정과, 확인하지 않은 저장소에서 에이전트를 바로 돌리는 습관입니다. 승인 절차를 유지하면 위험을 크게 줄일 수 있습니다.

Q. 자동 업데이트를 끄면 오히려 위험하지 않나요?
A. 보안 패치가 늦어질 수 있습니다. 그래서 끄는 대신 주 1회처럼 정기적으로 변경 내역을 보고 업데이트하는 방식을 권합니다. 긴급 보안 공지가 나온 확장은 바로 업데이트하세요.


🔗 참고 자료

· NVD — CVE-2026-48027 (Nx Console 18.95.0 악성 버전, CISA KEV)

· The Register — CrowdStrike, Google shatter Glassworm botnet (2026.05)

· Cloud Security Alliance — GlassWorm Returns: Developer Toolchain Worm Expands

· Cloud Security Alliance — GlassWorm v2: 73 Sleeper Extensions Target AI Developer Toolchains

· StepSecurity — s1ngularity: Nx Build System Package Compromised

· BleepingComputer — AI-powered malware hit 2,180 GitHub accounts in s1ngularity attack

· TechRepublic — Amazon Q data-wiping prompt security hack

· Infosecurity Magazine — AI Coding Tools Now a Prime Target for Threat Actors (GTIG)

· Visual Studio Code 공식 문서 — Extension runtime security

· Visual Studio Code 공식 문서 — Manage extensions in enterprise environments