Kant's IT/Vulnerability

Node.js systeminformation 패키지 취약점: RCE 공격에 노출된 수백만 시스템

Kant Jo 2024. 12. 29. 22:03

Node.js systeminformation Package Vulnerability Exposes Millions of Systems to RCE Attacks

 

Node.js systeminformation Package Vulnerability Exposes Millions of Systems to RCE Attacks

A critical command injection vulnerability in the popular systeminformation npm package has recently been disclosed.

gbhackers.com

 

  • 취약점 개요
    • CVE-2024-56334: Node.js의 인기 있는 systeminformation npm 패키지에서 발견된 명령어 삽입(Command Injection) 취약점
    • 취약점이 있는 버전: ≤ 5.23.6
    • 영향을 받는 시스템에서 원격 코드 실행(RCE)권한 상승 공격 가능
  • 취약점 상세
    • 문제는 getWindowsIEEE8021x 함수에서 발생하며, Wi-Fi SSID 필드가 cmd.exe에 직접 전달되면서 시작
    • SSID는 netsh wlan show interface 명령을 통해 가져와, 입력값 검증 없이 cmd.exe /d /s /c "netsh wlan show profiles" 명령의 매개변수로 전달됨
    • 공격자는 악의적인 SSID 이름을 설정하여 임의의 시스템 명령어를 실행할 수 있음
  • PoC(개념 증명)
    1. 악성 SSID 생성: 공격자는 SSID 이름을 다음과 같이 악의적인 페이로드로 설정
       a" | ping /t 127.0.0.1 &
       a" | %SystemDrive%\a\a.exe &
    2. 공격 네트워크 연결: 피해자가 악성 네트워크에 연결
    3. 취약점 실행: 공격자가 시스템에서 취약한 함수를 실행
       const si = require('systeminformation');
       si.networkInterfaces((net) => { console.log(net) });
      • 임의의 명령 실행 가능, 예: 실행 파일 실행 또는 무한 핑 루프 생성
  • 영향
    심각도: CVSS v3 기준 기본 점수 10.0(Critical)
    • 공격 가능성
      • 원격 코드 실행(RCE)
      • 로컬 권한 상승(LPE)
      • 민감한 데이터 유출 및 시스템 가용성 손상
    • 피해
      • 시스템 무단 접근
      • 데이터 유출
      • 서비스 운영 중단
  • 영향을 받는 버전 및 패치 현황
    버전 상태 버전 설명
    취약한 버전 ≤ 5.23.6 명령어 삽입 취약점에 취약
    패치된 버전 5.23.7 취약점 수정 및 입력값 검증 추가
  • 완화 조치
    • 패키지 업데이트": systeminformation 패키지를 5.23.7 이상으로 즉시 업그레이드
        npm install systeminformation@latest
    • 보안 조치
      • 사용자 입력값 검증 및 필터링 적용
      • 시스템에서 실행 가능한 명령어 제한
    • 의존성 관리: npm 종속성을 주기적으로 점검하고 취약점이 있는 라이브러리를 업데이트
  • 결론
    • 이번 취약점은 인기 있는 npm 패키지에서 발생했으며, 보안 코딩 및 입력값 검증의 중요성을 다시 강조
    • 취약점은 광범위한 영향을 미칠 수 있어, 패치 적용 및 종속성 관리가 필수
    • 개발자들은 지속적으로 보안 업데이트를 확인하고, 사용자 입력에 대해 엄격한 검증을 수행해야 함