🇰🇷 한글 설명
JavaScript로 구현된 TLS 라이브러리 node-forge에서 Ed25519 서명 검증 시 스칼라 S가 그룹 차수(L)로 감소되지 않은 비정규 위조 서명을 허용합니다. 동일한 메시지에 대해 서로 다른 바이트값의 서명이 모두 유효하게 통과되어 서명 중복 제거·재생 방지·정규화 검사 기반 보안 로직을 우회할 수 있습니다. 버전 1.4.0에서 수정되었습니다.
💡 쉬운 설명
디지털 서명은 문서가 변조되지 않았음을 증명하는 도장과 같습니다. 이 취약점은 위조된 가짜 도장도 진짜처럼 통과시켜 버려, 공격자가 같은 서명의 변형본으로 인증을 우회할 수 있습니다.
🇺🇸 원문 (English)
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Prior to version 1.4.0, Ed25519 signature verification accepts forged non-canonical signatures where the scalar S is not reduced modulo the group order (`S >= L`). A valid signature and its `S + L` variant both verify in forge, while Node.js `crypto.verify` (OpenSSL-backed) rejects the `S + L` variant, as defined by the specification. This class of signature malleability has been exploited in practice to bypass authentication and authorization logic (see CVE-2026-25793, CVE-2022-35961). Applications relying on signature uniqueness (i.e., dedup by signature bytes, replay tracking, signed-object canonicalization checks) may be bypassed. Version 1.4.0 patches the issue.
📍 영향받는 시스템
node-forge(forge) 버전 1.4.0 미만, Ed25519 서명 검증을 사용하는 Node.js 애플리케이션
⚔️ 공격 벡터
공격자가 유효한 Ed25519 서명의 S 값에 그룹 차수 L을 더한 변형 서명을 생성하여 서명 유일성 기반 인증·재생방지 로직 우회
🛡️ 대응 방법
node-forge를 버전 1.4.0 이상으로 업그레이드: npm update node-forge 또는 npm install [email protected]
🔧 검증 코드
출력된 버전이 1.4.0 이상이면 패치 완료, 1.3.x 이하이면 취약하므로 즉시 업그레이드 필요
npm list node-forge 2>/dev/null | grep node-forge || echo 'node-forge not found'