🇰🇷 한글 설명
systeminformation 라이브러리의 5.33.14 이전 버전에서 Linux networkStats(iface) 구현이 호출자가 제공한 interface 값을 검증하지 않아 경로 순회 및 심볼릭 링크를 통해 Node.js 프로세스가 읽을 수 있는 파일의 첫 줄을 반환할 수 있습니다. 네트워크 엔드포인트는 노출되지 않으며, 로컬 파일시스템 설정이 필요합니다. 5.33.14 버전에서 수정되었습니다.
💡 쉬운 설명
이 라이브러리는 서버의 시스템 정보를 조회하는 도구입니다. 공격자가 로컬에서 특정 경로와 링크를 조작하면 프로세스가 읽을 수 있는 파일 내용의 일부가 노출될 수 있습니다.
🇺🇸 원문 (English)
systeminformation is a System and OS information library for node.js. Prior to 5.33.14, the Linux networkStats(iface) implementation uses the caller-supplied interface value in an fs.existsSync() check and to build /sys/class/net/<iface> paths, including the operstate path, without verifying that it is a single interface-name segment or that the resolved path remains under /sys/class/net. An attacker who can control iface and create a directory containing symlinked statistics files can use parent-directory components and symlink traversal to make the API return the first line of a file readable by the Node.js process. The package does not expose a network endpoint, and the demonstrated scenario requires local filesystem setup. This issue is fixed in version 5.33.14.
📍 영향받는 시스템
systeminformation 5.33.14 미만 버전을 사용하는 Linux 환경의 Node.js 애플리케이션
⚔️ 공격 벡터
로컬 공격자가 iface 값에 상위 디렉터리 경로(../)를 포함시키고 심볼릭 링크를 생성하여 Node.js 프로세스가 읽을 수 있는 파일의 첫 줄을 조회
🛡️ 대응 방법
systeminformation 패키지를 5.33.14 이상 버전으로 업그레이드 (npm install systeminformation@latest)
🔧 검증 코드
출력된 버전이 5.33.14 이상이면 취약점이 수정된 것이며, 5.33.14 미만이면 업그레이드가 필요합니다.
npm ls systeminformation 2>/dev/null | grep systeminformation