<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[LamVN7]]></title><description><![CDATA[LamVN7]]></description><link>https://lamvn7.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 15 Nov 2026 20:14:02 GMT</lastBuildDate><atom:link href="https://lamvn7.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Trivy supply chain attack spreads: Docker Hub, GitHub, and Kubernetes all affected]]></title><description><![CDATA[Cybersecurity researchers have discovered more malicious artifacts on Docker Hub related to a supply chain attack targeting the vulnerability scanner…]]></description><link>https://lamvn7.hashnode.dev/trivy-supply-chain-attack-spreads-docker-hub-github-and-kubernetes-all-affected</link><guid isPermaLink="true">https://lamvn7.hashnode.dev/trivy-supply-chain-attack-spreads-docker-hub-github-and-kubernetes-all-affected</guid><category><![CDATA[threat intelligence]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Docker]]></category><category><![CDATA[docker image]]></category><category><![CDATA[Malware]]></category><category><![CDATA[infostealer]]></category><category><![CDATA[Kubernetes]]></category><dc:creator><![CDATA[Vũ Nhật Lâm]]></dc:creator><pubDate>Wed, 04 Nov 2026 12:13:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/3216346b-0ebb-4ed4-bc16-c25c70074b92.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Overview</h2>
<p>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 <strong>CI/CD pipelines</strong>, <strong>internal GitHub organizations</strong>, and <strong>Kubernetes</strong> infrastructure, indicating a serious level of spread. The last confirmed safe version of Trivy is 0.69.3. Versions:</p>
<ul>
<li>0.69.4 (removed)</li>
<li>0.69.5</li>
<li>0.69.6</li>
</ul>
<p>all contain malware and are no longer safe to use.</p>
<h2>Docker Hub exploited to distribute malware</h2>
<p>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.</p>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/35b23a86-a6ce-4d61-b95f-e392a7659bac.png" alt="" style="display:block;margin:0 auto" />

<p>Analysis shows these images contain:</p>
<ul>
<li>Fake C2 domain: <a href="http://scan.aquasecurtiy.org"><strong>scan.aquasecurtiy.org</strong></a> (typosquatting)</li>
<li>File exfiltration: payload.enc, tpcp.tar.gz</li>
<li>Link to GitHub repo backdoor: <strong>tpcp-docs-*</strong></li>
</ul>
<p>Notably, even though these images have been removed, they still persist through cache/mirror (e.g., <a href="http://mirror.gcr.io">mirror.gcr.io</a>), causing many pipelines to inadvertently pull the malicious version.</p>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/d8e1655c-49c0-433f-982c-ea108a8c7a98.png" alt="" style="display:block;margin:0 auto" />

<h2><strong>Nguồn gốc: Tấn công GitHub Actions của Trivy</strong></h2>
<p>The attack originated from:</p>
<ul>
<li>The attacker took over Trivy's GitHub Actions</li>
<li>Injected credential-stealing code into:<ul>
<li>aquasecurity/trivy-action</li>
<li>aquasecurity/setup-trivy</li>
</ul>
</li>
</ul>
<p>This payload is designed to:</p>
<ul>
<li>Collect GitHub tokens</li>
<li>Obtain SSH keys</li>
<li>Extract cloud credentials</li>
<li>Gather environment variables from CI runners</li>
</ul>
<h2>Escalation: From token theft to taking over GitHub organizations</h2>
<p>A significant escalation step was the attacker using the stolen token to take over the internal GitHub organization aquasec-com.</p>
<p>Consequences:</p>
<ul>
<li>44 repositories were:<ul>
<li>Rename en masse with the prefix tpcp-docs-</li>
<li>Change description to: "TeamPCP Owns Aqua Security"</li>
<li>Make all public</li>
</ul>
</li>
</ul>
<p>Notably:</p>
<p>The entire action took place in about 2 minutes (20:31 → 20:32 UTC, 03/22/2026) → proving:</p>
<ul>
<li>The attack was fully automated (scripted via GitHub API)</li>
<li>Thoroughly prepared in advance.</li>
</ul>
<h2>Core weakness: Service account was compromised</h2>
<p>The trace origin shows:</p>
<ul>
<li>Account was compromised: <strong>Argon-DevOps-Mgt</strong></li>
</ul>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/8d408923-54a4-4ce1-9e32-f9b8fefee803.png" alt="" style="display:block;margin:0 auto" />

