{"items":[{"id":"NVI-00009662","kind":"supply_chain_event","title":"Malicious code in defi-yield-calculator (RubyGems)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-qchc-hrjm-3rwv"],"plain_summary":"GitHub lists this malware advisory for defi-yield-calculator. 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-243e649d1422c34e3881f1aab68290c8"],"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-243e649d1422c34e3881f1aab68290c8","url":"https://github.com/advisories/GHSA-qchc-hrjm-3rwv","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-qchc-hrjm-3rwv","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:01.069Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-243e649d1422c34e3881f1aab68290c8"],"technology":"defi-yield-calculator","known_exclusions":[],"conditions_summary":"## Source: amazon-inspector (ee8b3e50479b61d2ff6e2f5a19de20473cf8fc3c91f99945aff51f112a617192)\nThe gem ships an ext/extconf.rb that base64-decodes an embedded Ruby payload and runs it via eval inside a double-forked, detached, stdio-nulled background process after a 20–40 minute sleep. Execution is gated by anti-analysis checks that skip CI runners, ephemeral/sandbox hostnames, generated analyst usernames, common analysis working directories, low-uptime hosts, and hosts missing developer artifacts (~/.ssh, ~/.gitconfig, ~/.gem/credentials, ~/.bundle, ~/.npmrc), so the payload only fires on real developer machines. The decoded payload opens a TCPSocket to the hardcoded host 45.138.12.177 on port 8089 and bidirectionally pipes it to /bin/sh in an infinite reconnect loop, giving a remote operator persistent interactive shell access to the installer's host. The gemspec presents the package as a 'defi yield calculator' with a trivial lib stub exposing only VERSION/build_id/healthy?, the README is copied from an unrelated 'bitcoin-rpc-lite' project, and create_makefile targets 'bitcoin_rpc_lite_native' despite no C/C++ sources being shipped — the native-extension declaration exists solel","public_affected_ranges":["= 0.9.1"]}],"null_published_at":"2026-10-31T22:13:39.927Z","source_updated_at":"2026-10-11T15:31:17.000Z","source_disclosed_at":"2026-10-11T15:31:13.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-31T22:07:01.069Z"}],"next_cursor":null,"snapshot_revision":"42594"}