Protobuf 라이브러리의 치명적인 결함, JavaScript 코드 실행 가능

발행: (2026년 4월 19일 AM 12:09 GMT+9)
4 분 소요

Source: Bleeping Computer

protobuf image

개요

protobuf.js의 심각한 원격 코드 실행(RCE) 결함에 대한 개념 증명(Proof‑of‑concept) 익스플로잇 코드가 공개되었습니다. 이 라이브러리는 Google의 Protocol Buffers를 JavaScript로 구현한 것으로, npm 레지스트리에서 매우 인기가 높으며 주당 평균 5천만 건 이상의 다운로드를 기록하고 있습니다(npmjs.com/package/protobufjs). 서비스 간 통신, 실시간 애플리케이션, 데이터베이스 및 클라우드 환경에서 구조화된 데이터를 효율적으로 저장하는 데 사용됩니다.

취약점 세부 정보

보안 기업 Endor Labs는 이 RCE 취약점이 안전하지 않은 동적 코드 생성으로 인해 발생한다고 보고했습니다. 라이브러리는 protobuf 스키마를 문자열로 연결하고 Function() 생성자를 통해 JavaScript 함수를 생성하지만, 스키마에서 파생된 식별자(예: 메시지 이름)를 검증하지 않습니다. 공격자는 악의적인 스키마를 제공하여 생성된 함수에 임의의 코드를 삽입할 수 있으며, 해당 스키마를 사용해 메시지를 처리할 때 코드가 실행됩니다.

이 문제는 GHSA‑xq3m‑2v4x‑88gg 로 추적되고 있으며(아직 공식 CVE는 부여되지 않음)

영향

  • 공격자가 조작한 스키마를 로드하는 서버 또는 애플리케이션에서 원격 코드 실행이 가능함.
  • 환경 변수, 자격 증명, 데이터베이스 및 내부 시스템에 대한 접근 위험.
  • 인프라 내에서의 횡방향 이동 가능성.
  • 신뢰할 수 없는 스키마를 로컬에서 디코딩하는 개발자 머신에 대한 위협.

영향을 받는 버전 및 수정 사항

  • 영향을 받음: protobuf.js 버전 8.0.0, 7.5.4 및 그 이하.
  • 패치됨: 버전 8.0.17.5.5.

패치는 비알파벳 문자들을 제거해 타입 이름을 정제함으로써 공격자가 합성 함수를 닫는 것을 방지합니다. Endor Labs는 장기적인 해결책으로 Function()을 공격자가 제어할 수 있는 식별자에 사용하지 않는 방식을 제안했습니다.

완화 권고 사항

  • 업그레이드: 패치된 버전(8.0.1 / 7.5.5)으로 업데이트합니다.
  • 감사: 트랜스티브 종속성을 검토하여 취약한 버전이 포함되지 않았는지 확인합니다.
  • 스키마 로드를 신뢰할 수 없는 입력으로 취급하고, 프로덕션 환경에서는 사전 컴파일된 정적 스키마를 사용하는 것을 권장합니다.
  • 현재까지 야생에서의 활발한 악용 사례는 관찰되지 않았지만, 악용 징후를 지속적으로 모니터링합니다.

참고 자료

0 조회
Back to Blog

관련 글

더 보기 »