Aikido’s latest Graphalgo research is a useful warning for teams that treat infrastructure-as-code tooling as “trusted by default.” The campaign moved beyond npm and PyPI into Terraform providers and Go modules, putting malware closer to developer workstations, CI runners, and the cloud credentials used to deploy production infrastructure.
The source report is worth reading directly: Aikido — Graphalgo campaign spreads to Terraform providers and Go Modules.
What happened
Aikido identified Graphalgo-linked Go malware distributed through two Terraform providers and two Go modules. The Terraform providers included a typosquat of a popular Docker provider, while the Go modules were supported by fake ecosystem sites and GitHub organizations designed to look legitimate during social engineering.
The notable shift is the target surface. Terraform users often sit near cloud administration, infrastructure deployment, and production secrets. A malicious provider does not just threaten a developer laptop; it can expose credentials that have the authority to create infrastructure, read state, access secrets, or modify deployment pipelines.
Why this matters
Most software supply-chain programs focus on application dependencies: npm, PyPI, Maven, NuGet, container images, and GitHub Actions. Those matter, but IaC dependencies deserve the same scrutiny. Terraform providers, modules, and CI/CD helper tools execute inside high-trust environments where identity is often stronger than monitoring.
This campaign also shows an attacker preference for targeted activation. Some payloads were reportedly gated behind specific runtime conditions, which helps malware stay quiet in sandboxes and routine dependency scans. That makes “we installed it and nothing happened” a weak assurance.
Defensive takeaways for SMBs and gov contractors
- Inventory Terraform providers and Go modules across laptops, CI runners, and build containers. Do not limit the review to application repositories.
- Pin provider sources and versions in Terraform lock files, and review any provider namespace that resembles a trusted project but is not the official publisher.
- Block unknown registries where possible. Route Terraform and Go dependency fetches through approved mirrors or dependency proxies with logging.
- Isolate IaC execution. Terraform runs should use short-lived cloud credentials scoped to the specific workspace, not long-lived admin keys on a developer machine.
- Monitor unusual egress from build systems, especially Slack API traffic and blockchain RPC endpoints from CI/CD runners or developer environments that have no business need for them.
- Treat exposed DevOps machines as credential incidents. If a malicious provider or module ran, rotate GitHub/GitLab tokens, cloud keys, SSH keys, package registry tokens, and any secrets available to Terraform state or CI jobs.
What to hunt for
Aikido’s report names the following packages and providers as malicious:
gocommunity-io/dockerdkreuzwenker/dockergocommunity.io/orderedbtreegogets.dev/btreex
Defenders should also review references to gocommunity[.]io, gogets[.]dev, unexpected Terraform provider downloads, suspicious go run child processes, and outbound API traffic from build hosts to Slack or blockchain infrastructure.
Bulwark Black assessment
This is not just another package typo-squatting story. It is a reminder that infrastructure tooling has become part of the identity perimeter. The teams most exposed are the ones with small engineering staffs, broad cloud permissions, and limited separation between development, deployment, and administration.
The practical control is not one magic scanner. It is layered friction: approved provider lists, short-lived credentials, dependency visibility, CI egress monitoring, and a playbook that treats developer endpoint compromise as possible cloud compromise. For government contractors, that maps directly to the basics: asset inventory, least privilege, audit logging, incident response, and controlled software acquisition.
Bottom line: if Terraform can change production, Terraform dependencies need production-grade scrutiny.

