Skip to main content

Command Palette

Search for a command to run...

Trivy supply chain attack spreads: Docker Hub, GitHub, and Kubernetes all affected

Published
4 min read
Trivy supply chain attack spreads: Docker Hub, GitHub, and Kubernetes all affected

Overview

Cybersecurity researchers have discovered more malicious artifacts on Docker Hub related to a supply chain attack targeting the vulnerability scanner Trivy. This incident not only involves malware distribution but also extends to CI/CD pipelines, internal GitHub organizations, and Kubernetes infrastructure, indicating a serious level of spread. The last confirmed safe version of Trivy is 0.69.3. Versions:

  • 0.69.4 (removed)

  • 0.69.5

  • 0.69.6

all contain malware and are no longer safe to use.

Docker Hub exploited to distribute malware

The malicious Trivy images (0.69.5, 0.69.6) were pushed to Docker Hub without corresponding releases on GitHub, indicating clear signs of a breach.

Analysis shows these images contain:

  • Fake C2 domain: scan.aquasecurtiy.org (typosquatting)

  • File exfiltration: payload.enc, tpcp.tar.gz

  • Link to GitHub repo backdoor: tpcp-docs-*

Notably, even though these images have been removed, they still persist through cache/mirror (e.g., mirror.gcr.io), causing many pipelines to inadvertently pull the malicious version.

Nguồn gốc: Tấn công GitHub Actions của Trivy

The attack originated from:

  • The attacker took over Trivy's GitHub Actions

  • Injected credential-stealing code into:

    • aquasecurity/trivy-action

    • aquasecurity/setup-trivy

This payload is designed to:

  • Collect GitHub tokens

  • Obtain SSH keys

  • Extract cloud credentials

  • Gather environment variables from CI runners

Escalation: From token theft to taking over GitHub organizations

A significant escalation step was the attacker using the stolen token to take over the internal GitHub organization aquasec-com.

Consequences:

  • 44 repositories were:

    • Rename en masse with the prefix tpcp-docs-

    • Change description to: "TeamPCP Owns Aqua Security"

    • Make all public

Notably:

The entire action took place in about 2 minutes (20:31 → 20:32 UTC, 03/22/2026) → proving:

  • The attack was fully automated (scripted via GitHub API)

  • Thoroughly prepared in advance.

Core weakness: Service account was compromised

The trace origin shows:

  • Account was compromised: Argon-DevOps-Mgt
  • This is a service account using a long-term token (PAT)

  • Has access to both organizations:

    • aquasecurity (public)

    • aquasec-com (internal)

=> Just one leaked token can lead to the entire system being compromised.

Signs of reconnaissance before the attack

7 hours before the defacement:

  • Attacker created and deleted a "ghost" branch.: update-plugin-links-v0.218.2

  • No workflow triggered

  • No actual release exists

=> This was a test of the token to check access rights without drawing attention.

Expansion: Worm, npm packages, and wiper malware

After obtaining the credential:

1. Spread worm (CanisterWorm)

  • Infects through npm packages

  • Spreads within the dev ecosystem

  • Uses ICP (Internet Computer) as C2

2. Wiper malware “kamikaze”

Payload mới nguy hiểm hơn:

  • Main target: Kubernetes clusters (especially in Iran)

  • Behavior:

    • Deploy DaemonSet across the entire cluster

    • Iran Node:

      • Wipe completely (rm -rf /)

      • Force reboot

    • Other Nodes: Install backdoor (systemd service)

3. Attack cloud infrastructure

TeamPCP also:

  • Exploit Docker API (port 2375)

  • Attack Redis, Ray dashboard

  • Use a stolen SSH key

  • Deploy:

    • Cryptomining Ransomware

    • Data exfiltration

Threat Actor: TeamPCP

TeamPCP (aka DeadCatx3, PCPcat, ShellForce) is a cloud-native attack group with increasingly advanced capabilities.

Key features:

  • Specializes in:

    • Kubernetes

    • Docker

    • CI/CD pipelines

  • Pioneer: Worm uses ICP as C2

  • Tactics:

    • Supply chain attack

    • Credential harvesting

    • Large-scale automation

Scope of impact

  • Not only the official image is affected.

  • Images:

    • CI/CD rebuild from Trivy

    • Fork / derivative

=> May have indirectly infected with malware

Recommendations

FPT Threat Intelligence provides the following recommendations that must be implemented immediately:

  • Do not use Trivy versions above 0.69.3

  • Rotate all:

    • GitHub tokens

    • SSH keys

    • Cloud credentials

  • Check CI/CD runners:

    • /tmp/pglog

    • Connect to ICP domain

  • More secure configuration

    • Pin GitHub Actions using commit SHA (avoid using tags)

    • Use short-lived tokens

    • Apply least privilege

    • Monitor pipeline like production

  • Check the system

    • Audit all:

      • CI/CD pipelines

      • Recently pulled Docker images

    • Check:

      • Kubernetes clusters

      • Docker API public (port 2375)

Conclusion

This is a prime example of a "long-tail supply chain attack":

  • A previously stolen credential

  • Reused for:

    • Take over GitHub org

    • Distribute malware

    • Attack cloud infrastructure

This shows that the biggest weakness isn't a technical vulnerability, but rather:

Service account with overly broad permissions + long-lived token

Reference

More from this blog

F

FPT IS Security

726 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.