Skip to content

Back to the catalog

StubMaker RubyGems Campaign Delivers a Windows Infostealer
opensourcemalware.comwriteup

StubMaker RubyGems Campaign Delivers a Windows Infostealer

Researchers identified "StubMaker," a RubyGems typosquat campaign (brumdler, brundlef, and 15 packages typosquatting bundler/i18n/rake/activesupport) that abuses the extconf.rb native-extension hook to fake a successful build while beaconing victim OS info and, on Windows, downloading a Rust loader (main.exe) from a GitHub release. The loader decrypts an embedded 11MB Go infostealer entirely in memory, which injects an embedded DLL (abe_payload.dll) into Chromium browsers via the elevation-service COM object to defeat Application-Bound Encryption and steal passwords, cookies, payment cards, crypto wallets/seed phrases, and Telegram data, exfiltrating via Gofile and a webhook at dresslee.com. The piece also details how RubyGems.org's namespace-reclaim behavior let a different account (mod8rz41mje) take over the yanked "brumdler" name to relaunch the campaign, and includes full IOCs and hashes.

TL;DR RubyGems typosquats (brumdler, i18n/rake/activesupport clones) fake a build via extconf.rb to drop a Rust loader that decrypts an in-memory Go infostealer, which injects a DLL into Chromium to bypass App-Bound Encryption and steal browser/crypto/Telegram data.
Document

What it is

The StubMaker campaign, discovered August 15, 2026, seeded RubyGems with clumsy (not SEO-clever) typosquats of bundler, i18n, rake, and activesupport. It began as two bundler typosquats — brumdler and brundlef — and grew to 16 gems, achieving hundreds of downloads before takedown. Concrete IoCs the summary omits: publisher accounts gemlewqqhu1 ("Taylor Moore"), mod8rz41mje ("Riley Miller"), and rbq95bwt6q ("Alex Davis"); each gem lists a different fabricated author.

How it works

The name refers to make_stub / make_stub.bat — fake compiler stand-ins the installer writes to disk. RubyGems expects extconf.rb to build a native C extension; StubMaker instead generates a Makefile with empty all, install, and clean targets plus stub scripts that just return success. The extension phase reports a clean build while the real work (platform beacon, loader fetch/execution) runs in the install hook. The hook makes exactly one network request — a 22 MB Rust loader from a GitHub release — and everything after decrypts in memory: the loader carries the 11 MB Go stealer in its own data section and never fetches it from a URL.

The detection point that matters

The page's core operational claim: after the first GitHub request, there is no second-stage download and no payload C2. If your detection waits to see a second payload fetch before treating this as full compromise, you are already too late. Alert on the install-time GitHub-release fetch itself, and on unencrypted HTTP to dresslee.com (which receives the Gofile link holding stolen data).

Why takedown didn't stop it

Exploiting a maintainer-acknowledged RubyGems.org behavior (issue rubygems/rubygems.org#1226, discussion #2787): once all versions of a gem are yanked, the namespace opens for any account to reclaim with no reservation period. A second account republished brumdler after takedown — its history shows two high build-number versions (1.0.44290, 1.0.86147) pushed and yanked August 15 before a 1.0.0 release landed August 16. brundlef now shows as unhosted under yet a third account. Practical effect: the campaign multiplied rather than stopped after the initial removal, so treat the gem names as durable IoCs, not the specific versions.

Caveats

The reclaim mechanism is inferred from behavior and version history ("whatever the exact mechanism"); the linkage to a parallel npm campaign is stated as a post-publication update.

Organisations named here

  • Application-Bound Encryption
  • BIP-39
  • brumdler
  • brundlef
  • dresslee.com
  • extconf.rb

Technologies named here

  • RubyGems.org
  • Gofile
  • api.ipify.org
  • Bundler
  • i18n
  • rake
  • activesupport
  • Windows
  • Chromium-family browsers
  • Telegram Desktop
  • Cryptocurrency wallets
  • RubyGems
  • Go
  • Rust
  • Chrome
  • Telegram
  • SQLite

Techniques named here

  • Typosquatting
  • Install-time execution hook
  • Fake build toolchain / stub generation
  • Platform fingerprinting / beacon
  • Base64-obfuscated payload URL
  • TLS certificate validation bypass
  • Multi-stage in-memory payload embedding
  • Custom stream-cipher decryption chain
  • Manual PE mapping / reflective loading
  • Application-Bound Encryption key extraction
  • Browser credential/data theft
  • Cryptocurrency wallet and seed-phrase theft
  • Data staging and exfiltration via third-party file host
  • RubyGems namespace reclaim abuse
  • Fabricated author metadata

Threat actors named here

  • StubMaker
  • gemlewqqhu1
  • mod8rz41mje
  • rbq95bwt6q
  • wincfg / syscfg
  • Rust loader
  • abe_payload.dll
  • Windows Infostealer Hits npm and Ruby