{"items":[{"id":"NVI-00011068","kind":"supply_chain_event","title":"Malicious code in css-a11y-contrast-utils (npm)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-4hxq-p3xc-m5cr"],"plain_summary":"GitHub lists this malware advisory for css-a11y-contrast-utils. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-b1a2c6c7080f45a4e0aac5593536c320"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-b1a2c6c7080f45a4e0aac5593536c320","url":"https://github.com/advisories/GHSA-4hxq-p3xc-m5cr","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-4hxq-p3xc-m5cr","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:13:24.290Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-b1a2c6c7080f45a4e0aac5593536c320"],"technology":"css-a11y-contrast-utils","known_exclusions":[],"conditions_summary":"## Source: amazon-inspector (85ad65ab7d49c4277898f5da5b5d45f3ec9cde46035bcf6416e3a95507ca1301)\ncss-a11y-contrast-utils@1.0.0 is advertised as a WCAG contrast utility but ships no contrast code — index.js exports an empty object. The package instead defines a Proxy stub exposing identifiers from Wix's internal Thunderbolt registry namespace (thunderboltRegistry, siteAssetsRegistry, editorRegistry, corvidRegistry, etc.), and its manifest points at static.parastorage.com/unpkg/css-a11y-contrast-utils, consistent with a dependency-confusion squat targeting a private Wix registry. On module load, thunderboltRegistry.js runs an IIFE that executes `hostname`, `id`, and `uname -r` via child_process and exfiltrates the collected host, uid, kernel version, Node version, and pid by (a) issuing DNS lookups to subdomains of the hardcoded OAST collector davdpb8lhot13kgmnhp0863x9g83mpswq.oast.live and (b) HTTP GET to the hardcoded webhook https://webhook.site/0492a36c-4d7b-408a-865c-226db25987ba. The cover-story metadata plus internal-registry naming plus the on-load recon beacon make the entire purpose of the package a dependency-confusion payload against installers that resolve any of these reg","public_affected_ranges":["= 1.0.0"]}],"null_published_at":"2026-10-31T23:18:22.429Z","source_updated_at":"2026-10-05T00:30:41.000Z","source_disclosed_at":"2026-10-05T00:30:39.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T23:13:24.290Z"}],"next_cursor":null,"snapshot_revision":"42594"}