The core of the attack was not in the PHP code itself; the PHP libraries remained benign with no install hooks or malicious network activity . Instead, the attackers injected 583 malicious GitHub Actions workflow files (
.github/workflows/*.yml) into the developer's source repositories. Each affected package version contained between 55 and 62 of these workflow files . GitHub Actions workflows are YAML files that define automated tasks, like running tests or deploying code. The attackers repurposed this legitimate automation infrastructure.
Once a fork or copy of the compromised repository triggered a workflow (e.g., on a push event), the malicious .yml file instructed the GitHub-hosted Ubuntu runner to :
43[.]228[.]157[.]68.This effectively turned every triggered workflow into a scanning and exploitation node, using GitHub's free infrastructure as a distributed platform for the attack .
The target of the campaign was CVE-2026-41940, a critical vulnerability in cPanel and WebHost Manager (WHM) .
cpsrvd basic authentication handler Authorization header containing raw newline characters. This allowed them to inject arbitrary properties into a session file, such as user=root and hasroot=1, effectively granting them root-level administrative access to the WHM interface without a valid password Once the exploit succeeded on a compromised cPanel/WHM server, the post-exploitation payload was designed to harvest a broad range of credentials and secrets. The primary targets included :
The theft of such a wide range of credentials indicates a data-agnostic, opportunistic grab for any valuable access tokens present on the compromised server .
The 583 workflow files in the 10 Packagist packages were just the initial discovery. By pivoting on attacker indicators like a shared DNSHook callback domain and code-reuse patterns, researchers uncovered a much larger operation :
This massive discrepancy strongly suggests that the attackers compromised many more developer accounts and repositories beyond the single dinushchathurya account . The campaign was not a single-point failure but a coordinated, multi-account operation. The Hacker News reported a separate, earlier Packagist supply chain attack in May 2026 that compromised 8 packages with related malicious elements
, further highlighting the ecosystem's vulnerability.
The campaign poses a persistent threat because the attacker's infrastructure is not entirely neutralized. The campaign may continue through :
43[.]228[.]157[.]68) may still be operational and actively receiving data While the original developer's Packagist account has been suspended, the sheer scale of matching workflow files (up to ~16,000) means the operation has a wide footprint that is difficult to completely eradicate .
Based on the published analysis, organizations and developers should take the following actions immediately :
push or workflow_dispatch triggers without manual review.43[.]228[.]157[.]68) and the known DNSHook callback domain .github/workflows/ files, as the PHP code itself may be clean while the attack lives entirely in the CI/CD configuration