<ul>
<li>This is a service account using a long-term token (PAT)</li>
<li>Has access to both organizations:<ul>
<li><strong>aquasecurity (public)</strong></li>
<li><strong>aquasec-com (internal)</strong></li>
</ul>
</li>
</ul>
<p>=&gt; Just one leaked token can lead to the entire system being compromised.</p>
<h2>Signs of reconnaissance before the attack</h2>
<p>7 hours before the defacement:</p>
<ul>
<li>Attacker created and deleted a "ghost" branch.: <strong>update-plugin-links-v0.218.2</strong></li>
<li>No workflow triggered</li>
<li>No actual release exists</li>
</ul>
<p>=&gt; This was a test of the token to check access rights without drawing attention.</p>
<h2>Expansion: Worm, npm packages, and wiper malware</h2>
<p>After obtaining the credential:</p>
<p><strong>1. Spread worm (CanisterWorm)</strong></p>
<ul>
<li>Infects through npm packages</li>
<li>Spreads within the dev ecosystem</li>
<li>Uses ICP (Internet Computer) as C2</li>
</ul>
<p><strong>2. Wiper malware “kamikaze”</strong></p>
<p>Payload mới nguy hiểm hơn:</p>
<ul>
<li>Main target: Kubernetes clusters (especially in Iran)</li>
<li>Behavior:<ul>
<li>Deploy DaemonSet across the entire cluster</li>
<li>Iran Node:<ul>
<li>Wipe completely (rm -rf /)</li>
<li>Force reboot</li>
</ul>
</li>
<li>Other Nodes: Install backdoor (systemd service)</li>
</ul>
</li>
</ul>
<p>3. Attack cloud infrastructure</p>
<p>TeamPCP also:</p>
<ul>
<li>Exploit Docker API (port 2375)</li>
<li>Attack Redis, Ray dashboard</li>
<li>Use a stolen SSH key</li>
<li>Deploy:<ul>
<li>Cryptomining Ransomware</li>
<li>Data exfiltration</li>
</ul>
</li>
</ul>
<h2>Threat Actor: TeamPCP</h2>
<p><strong>TeamPCP</strong> (aka DeadCatx3, PCPcat, ShellForce) is a cloud-native attack group with increasingly advanced capabilities.</p>
<p>Key features:</p>
<ul>
<li>Specializes in:<ul>
<li>Kubernetes</li>
<li>Docker</li>
<li>CI/CD pipelines</li>
</ul>
</li>
<li>Pioneer: Worm uses ICP as C2</li>
<li>Tactics:<ul>
<li>Supply chain attack</li>
<li>Credential harvesting</li>
<li>Large-scale automation</li>
</ul>
</li>
</ul>
<h2>Scope of impact</h2>
<ul>
<li>Not only the official image is affected.</li>
<li>Images:<ul>
<li>CI/CD rebuild from Trivy</li>
<li>Fork / derivative</li>
</ul>
</li>
</ul>
<p>=&gt; May have indirectly infected with malware</p>
<h2>Recommendations</h2>
<p>FPT Threat Intelligence provides the following recommendations that must be implemented immediately:</p>
<ul>
<li>Do not use Trivy versions above 0.69.3</li>
<li>Rotate all:<ul>
<li>GitHub tokens</li>
<li>SSH keys</li>
<li>Cloud credentials</li>
</ul>
</li>
<li>Check CI/CD runners:<ul>
<li>/tmp/pglog</li>
<li>Connect to ICP domain</li>
</ul>
</li>
<li>More secure configuration<ul>
<li>Pin GitHub Actions using commit SHA (avoid using tags)</li>
<li>Use short-lived tokens</li>
<li>Apply least privilege</li>
<li>Monitor pipeline like production</li>
</ul>
</li>
<li>Check the system<ul>
<li>Audit all:<ul>
<li>CI/CD pipelines</li>
<li>Recently pulled Docker images</li>
</ul>
</li>
<li>Check:<ul>
<li>Kubernetes clusters</li>
<li>Docker API public (port 2375)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Conclusion</h2>
<p>This is a prime example of a <strong>"long-tail supply chain attack"</strong>:</p>
<ul>
<li>A previously stolen credential</li>
<li>Reused for:<ul>
<li>Take over GitHub org</li>
<li>Distribute malware</li>
<li>Attack cloud infrastructure</li>
</ul>
</li>
</ul>
<p>This shows that the biggest weakness isn't a technical vulnerability, but rather:</p>
<blockquote>
<p>Service account with overly broad permissions + long-lived token</p>
</blockquote>
<h2>Reference</h2>
<ul>
<li><a href="https://opensourcemalware.com/blog/teampcp-aquasec-com-github-org-compromise">https://opensourcemalware.com/blog/teampcp-aquasec-com-github-org-compromise</a></li>
<li><a href="https://socket.dev/blog/trivy-docker-images-compromised">https://socket.dev/blog/trivy-docker-images-compromised</a></li>
<li><a href="https://thehackernews.com/2026/03/trivy-hack-spreads-infostealer-via.html">https://thehackernews.com/2026/03/trivy-hack-spreads-infostealer-via.html</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Chuỗi tấn công supply chain Trivy lan rộng: Docker Hub, GitHub và Kubernetes đều bị ảnh hưởng]]></title><description><![CDATA[Các nhà nghiên cứu an ninh mạng đã phát hiện thêm nhiều artifact độc hại trên Docker Hub liên quan đến vụ tấn công supply chain nhắm vào công cụ quét lỗ…]]></description><link>https://lamvn7.hashnode.dev/chu-i-t-n-c-ng-supply-chain-trivy-lan-r-ng-docker-hub-github-v-kubernetes-u-b-nh-h-ng</link><guid isPermaLink="true">https://lamvn7.hashnode.dev/chu-i-t-n-c-ng-supply-chain-trivy-lan-r-ng-docker-hub-github-v-kubernetes-u-b-nh-h-ng</guid><category><![CDATA[threat intelligence]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[Docker]]></category><category><![CDATA[docker images]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[infostealer]]></category><dc:creator><![CDATA[Vũ Nhật Lâm]]></dc:creator><pubDate>Mon, 30 Mar 2026 03:41:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/7566b555-3b7e-49d2-86ab-c1e0e5919494.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Tổng quan</h2>
<p>Các nhà nghiên cứu an ninh mạng đã phát hiện thêm nhiều artifact độc hại trên Docker Hub liên quan đến vụ tấn công supply chain nhắm vào công cụ quét lỗ hổng Trivy. Sự cố này không chỉ dừng lại ở việc phát tán mã độc, mà còn mở rộng sang <strong>CI/CD pipelines</strong>, <strong>GitHub organization nội bộ</strong> và hạ tầng <strong>Kubernetes</strong>, cho thấy mức độ lan rộng nghiêm trọng.</p>
<p>Phiên bản Trivy cuối cùng được xác nhận an toàn là 0.69.3. Các phiên bản:</p>
<ul>
<li><p>0.69.4 (đã bị gỡ)</p>
</li>
<li><p>0.69.5</p>
</li>
<li><p>0.69.6</p>
</li>
</ul>
<p>đều chứa mã độc và không còn an toàn để sử dụng.</p>
<h2>Docker Hub bị lợi dụng để phát tán mã độc</h2>
<p>Các image Trivy độc hại (0.69.5, 0.69.6) được push lên Docker Hub mà không có release tương ứng trên GitHub, cho thấy dấu hiệu rõ ràng của việc bị xâm nhập.</p>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/35b23a86-a6ce-4d61-b95f-e392a7659bac.png" alt="" style="display:block;margin:0 auto" />

