🇰🇷 한글 설명
Forge(node-forge)는 JavaScript로 구현된 TLS 라이브러리입니다. 1.4.0 이전 버전에서는 공개 지수 e=3인 RSA 키의 RSASSA PKCS#1 v1.5 서명 검증이 ASN 구조 내부에 임의의 바이트를 삽입한 위조 서명을 통과시킬 수 있으며, 패딩 최소 8바이트 검증도 누락되어 Bleichenbacher 방식의 서명 위조가 가능합니다.
💡 쉬운 설명
디지털 서명을 검증하는 소프트웨어가 가짜 서명을 진짜로 잘못 인식할 수 있는 취약점입니다. 공격자는 이를 이용해 신뢰할 수 없는 데이터나 인증서를 정상인 것처럼 속일 수 있습니다.
🇺🇸 원문 (English)
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Prior to version 1.4.0, RSASSA PKCS#1 v1.5 signature verification accepts forged signatures for low public exponent keys (e=3). Attackers can forge signatures by stuffing “garbage” bytes within the ASN structure in order to construct a signature that passes verification, enabling Bleichenbacher style forgery. This issue is similar to CVE-2022-24771, but adds bytes in an addition field within the ASN structure, rather than outside of it. Additionally, forge does not validate that signatures include a minimum of 8 bytes of padding as defined by the specification, providing attackers additional space to construct Bleichenbacher forgeries. Version 1.4.0 patches the issue.
📍 영향받는 시스템
node-forge 1.4.0 미만을 사용하는 Node.js 및 JavaScript 애플리케이션
⚔️ 공격 벡터
e=3 RSA 키 환경에서 ASN 구조에 garbage 바이트를 채워 넣어 Bleichenbacher 방식으로 검증을 통과하는 위조 서명 생성
🛡️ 대응 방법
node-forge를 1.4.0 이상으로 업그레이드 (npm update node-forge 또는 package.json 수정 후 재설치)
🔧 검증 코드
출력된 버전이 1.4.0 미만이면 취약하므로 업그레이드가 필요하고, 1.4.0 이상이거나 결과가 없으면 해당 패키지가 없거나 안전한 버전입니다.
npm ls node-forge 2>/dev/null | grep node-forge