The Morning Dev

Only the news worth knowing

‹
 
B49/100

Supply-chain attack · high

Malicious RubyGems package strutil-core is a Shai-Hulud descendant credential-stealing worm

Tier B · Patch this week – Put it in the sprint

Who’s exposed: Projects that install malicious strutil-core 1.0.1 from RubyGems

Tier B because: Exploited in the wild OR public exploit

Reach

Attack

Damage

Fix

Exploited in the wild · Full takeover · Secrets exposed · Supply chain

What to do

  1. Check whether strutil-core 1.0.1 is installed in your projects and remove it.
  2. Rotate any credentials that were present on systems where strutil-core 1.0.1 was installed.

The Brief

  • Malicious RubyGems package strutil-core version 1.0.1 runs a 5.48 MB credential-stealing worm when installed.
  • The RubyGems account jamnajiea published a clean strutil-core 1.0.0 on November 1, 2026, then pushed the malicious 1.0.1.
  • Socket's Threat Research Team analyzed the malicious version and reports that it steals credentials and poisons AI tools.

Why it matters

Developers who install strutil-core 1.0.1 may have their credentials stolen by the worm, and the package is linked to the Shai-Hulud worm family.

The checklist behind the tier

Checklist · 5 of 10 yes
YesHits tech teamsRubyGems packages are installed and run by developers and ops teams.
NoCore infrastructureA single malicious gem is not core infrastructure like OpenSSH or RubyGems itself.
NoPopular toolstrutil-core is an obscure gem, not a widely used framework or tool.
YesExploited in the wildSocket: malicious 1.0.1 was published and analyzed as a live credential-stealing worm.
NoPublic exploitSocket describes the malicious gem; no source says exploit code or PoC is published.
NoRemote, no loginSocket: the worm runs when the gem is installed; no network unauthenticated attack is described.
YesFull takeoverSocket: the gem runs a credential-stealing worm when installed, which means code execution.
YesSecrets exposedSocket: the worm steals credentials from the systems where the gem is installed.
YesSupply chainSocket: a malicious version 1.0.1 was pushed to RubyGems after a clean 1.0.0 was published.
NoNo fix yetSocket does not say the malicious version remains unpatched or unremoved.

Timeline

  1. Account jamnajiea publishes clean strutil-core 1.0.0 to RubyGems

  2. Socket publishes analysis of malicious strutil-core 1.0.1

  3. Socket

    Shai-Hulud Descendant Surfaces in Malicious Ruby Gem That Steals Credentials and Poisons AI Tools

Source

Shai-Hulud Descendant Surfaces in Malicious Ruby Gem That Steals Credentials and Poisons AI Tools ↗ Socket · 9h ago

First seen · 1 source · Full story page · How tiers are decided