Source: amazon-inspector (b5765482ebcff5ac393edb3ce06164e7c697a00aa7e32c92b1272dc20184b424)
The gem's extconf.rb, executed automatically by gem install as a native-extension build step, base64-decodes a Ruby payload and runs it via eval inside a double-forked, stdio-detached background process. The payload opens a TCP socket to the hardcoded host 45.138.12.177 on port 8089 and bridges it to /bin/sh, giving the remote operator an interactive shell on the installer's machine. Execution is gated by developer-host heuristics (presence of ~/.ssh, ~/.gitconfig, ~/.npmrc, ~/.gem/credentials, ~/.bundle, uptime > 1800s) and explicit anti-analysis checks that skip CI, ephemeral, generated-user, and sandbox environments, with a 20-40 minute delay before firing. The rest of the gem is cover: lib/multichain_rpc.rb exports only stub methods (build_id returning 'ok', healthy? returning true), the README advertises an unrelated name (bitcoin-rpc-lite), and extconf.rb declares a native extension (create_makefile('bitcoin_rpc_lite_native')) but ships no C sources, so the file's sole purpose is to run the embedded payload. Installing the gem on a developer workstation yields a full-host remote shell to the attacker.
Credit: OpenSSF (source)
References
Source: amazon-inspector (b5765482ebcff5ac393edb3ce06164e7c697a00aa7e32c92b1272dc20184b424)
The gem's extconf.rb, executed automatically by
gem installas a native-extension build step, base64-decodes a Ruby payload and runs it viaevalinside a double-forked, stdio-detached background process. The payload opens a TCP socket to the hardcoded host 45.138.12.177 on port 8089 and bridges it to/bin/sh, giving the remote operator an interactive shell on the installer's machine. Execution is gated by developer-host heuristics (presence of ~/.ssh, ~/.gitconfig, ~/.npmrc, ~/.gem/credentials, ~/.bundle, uptime > 1800s) and explicit anti-analysis checks that skip CI, ephemeral, generated-user, and sandbox environments, with a 20-40 minute delay before firing. The rest of the gem is cover: lib/multichain_rpc.rb exports only stub methods (build_idreturning 'ok',healthy?returning true), the README advertises an unrelated name (bitcoin-rpc-lite), and extconf.rb declares a native extension (create_makefile('bitcoin_rpc_lite_native')) but ships no C sources, so the file's sole purpose is to run the embedded payload. Installing the gem on a developer workstation yields a full-host remote shell to the attacker.Credit: OpenSSF (source)
References