mal-2026-18599

osv_rubygems
Description

--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (721580f8eda44ad5ee7604f5ba0648e8830302f784e3e4a995e02ca7359c909e) The gem ships a `.yardopts` file containing `--load./script.rb`, which causes YARD to execute `script.rb` whenever documentation is generated for the gem (locally via `yard doc`, in CI, or on doc-hosting services such as RubyDoc.info). `script.rb` collects host identifiers — `Socket.gethostname`, current working directory, UID, and `RUBY_VERSION` — and POSTs them via `Net::HTTP.post_form` to the hardcoded third-party collector `https://webhook.site/97fa3c6a-3fad-4d2d-8312-15dc37e41e66`. The same script also rewrites `lib/w002yardprobe.rb` in place (substituting a `MARKSLOT` token with a runtime stamp) and drops sentinel files `W002SCRIPT_RAN.txt` and `W002EGRESS_OK.txt` in the detected build directory (e.g. `/build`), indicating the gem is instrumented to probe a documentation-build sandbox. The package self-identifies as a probe; the exfiltration and build-environment mutation are the gem's purpose. The trigger is YARD doc generation rather than `gem install` or `require`, so the harm materializes against whichever host (developer workstation, CI runner, or doc-hosting pipeline) processes the gem's documentation.

Timeline
Published
unknown
Last Modified
unknown
CVSS Details

CVSS details not available.

Affected Products

No product information available.

Weaknesses (CWE)
References
Linked Vulnerabilities

No linked vulnerabilities found.

{
  "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": "script.rb",
              "sha256": "1a9aaf4ada6ff1225a0c9066bcc9ba27f91ce8eaf928fcfed5e32939e21a4f89",
              "tlsh": "dc4142725cc14d7b67e0e4483e2c1550f762614fc70418703aad426a2f65d3ba2b5bfb"
            }
          ],
          "package_integrity": [
            {
              "filename": "w002yardprobe-0.0.4.gem",
              "hashes": {
                "sha256": "2c92205c8a1ecbffe953de63a4308e7de19bff714f6b01a67f1780bd38f39794"
              }
            }
          ]
        },
        "source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/rubygems/w002yardprobe/MAL-2026-18599.json"
      },
      "package": {
        "ecosystem": "RubyGems",
        "name": "w002yardprobe",
        "purl": "pkg:gem/w002yardprobe"
      },
      "versions": [
        "0.0.4",
        "0.0.5"
      ]
    }
  ],
  "credits": [
    {
      "contact": [
        "inspector-research@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    }
  ],
  "database_specific": {
    "malicious-packages-origins": [
      {
        "id": "IN-MAL-2026-022534",
        "import_time": "2026-11-04T03:13:46.189246589Z",
        "modified_time": "2026-11-04T02:58:29Z",
        "sha256": "5252a1d5dd27d6e0edd3c1fc3936ff09d93b2fcc8e5544afc09fe7fb7d90bee5",
        "source": "amazon-inspector",
        "versions": [
          "0.0.4"
        ]
      },
      {
        "id": "IN-MAL-2026-022533",
        "import_time": "2026-11-04T03:13:46.098494137Z",
        "modified_time": "2026-11-04T02:58:21Z",
        "sha256": "721580f8eda44ad5ee7604f5ba0648e8830302f784e3e4a995e02ca7359c909e",
        "source": "amazon-inspector",
        "versions": [
          "0.0.5"
        ]
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (721580f8eda44ad5ee7604f5ba0648e8830302f784e3e4a995e02ca7359c909e)\nThe gem ships a `.yardopts` file containing `--load./script.rb`, which causes YARD to execute `script.rb` whenever documentation is generated for the gem (locally via `yard doc`, in CI, or on doc-hosting services such as RubyDoc.info). `script.rb` collects host identifiers — `Socket.gethostname`, current working directory, UID, and `RUBY_VERSION` — and POSTs them via `Net::HTTP.post_form` to the hardcoded third-party collector `https://webhook.site/97fa3c6a-3fad-4d2d-8312-15dc37e41e66`. The same script also rewrites `lib/w002yardprobe.rb` in place (substituting a `MARKSLOT` token with a runtime stamp) and drops sentinel files `W002SCRIPT_RAN.txt` and `W002EGRESS_OK.txt` in the detected build directory (e.g. `/build`), indicating the gem is instrumented to probe a documentation-build sandbox. The package self-identifies as a probe; the exfiltration and build-environment mutation are the gem's purpose. The trigger is YARD doc generation rather than `gem install` or `require`, so the harm materializes against whichever host (developer workstation, CI runner, or doc-hosting pipeline) processes the gem's documentation.\n",
  "id": "MAL-2026-18599",
  "modified": "2026-11-04T03:30:03.195537037Z",
  "published": "2026-11-04T02:58:21Z",
  "references": [
    {
      "type": "PACKAGE",
      "url": "https://rubygems.org/gems/w002yardprobe/versions/0.0.4"
    },
    {
      "type": "PACKAGE",
      "url": "https://rubygems.org/gems/w002yardprobe/versions/0.0.5"
    }
  ],
  "schema_version": "1.9.2",
  "summary": "Malicious code in w002yardprobe (RubyGems)"
}
View JSON API Download JSON