<p>Phân tích cho thấy các image này chứa:</p>
<ul>
<li><p>Domain C2 giả mạo: <strong>scan.aquasecurtiy.org</strong> (typosquatting)</p>
</li>
<li><p>File exfiltration: payload.enc, tpcp.tar.gz</p>
</li>
<li><p>Liên kết đến GitHub repo backdoor: <strong>tpcp-docs-*</strong></p>
</li>
</ul>
<p>Đáng chú ý, dù đã bị xóa, các image này vẫn tồn tại qua cache/mirror (ví dụ <strong>mirror.gcr.io</strong>), khiến nhiều pipeline vẫn vô tình pull về bản độc hại.</p>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/d8e1655c-49c0-433f-982c-ea108a8c7a98.png" alt="" style="display:block;margin:0 auto" />

<h2><strong>Nguồn gốc: Tấn công GitHub Actions của Trivy</strong></h2>
<p>Cuộc tấn công bắt nguồn từ việc:</p>
<ul>
<li><p>Kẻ tấn công chiếm quyền GitHub Actions của Trivy</p>
</li>
<li><p>Inject mã đánh cắp credential vào:</p>
<ul>
<li><p>aquasecurity/trivy-action</p>
</li>
<li><p>aquasecurity/setup-trivy</p>
</li>
</ul>
</li>
</ul>
<p>Payload này được thiết kế để:</p>
<ul>
<li><p>Thu thập GitHub token</p>
</li>
<li><p>Lấy SSH keys</p>
</li>
<li><p>Trích xuất cloud credentials</p>
</li>
<li><p>Thu thập biến môi trường từ CI runners</p>
</li>
</ul>
<h2>Leo thang: Từ đánh cắp token → chiếm quyền GitHub org</h2>
<p>Một bước leo thang quan trọng là việc attacker sử dụng token bị đánh cắp để chiếm quyền GitHub organization nội bộ <strong>aquasec-com</strong>.</p>
<p><strong>Hậu quả:</strong></p>
<ul>
<li><p>44 repository bị:</p>
<ul>
<li><p>Rename hàng loạt với <strong>prefix tpcp-docs-</strong></p>
</li>
<li><p>Đổi description thành: "TeamPCP Owns Aqua Security"</p>
</li>
<li><p>Public hóa toàn bộ</p>
</li>
</ul>
</li>
</ul>
<p>Đáng chú ý:</p>
<p>Toàn bộ hành động diễn ra trong ~2 phút (20:31 → 20:32 UTC, 22/03/2026) → chứng tỏ:</p>
<ul>
<li><p>Tấn công hoàn toàn tự động (script qua GitHub API)</p>
</li>
<li><p>Được chuẩn bị kỹ trước đó</p>
</li>
</ul>
<h2>Điểm yếu cốt lõi: Service account bị compromise</h2>
<p>Nguồn gốc truy vết cho thấy:</p>
<ul>
<li>Account bị compromise: <strong>Argon-DevOps-Mgt</strong></li>
</ul>
<img src="https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/8d408923-54a4-4ce1-9e32-f9b8fefee803.png" alt="" style="display:block;margin:0 auto" />

