protobuf.js 라이브러리의 치명적인 RCE 취약점

널리 사용되는 Protocol Buffers 라이브러리의 치명적 결함
npm에서 주간 약 5천만 다운로드를 기록하는 Google의 Protocol Buffers JavaScript 구현체인 protobuf.js에서 발견된 치명적인 원격 코드 실행 취약점에 대한 개념 증명(Proof-of-concept) 익스플로잇 코드가 공개되었습니다.
취약점의 기술적 세부사항
이 취약점(GHSA-xq3m-2v4x-88gg로 추적됨)은 안전하지 않은 동적 코드 생성으로 인해 발생합니다. 이 라이브러리는 문자열을 연결하고 Function() 생성자를 통해 실행하여 protobuf 스키마에서 JavaScript 함수를 생성하지만, 메시지 이름과 같은 스키마에서 파생된 식별자를 검증하지 못합니다.
이로 인해 공격자가 생성된 함수에 임의의 코드를 주입하는 악성 스키마를 제공할 수 있으며, 이는 애플리케이션이 해당 스키마를 사용하여 메시지를 처리할 때 실행됩니다.
영향 및 영향받는 버전
- protobuf.js 버전 8.0.0/7.5.4 및 이하 버전에 영향
- 공격자가 영향을 미치는 스키마를 로드하는 서버나 애플리케이션에서 RCE(원격 코드 실행) 가능
- 환경 변수, 자격 증명, 데이터베이스 및 내부 시스템에 대한 접근 권한 부여 가능
- 인프라 내에서 측면 이동(lateral movement) 가능
- 신뢰할 수 없는 스키마를 로컬에서 로드하는 개발자 머신에도 영향을 미칠 수 있음
패치 및 권장사항
패치된 버전으로 업그레이드하세요:
- 8.x 브랜치의 경우 8.0.1 (4월 4일 npm에 릴리스됨)
- 7.x 브랜치의 경우 7.5.5 (4월 15일 npm에 릴리스됨)
패치는 영숫자가 아닌 문자를 제거하여 타입 이름을 정제하여 공격자가 합성 함수를 닫는 것을 방지합니다. Endor Labs는 장기적인 해결책은 공격자가 접근 가능한 식별자를 Function을 통해 완전히 왕복하지 않도록 하는 것이라고 지적합니다.
Endor Labs의 추가 권장사항:
- 전이적 종속성(transitive dependencies) 감사
- 스키마 로딩을 신뢰할 수 없는 입력으로 취급
- 프로덕션 환경에서는 사전 컴파일/정적 스키마 선호
타임라인 및 상태
- 취약점은 Endor Labs 연구원 Cristian Staicu가 3월 2일에 보고
- 패치는 3월 11일에 GitHub에 릴리스
- npm 패키지는 4월에 업데이트
- 현재까지 활성적인 악용 관찰되지 않음
- 익스플로잇은 최소한의 PoC로 "간단하다"고 설명됨
📖 전체 원문 읽기: HN AI Agents
👀 See Also

로컬 에이전트 API 키 보안을 위한 프록시 계층 격리
한 개발자가 로컬 에이전트 설정(Claude Code / Cursor 스타일 워크플로우)을 실험하며 대부분의 스택이 환경 변수나 <code>.env</code> 파일을 통해 API 키를 노출하여, 어떤 도구, 플러그인 또는 프롬프트 주입 코드라도 자격 증명을 읽을 수 있는 보안 위험을 초래한다는 점을 발견했습니다.

프로 시 원고가 법원 제출 서류에 AI 프롬프트 인젝션을 숨기다
코네티컷의 한 자격 없는 당사자가 법원 서류에 흰색 3포인트 글꼴로 프롬프트 인젝션을 숨겨, 이를 읽는 AI가 자신의 편을 들도록 지시했다. 법원은 이를 적발하고 제재를 가했다.

SupraWall MCP 플러그인, 로컬 AI 에이전트의 프롬프트 인젝션 공격 차단
SupraWall은 AI 에이전트의 민감한 데이터 유출 시도를 차단하는 MCP 플러그인으로, 프롬프트 인젝션 공격을 통한 자격 증명 유출을 방지한 레드팀 챌린지에서 입증되었습니다.

클로드 코드에서 프롬프트 인젝션을 0으로 낮춘 다층 방어 체계
Anthropic의 Boris Cherny는 훈련, 의도 분류기, 입력 탐지와 같은 다층 방어가 보지 못한 공격에 대한 프롬프트 인젝션을 0%로 줄인다고 말합니다. 분류기는 이제 무료입니다.