MAL-2026-13617
Vulnerability from ossf_malicious_packages
Published
2026-08-07 16:33
Modified
2026-08-07 16:33
Summary
Malicious code in ts-utility-plus (npm)
Details

-= Per source details. Do not edit below this line.=-

Source: amazon-inspector (75e338acac1218e74bb44a4141ac9eb195da36f48eef6f4b1d11c84fe92a96ef)

The package's default export getPlugin performs an HTTPS request to a hardcoded bare-IP endpoint at https://31.97.137.157:45000/icons/109 and passes the response field data.credits into new Function('require','module',...) with require, process, Buffer, and other Node globals injected as arguments, then invokes the constructed function. This gives the operator of that IP arbitrary code execution inside the installer's Node process whenever the package is required and its default export is called. A cover-story of Font Awesome / icon CDN naming (IconProvider, iconDomain, /ajax/libs/font-awesome/..., bearrtoken:"logo") surrounds the real payload URL, which is assembled by concatenating protocol+separator+domain+path where domain is the bare IP. The declared dependencies (@primno/dpapi, better-sqlite3, node-machine-id) are consistent with a follow-on credential/browser-secret stealer delivered through this channel.

CWE
  • CWE-506 - The product contains code that appears to be malicious in nature.
Credits

{
  "affected": [
    {
      "database_specific": {
        "cwes": [
          {
            "cweId": "CWE-506",
            "description": "The product contains code that appears to be malicious in nature.",
            "name": "Embedded Malicious Code"
          }
        ],
        "indicators": {
          "evidence_files": [
            {
              "path": "index.js",
              "sha256": "52f0e0867043e5bdee7b75188beca44929ccfdc656d42c09f76cea538d9d54d9",
              "tlsh": "e8c1716546fa31a36a63e0edf30f10027165e313375de931f48e42902fca568e5f24e8"
            }
          ],
          "package_integrity": [
            {
              "filename": "ts-utility-plus-1.3.2.tgz",
              "hashes": {
                "sha1": "83aeba86cd99cb03fb3cf95ac45fc9904be2c45b",
                "sha512_sri": "sha512-6/E8b/E8l4MWWGnY8/izFk1goKqLW3byQlxg4a2fMpJIXqy1DxmvLmtNZWWHUV8mIFC/YfYD1hMJGbb7a7lSwQ=="
              }
            }
          ]
        }
      },
      "package": {
        "ecosystem": "npm",
        "name": "ts-utility-plus"
      },
      "versions": [
        "1.3.2"
      ]
    }
  ],
  "credits": [
    {
      "contact": [
        "inspector-research@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    }
  ],
  "database_specific": {
    "malicious-packages-origins": [
      {
        "id": "IN-MAL-2026-017107",
        "import_time": "2026-08-07T16:51:14.206695694Z",
        "modified_time": "2026-08-07T16:33:15Z",
        "sha256": "75e338acac1218e74bb44a4141ac9eb195da36f48eef6f4b1d11c84fe92a96ef",
        "source": "amazon-inspector",
        "versions": [
          "1.3.2"
        ]
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (75e338acac1218e74bb44a4141ac9eb195da36f48eef6f4b1d11c84fe92a96ef)\nThe package\u0027s default export `getPlugin` performs an HTTPS request to a hardcoded bare-IP endpoint at https://31.97.137.157:45000/icons/109 and passes the response field `data.credits` into `new Function(\u0027require\u0027,\u0027module\u0027,...)` with `require`, `process`, `Buffer`, and other Node globals injected as arguments, then invokes the constructed function. This gives the operator of that IP arbitrary code execution inside the installer\u0027s Node process whenever the package is required and its default export is called. A cover-story of Font Awesome / icon CDN naming (`IconProvider`, `iconDomain`, `/ajax/libs/font-awesome/...`, `bearrtoken:\"logo\"`) surrounds the real payload URL, which is assembled by concatenating `protocol`+`separator`+`domain`+`path` where `domain` is the bare IP. The declared dependencies (@primno/dpapi, better-sqlite3, node-machine-id) are consistent with a follow-on credential/browser-secret stealer delivered through this channel.\n",
  "id": "MAL-2026-13617",
  "modified": "2026-08-07T16:33:15Z",
  "published": "2026-08-07T16:33:15Z",
  "references": [
    {
      "type": "PACKAGE",
      "url": "https://www.npmjs.com/package/ts-utility-plus/v/1.3.2"
    }
  ],
  "schema_version": "1.7.4",
  "summary": "Malicious code in ts-utility-plus (npm)"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…