🔍 CVE-2026-54156

7.5
CVSS Score
HIGH
2026-09-14
2026-09-30 19:38
✅ 완료

🇰🇷 한글 설명

node-opcua의 특정 버전에서 nonce 값을 저장하는 g_alreadyUsedNonce 캐시에 만료 시간이나 크기 제한이 없는 취약점이 발견되었습니다. 인증되지 않은 원격 공격자가 고유한 nonce를 사용하여 세션을 반복적으로 생성하면 메모리 사용량이 무한히 증가하여 서버 프로세스가 충돌할 수 있습니다.

💡 쉬운 설명

서버가 사용된 번호들을 저장할 때 용량 제한을 두지 않아 발생하는 문제입니다. 공격자가 가짜 번호를 계속 보내면 서버의 메모리가 가득 차서 서버가 멈춰버릴 수 있습니다.

🇺🇸 원문 (English)

node-opcua is an OPC UA implementation for TypeScript and Node.js. Prior to 2.166.0, the process-global g_alreadyUsedNonce cache used by nonceAlreadyBeenUsed in packages/node-opcua-secure-channel/source/server/server_secure_channel_layer.ts records nonces from OpenSecureChannelRequest and CreateSession without expiration or a size limit. An unauthenticated remote attacker can repeatedly create sessions with unique nonces, causing entries to persist after session expiry and accumulate across connection cycles even when maxSessions=10 limits concurrent sessions. The resulting unbounded heap growth can exhaust the default Node.js heap and crash the node-opcua server process. This issue is fixed in version 2.166.0.

📍 영향받는 시스템

node-opcua version < 2.166.0

⚔️ 공격 벡터

인증되지 않은 원격 공격자가 고유한 nonce를 포함한 OpenSecureChannelRequest를 반복적으로 전송

🛡️ 대응 방법

node-opcua를 2.166.0 이상의 버전으로 업데이트

🔧 검증 코드

출력된 node-opcua의 버전이 2.166.0 미만인지 확인

Shell / Script
npm list node-opcua | grep node-opcua

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js