🔍 CVE-2026-119186

5.9
CVSS Score
MEDIUM
2026-10-29
2026-10-30 17:18
✅ 완료

🇰🇷 한글 설명

Forge(node-forge)는 JavaScript로 구현된 TLS 라이브러리입니다. 1.4.1 이전 버전에서는 forge.cipher.createDecipher()를 통한 AES-GCM 복호화 시 start()에 전달되는 tagLength 옵션을 검증하지 않습니다. tagLength가 0으로 변환되고 인증 태그가 비어 있거나 없으면 인증 태그 비교가 빈 값끼리 이루어져, decipher.finish()가 인증되지 않은 암호문을 수용할 수 있습니다. 기본값(128비트)을 사용하거나 고정된 유효 길이를 지정한 애플리케이션은 영향을 받지 않습니다.

💡 쉬운 설명

암호문의 무결성을 검사하는 기능이 특정 조건에서 우회될 수 있는 문제입니다. 공격자가 변조된 데이터를 정상 데이터처럼 받아들이게 만들 수 있습니다.

🇺🇸 원문 (English)

Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, node-forge did not validate the AES-GCM tagLength option passed to start() during decryption through forge.cipher.createDecipher(). When an application derived tagLength from received data or used an unset or zero-like configuration value, a value that converted to zero together with an empty or missing authentication tag caused the calculated and supplied tags to compare as empty, so decipher.finish() accepted unauthenticated ciphertext. Applications that omit tagLength to use the 128-bit default or pass a fixed valid tag length are unaffected. This issue is fixed in version 1.4.1.

📍 영향받는 시스템

node-forge 1.4.1 미만 버전을 사용하는 Node.js 애플리케이션 (tagLength를 외부 입력에서 파생하거나 0에 가까운 값으로 설정하는 경우)

⚔️ 공격 벡터

공격자가 tagLength를 0으로 변환되는 값과 빈 인증 태그를 포함한 조작된 데이터를 전송하여 무결성 검증 없이 복호화를 유도

🛡️ 대응 방법

node-forge를 1.4.1 이상으로 업그레이드하고, tagLength를 외부 입력에서 받지 말고 기본값 또는 고정된 유효 값(예: 128)을 사용

🔧 검증 코드

출력된 node-forge 버전이 1.4.1 미만이면 취약하며, 1.4.1 이상이면 패치가 적용된 것입니다. 출력이 없으면 설치되지 않은 상태입니다.

Shell / Script
npm ls node-forge 2>/dev/null | grep -E 'node-forge@'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N

💻 영향받는 소프트웨어

Oracle Java SE