Skip to content
Open-Source Registry

gem / strutil-core / 1.0.0

strutil-core 1.0.0

bitbison: flagged, behavior flagged, dependencies clean, posture not checked, pipeline clean, 1 of 1 jobs captured RisknoneVulnsnone
processes
169
operations
4.9K
packages
2
compiler runs
0
connections
1
build time
4s
job time
4s
capture
57 KB
records
7.4K
bytes / record
7.7
run 260e27e2-c64a-401e-99d6-380ec02fb8b7 · built 2026-11-01 · complete
Reviewed by Bitbison: maliciousInstalling strutil-core 1.0.1 downloads Bun and runs bundled JavaScript that reads 51 credential stores, harvests AWS, Azure, Google Cloud and GitHub secrets, sends them to paleasbest.top, installs a systemd user service and rewrites Cursor's MCP configuration. Same server as the pystr-codec worm.

Artifact

file · retained · retained · graph v2
1

Checks

12 of 12 clear
Build behavior✓✓✓✓✓✓✓
Supply chain✓✓✓✓
Pipeline✓

Detections

0

No detections

No abnormal activity detected across 4.9K flows.

Network

1 peers
  • index.rubygems.org:443 the package manager · bundle via rubygems.org · Fastly, Inc. · 65 files ecosystem
Dependencies2Build behaviour
detonate-probe0.0.1
rack3.2.8
Versions2RiskVulnsPublished
1.0.1criticalnone16h ago
1.0.0nonenone18h ago

Raw data

capture
57 KB
records
7,413
bytes per record
7.7

Loading a sample of the capture

Want to see more? E-mail us at hello@bitbison.io about your use case.

1 of 1 jobs captured: install-require success · Generated 2026-11-01 · run 260e27e2-c64a-401e-99d6-380ec02fb8b7

analysis 0.1.0 · 2026-11-01 · af5af45 · graph v2

strutil-core 1.0.1 steals credentials at install, harvests cloud secrets, and installs persistence

maliciousCovers 1.0.0 and 1.0.1Reviewed by BitbisonUpdated 2026-11-01

Installing strutil-core 1.0.1 downloads Bun and runs bundled JavaScript that reads 51 credential stores, harvests AWS, Azure, Google Cloud and GitHub secrets, sends them to paleasbest.top, installs a systemd user service and rewrites Cursor's MCP configuration. Same server as the pystr-codec worm.

What it does

strutil-core 1.0.1 presents itself as "Core string utilities for Ruby". Installing it runs its native-extension step, which downloads the Bun JavaScript runtime from Bun's GitHub releases into a hidden temporary directory (/tmp/.b_<pid>/) and runs ext/strutil-core/index.js from the installed gem. In a run of gem install strutil-core -v 1.0.1, that code:

  • Read 51 credential stores belonging to other tools: cloud (AWS, Azure, Google Cloud, Vault), source forges (GitHub CLI, GitLab CLI, git credentials, SSH keys), package registries (npm, PyPI, RubyGems, NuGet, Composer, Yarn), containers (Docker, Kubernetes), AI coding agents (Claude Code, Codex), databases, cryptocurrency wallets, and services such as Terraform, Databricks, Hugging Face, Vercel and Kaggle.
  • Harvested cloud secrets with whatever it found: it called AWS STS, then Secrets Manager and Systems Manager Parameter Store in 18 regions and ECR in 11; Azure Resource Manager and Microsoft Graph; Google Cloud's metadata service and Resource Manager; and the GitHub, GitLab and GitHub Container Registry APIs.
  • Sent what it collected to paleasbest.top, the same server as the pystr-codec worm on PyPI (MAL-2026-18432), and called the GitHub API, the channel that family uses to publish stolen credentials to a public repository.
  • Installed persistence: a systemd user service, ~/.config/systemd/user/pkg-runtime.service, a script at ~/.local/share/runtimes/sync.py, and a copy of its JavaScript at ~/.config/index.js.
  • Rewrote Cursor's MCP configuration, ~/.cursor/mcp.json, the file that tells the Cursor editor's AI agent which tool servers to run.

1.0.0, published two hours earlier, showed none of this behavior in our run.

Timeline

  • strutil-core 1.0.0 published on RubyGems.org: 2026-11-01 02:19:56 UTC.
  • strutil-core 1.0.1 published on RubyGems.org: 2026-11-01 04:05:04 UTC.
  • Bitbison's build of 1.0.1 started: 04:07:40 UTC, 2 minutes 36 seconds after publication.
  • Bitbison flagged 1.0.1 critical: 04:08:48 UTC, 3 minutes 44 seconds after publication.
  • RubyGems.org yanked 1.0.0 and 1.0.1: 2026-11-01, between 08:52 and 09:13 UTC.

Indicators

hosts
paleasbest.top
files
~/.config/systemd/user/pkg-runtime.service~/.local/share/runtimes/sync.py~/.config/index.js~/.cursor/mcp.json/tmp/.b_<pid>/bungems/strutil-core-1.0.1/ext/strutil-core/index.js

Links