🔍 CVE-2026-116576

7.8
CVSS Score
HIGH
2026-10-26
2026-10-26 21:18
✅ 완료

🇰🇷 한글 설명

systeminformation 라이브러리의 5.33.16 이전 버전에서 services() 함수가 Windows 환경에서 사용자 입력을 PowerShell Get-CimInstance 필터에 삽입할 때, 유니코드 따옴표를 제대로 차단하지 못해 임의의 PowerShell 명령이 실행될 수 있습니다. 공격자는 이를 통해 Node.js 프로세스 권한으로 파일을 읽거나 수정하고 서비스를 방해할 수 있습니다. 원격 노출 여부는 이 라이브러리를 사용하는 애플리케이션이 공격자 입력을 services() 또는 getDynamicData()로 전달하는지에 달려 있습니다.

💡 쉬운 설명

Windows에서 이 라이브러리를 쓰는 프로그램에 특수한 문자를 넣으면, 공격자가 컴퓨터에서 명령을 몰래 실행할 수 있습니다. 외부 입력을 그대로 이 기능에 넘기는 프로그램이라면 특히 위험합니다.

🇺🇸 원문 (English)

systeminformation is a System and OS information library for node.js. Prior to 5.33.16, services() in lib/processes.js inserts a caller-supplied service name into a PowerShell Get-CimInstance filter after processing it with sanitizeShellString() in lib/util.js. On Windows, the sanitizer removes ASCII quotes but permits Unicode quotation marks that PowerShell accepts as string delimiters, allowing crafted input to terminate the filter and place a PowerShell expression in the command executed by util.powerShell(). The expression runs with the Node.js process account's permissions and may read or change accessible files, alter application data, or disrupt the service. The package does not expose a network service itself, so remote reachability depends on a consuming application forwarding attacker-controlled input to services() or getDynamicData(). This issue is fixed in version 5.33.16.

📍 영향받는 시스템

Windows에서 실행되는 Node.js 애플리케이션이 사용하는 systeminformation 5.33.16 미만 버전

⚔️ 공격 벡터

외부 입력이 services() 또는 getDynamicData()에 전달될 때, 유니코드 따옴표를 이용해 PowerShell 필터를 탈출하여 임의의 명령 실행

🛡️ 대응 방법

systeminformation을 5.33.16 이상으로 업데이트하고, 사용자 입력을 서비스 이름 조회 함수에 직접 전달하지 않도록 검증 및 제한

🔧 검증 코드

출력된 버전이 5.33.16 미만이면 취약하며, 5.33.16 이상이면 패치된 것입니다.

Shell / Script
npm ls systeminformation 2>/dev/null | grep systeminformation

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js