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

AI 운영 매장을 위한 AI 자동화 일일 보안 감사
AI 운영 매장은 인간의 스케줄링이나 cron 작업 없이 매일 자율적으로 보안 감사를 실행합니다. AI 에이전트는 SSRF 취약점, 인젝션 위험 및 인증 격차를 확인한 후 수석 개발자 검토를 위한 보고서를 생성합니다.

사이버 보안 질문에 대한 검열되지 않은 Qwen 3.5 35B 모델 테스트
사이버보안 전문가가 해킹 및 보안 우회 질문에 대해 세 가지 검열되지 않은 Qwen 3.5 35B 모델을 테스트한 결과, 원본 검열 모델과 비교해 응답 품질에서 상당한 차이를 발견했습니다. 검열되지 않은 모델들은 원본 모델이 거부하거나 불완전한 응답을 준 경우에도 일관되게 답변을 제공했습니다.

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

악성 PyTorch Lightning 패키지, 자격 증명 탈취 및 npm 패키지 웜 공격
PyPI 패키지 'lightning' 버전 2.6.2 및 2.6.3에 Shai-Hulud 테마의 악성코드가 포함되어 자격 증명, 토큰, 클라우드 비밀을 탈취하고, 주입된 JavaScript 페이로드를 통해 npm 패키지로 확산됩니다.