MAL-2026-4665
Vulnerability from ossf_malicious_packages
Published
2026-05-20 04:53
Modified
2026-05-20 04:53
Summary
Malicious code in security-env-loader (npm)
Details

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

Source: amazon-inspector (cf2b538ca6f5582ba25c054253f091eacca05571066d7237d6f693f23938e37c)

Package impersonates the popular dotenv library (identical description and repo URL git://github.com/motdotla/dotenv.git) and exposes a matching config() API. When a consumer calls require('security-env-loader').config(...), lib/main.js loads lib/sync-safe-read.js — an obfuscator.io-packed module (rotated string array, _0x-style hex identifiers) that runs at top level. The module collects os.hostname(), os.type()/release()/arch(), MAC addresses from os.networkInterfaces(), and the entire process.env via JSON.stringify(process.env), then POSTs/GETs the data as query parameters to a base64-decoded URL (https://ip-core-api-0511.vercel.app/api; the same value is shipped in the package's.env as AUTH_API=aHR0cHM6Ly9pcC1jb3JlLWFwaS0wNTExLnZlcmNlbC5hcHAvYXBp). The exfiltration loop fires every 5 seconds via setInterval. The response from the C2 is parsed and when status==='log', message is passed to eval(), giving the operator persistent arbitrary-code execution in any host process that imports this package. Because the package's stated purpose is to load environment variables, the exfiltrated process.env is highly likely to contain live API keys, database credentials, and cloud tokens.

CWE
  • CWE-506 - The product contains code that appears to be malicious in nature.
Credits
Amazon Inspector actran@amazon.com

{
  "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": "lib/main.js",
              "sha256": "5a4cfc7dce615c037529eccd90889c475d80e8dc8905f001d2163cc46de72d8f",
              "tlsh": "7051444aa2e835500b87a2f08a0f11056ab5d5673314cef4bc8c6bc93f0582499b3aff"
            },
            {
              "path": "lib/sync-safe-read.js",
              "sha256": "49d1c324c7aa9630b5b9a8a25d69db3e2b7041c5b5fe65329f74525198cd2d64",
              "tlsh": "6cb15319aed00e9613476bd73b2bb9c1ed1a8e953ca54846b210ec0875b2e34ced6f34"
            }
          ],
          "package_integrity": [
            {
              "filename": "security-env-loader-3.11.0.tgz",
              "hashes": {
                "sha1": "dd886153fa86e6c01d05efd064c921b80309fdf8",
                "sha512_sri": "sha512-Bf85PDxq4MVKx8KF6hsZRtoRwUR465qSAhHgLRgfwANb/Oz+faj2OPDj/m2xCY8YTwR9CLR88dQcpp+Ze7JH2w=="
              }
            }
          ]
        }
      },
      "package": {
        "ecosystem": "npm",
        "name": "security-env-loader"
      },
      "versions": [
        "3.11.0"
      ]
    }
  ],
  "credits": [
    {
      "contact": [
        "actran@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    }
  ],
  "database_specific": {
    "malicious-packages-origins": [
      {
        "id": "IN-MAL-2026-003466",
        "import_time": "2026-05-26T05:50:41.742773895Z",
        "modified_time": "2026-05-20T04:53:27Z",
        "sha256": "cf2b538ca6f5582ba25c054253f091eacca05571066d7237d6f693f23938e37c",
        "source": "amazon-inspector",
        "versions": [
          "3.11.0"
        ]
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (cf2b538ca6f5582ba25c054253f091eacca05571066d7237d6f693f23938e37c)\nPackage impersonates the popular dotenv library (identical description and repo URL git://github.com/motdotla/dotenv.git) and exposes a matching config() API. When a consumer calls require(\u0027security-env-loader\u0027).config(...), lib/main.js loads lib/sync-safe-read.js \u2014 an obfuscator.io-packed module (rotated string array, _0x-style hex identifiers) that runs at top level. The module collects os.hostname(), os.type()/release()/arch(), MAC addresses from os.networkInterfaces(), and the entire process.env via JSON.stringify(process.env), then POSTs/GETs the data as query parameters to a base64-decoded URL (https://ip-core-api-0511.vercel.app/api; the same value is shipped in the package\u0027s.env as AUTH_API=aHR0cHM6Ly9pcC1jb3JlLWFwaS0wNTExLnZlcmNlbC5hcHAvYXBp). The exfiltration loop fires every 5 seconds via setInterval. The response from the C2 is parsed and when status===\u0027log\u0027, message is passed to eval(), giving the operator persistent arbitrary-code execution in any host process that imports this package. Because the package\u0027s stated purpose is to load environment variables, the exfiltrated process.env is highly likely to contain live API keys, database credentials, and cloud tokens.\n",
  "id": "MAL-2026-4665",
  "modified": "2026-05-20T04:53:27Z",
  "published": "2026-05-20T04:53:27Z",
  "references": [
    {
      "type": "PACKAGE",
      "url": "https://www.npmjs.com/package/security-env-loader/v/3.11.0"
    }
  ],
  "schema_version": "1.7.4",
  "summary": "Malicious code in security-env-loader (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…