Skip to content

Malicious code in erc20-approve-audit (RubyGems)

Malware Published Oct 11, 2026 to the GitHub Advisory Database • Updated Oct 14, 2026

Package

bundler erc20-approve-audit (RubyGems)

Affected versions

= 0.9.1

Patched versions

None

Description

Source: amazon-inspector (e43c1d294111db5834d006f064d33001b463860783ed8662a5f41a8e7354e4b8)

The gem's native extension script, which runs automatically during gem install, base64-decodes a Ruby payload and launches it via a double-forked, detached, session-leader background process (setsid, /dev/null reopen, 20-40 minute delay). The decoded payload opens a TCP socket to the hardcoded bare IP 45.138.12.177:8089 and pipes a local /bin/sh to the socket in an infinite reconnect loop, giving a remote operator full shell control of the installer's host. Execution is gated by anti-analysis checks that suppress the payload inside CI providers (CI, GITHUB_ACTIONS, TRAVIS, JENKINS, GITLAB_CI, CODESPACES), ephemeral/sandbox hosts (uvm, firecracker, sandbox, vagrant), analyst-shaped usernames and working directories (/tmp, /var/tmp, /opt/rubygems, /workspace), and short machine uptimes (<1800s), firing only when developer-signal files are present (/.ssh, ~/.gitconfig, ~/.gem/credentials, ~/.bundle, ~/.npmrc). The gem's advertised identity does not match its shipped contents: the name is erc20-approve-audit but the README and the native makefile target are bitcoin-rpc-lite / bitcoin_rpc_lite_native, and the Ruby library surface is a two-method stub (build_id='ok', healthy?=true) with no functional code.


Credit: OpenSSF (source)

References

Published to the GitHub Advisory Database Oct 11, 2026
Reviewed Oct 11, 2026
Last updated Oct 14, 2026

EPSS score

Weaknesses

Embedded Malicious Code

The product contains code that appears to be malicious in nature. Learn more on MITRE.

GHSA ID

GHSA-mq54-cvw7-j5m5

Source code

No known source code
Improvements are not currently accepted on this advisory because this package is malware and has no patched versions. If there is something to change, please open an issue at https://github.com/github/advisory-database/issues.