<ul>
<li><p>Đây là service account dùng token dài hạn (PAT)</p>
</li>
<li><p>Có quyền truy cập cả 2 organization:</p>
<ul>
<li><p><strong>aquasecurity (public)</strong></p>
</li>
<li><p><strong>aquasec-com (internal)</strong></p>
</li>
</ul>
</li>
</ul>
<p>=&gt; Chỉ cần 1 token bị lộ → toàn bộ hệ thống bị kiểm soát</p>
<h2>Dấu hiệu reconnaissance trước tấn công</h2>
<p>7 giờ trước khi deface:</p>
<ul>
<li><p>Attacker tạo và xóa một branch “ghost”: <strong>update-plugin-links-v0.218.2</strong></p>
</li>
<li><p>Không trigger workflow</p>
</li>
<li><p>Không tồn tại release thật</p>
</li>
</ul>
<p>=&gt; Đây là hành vi test token để kiểm tra quyền truy cập mà không gây chú ý.</p>
<h2>Mở rộng: Worm, npm packages và wiper malware</h2>
<p>Sau khi có được credential:</p>
<p><strong>1. Phát tán worm (CanisterWorm)</strong></p>
<ul>
<li><p>Lây nhiễm qua npm packages</p>
</li>
<li><p>Tự lan rộng trong hệ sinh thái dev</p>
</li>
<li><p>Dùng ICP (Internet Computer) làm C2</p>
</li>
</ul>
<p><strong>2. Wiper malware “kamikaze”</strong></p>
<p>Payload mới nguy hiểm hơn:</p>
<ul>
<li><p>Target chính: Kubernetes clusters (đặc biệt tại Iran)</p>
</li>
<li><p>Hành vi:</p>
<ul>
<li><p>Deploy DaemonSet trên toàn cluster</p>
</li>
<li><p>Node Iran:</p>
<ul>
<li><p>Xóa sạch (rm -rf /)</p>
</li>
<li><p>Force reboot</p>
</li>
</ul>
</li>
<li><p>Node khác: Cài backdoor (systemd service)</p>
</li>
</ul>
</li>
</ul>
<p><strong>3. Tấn công hạ tầng cloud</strong></p>
<p>TeamPCP còn:</p>
<ul>
<li><p>Exploit Docker API (port 2375)</p>
</li>
<li><p>Tấn công Redis, Ray dashboard</p>
</li>
<li><p>Dùng SSH key bị đánh cắp</p>
</li>
<li><p>Triển khai:</p>
<ul>
<li><p>Cryptomining Ransomware</p>
</li>
<li><p>Data exfiltration</p>
</li>
</ul>
</li>
</ul>
<h2>Tác nhân đe dọa: TeamPCP</h2>
<p><strong>TeamPCP</strong> (aka DeadCatx3, PCPcat, ShellForce) là nhóm tấn công cloud-native với khả năng ngày càng cao:</p>
<p>Đặc điểm nổi bật:</p>
<ul>
<li><p>Chuyên khai thác:</p>
<ul>
<li><p>Kubernetes</p>
</li>
<li><p>Docker</p>
</li>
<li><p>CI/CD pipelines</p>
</li>
</ul>
</li>
<li><p>Tiên phong: Worm dùng ICP làm C2</p>
</li>
<li><p>Chiến thuật:</p>
<ul>
<li><p>Supply chain attack</p>
</li>
<li><p>Credential harvesting</p>
</li>
<li><p>Automation quy mô lớn</p>
</li>
</ul>
</li>
</ul>
<h2>Phạm vi ảnh hưởng</h2>
<ul>
<li><p>Không chỉ image chính thức bị ảnh hưởng</p>
</li>
<li><p>Các image:</p>
<ul>
<li><p>CI/CD build lại từ Trivy</p>
</li>
<li><p>Fork / derivative</p>
</li>
</ul>
</li>
</ul>
<p>=&gt; Có thể đã gián tiếp nhiễm mã độc</p>
<h2>Khuyến nghị bảo mật</h2>
<p>Phía FPT Threat Intelligence đưa ra các khuyến nghị sau cần phải thực hiện ngay lập tức:</p>
<ul>
<li><p>Không sử dụng Trivy &gt; 0.69.3</p>
</li>
<li><p>Rotate toàn bộ:</p>
<ul>
<li><p>GitHub tokens</p>
</li>
<li><p>SSH keys</p>
</li>
<li><p>Cloud credentials</p>
</li>
</ul>
</li>
<li><p>Kiểm tra CI/CD runners:</p>
<ul>
<li><p>/tmp/pglog</p>
</li>
<li><p>Kết nối đến ICP domain</p>
</li>
</ul>
</li>
<li><p>Cấu hình an toàn hơn</p>
<ul>
<li><p>Pin GitHub Actions bằng commit SHA (không dùng tag)</p>
</li>
<li><p>Dùng short-lived tokens</p>
</li>
<li><p>Áp dụng least privilege</p>
</li>
<li><p>Giám sát pipeline như production</p>
</li>
</ul>
</li>
<li><p>Kiểm tra hệ thống</p>
<ul>
<li><p>Audit toàn bộ:</p>
<ul>
<li><p>CI/CD pipelines</p>
</li>
<li><p>Docker images đã pull gần đây</p>
</li>
</ul>
</li>
<li><p>Kiểm tra:</p>
<ul>
<li><p>Kubernetes clusters</p>
</li>
<li><p>Docker API public (port 2375)</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Kết luận</h2>
<p>Đây là ví dụ điển hình cho “<strong>long-tail supply chain attack</strong>”:</p>
<ul>
<li><p>Một credential bị đánh cắp từ trước</p>
</li>
<li><p>Được sử dụng lại để:</p>
<ul>
<li><p>Chiếm GitHub org</p>
</li>
<li><p>Phát tán malware</p>
</li>
<li><p>Tấn công hạ tầng cloud</p>
</li>
</ul>
</li>
</ul>
<p>Qua đó cho thấy điểm yếu lớn nhất không phải lỗ hổng kỹ thuật, mà là:</p>
<blockquote>
<p>Service account với quyền quá rộng + token tồn tại lâu</p>
</blockquote>
<h2>Tham khảo</h2>
<ul>
<li><p><a href="https://opensourcemalware.com/blog/teampcp-aquasec-com-github-org-compromise">https://opensourcemalware.com/blog/teampcp-aquasec-com-github-org-compromise</a></p>
</li>
<li><p><a href="https://socket.dev/blog/trivy-docker-images-compromised">https://socket.dev/blog/trivy-docker-images-compromised</a></p>
</li>
<li><p><a href="https://thehackernews.com/2026/03/trivy-hack-spreads-infostealer-via.html">https://thehackernews.com/2026/03/trivy-hack-spreads-infostealer-via.html</a></p>
</li>
</ul>
]]></content:encoded></item></channel></rss>