GHSA-q66h-m87m-j2q6 Bitcoinrb Vulnerable to Command injection via RPC

Not scored Published

Remote attackers can execute arbitrary system commands via the experimental RPC server due to unsafe parameter handling in the Bitcoinrb Ruby library.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is GHSA-q66h-m87m-j2q6?

GHSA-q66h-m87m-j2q6 is a command injection vulnerability in bitcoinrb, published on 10 Feb 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

Summary: Remote Code Execution

Unsafe handling of request parameters in the RPC HTTP server results in command injection

Details

In lib/bitcoin/rpc/http_server.rb line 30-39, the JSON body of a POST request is parsed into command and args variables. These values are then passed to send, which is used to call an arbitrary class method. However, there is no validation that the provided command value is one of the expected RPC methods. This means that an attacker could supply a command value such as system, and then pass arbitrary system commands into the args parameter and achieve remote code execution.

PoC

  1. Start the RPC server
  2. Send a request to the RPC server as so:
curl -X POST http://127.0.0.1:18443 -H 'Content-Type: application/json' \
   -d '{"method":"eval","params":["File.write(\"/tmp/pwned\",\"owned\")"]}'
  1. Check the /tmp folder on the machine where the RPC server is being run. If a folder /pwned now exists, the vulnerability is confirmed.

Impact

This vulnerability would impact anyone running the RPC server. The impact is higher for those who are running it publicly exposed to the internet.

Remediation

Mitigating Factors:

  • The RPC server is part of the experimental SPV node feature, which is not documented and has very few users.
  • The SPV-related features may be removed in future releases.

Resolution:

  • Added whitelist validation to allow only RPC methods defined in RequestHandler.
  • Fixed in version 1.12.0.

Which versions are affected by GHSA-q66h-m87m-j2q6?

2 open source packages ship an affected version, including bitcoinrb.

PackageAffectedFixed in
bitcoinrb RubyGemsAll versions1.12.0
bitcoinrb RubyGemsAll versions1.12.0

How do I fix GHSA-q66h-m87m-j2q6?

Upgrade bitcoinrb to 1.12.0 or later.

Upgrade, and pass arguments to programs as a list instead of through a shell. More about Command injection.

Is GHSA-q66h-m87m-j2q6 being exploited?

There is no known exploitation of GHSA-q66h-m87m-j2q6 in the wild and no public exploit code.

Sources

Is GHSA-q66h-m87m-j2q6 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free