A malicious Packagist development-version campaign tied to the compromised dinushchathurya repositories used GitHub Actions workflows to turn GitHub-hosted runners into disposable infrastructure for scanning and exploiting cPanel and WHM systems, including CVE-2026-41940. The operation also harvested credentials, configuration data, and tokens, with evidence showing the campaign extends far beyond one maintainer and uses infrastructure at 43[.]228[.]157[.]68 and DNSHook callbacks to coordinate exfiltration. #dinushchathurya #cPanel #WHM #CVE-2026-41940 #GitHubActions #DNSHook
Keypoints
- Malicious content was embedded in GitHub Actions workflow files, not in the PHP package code itself.
- Packagist synchronized malicious development versions across all ten packages linked to the compromised developer account.
- Each affected package version contained dozens of malicious workflows, totaling 583 workflow files across the campaign sample.
- The workflows launched GitHub-hosted Ubuntu runners, downloaded payloads from 43[.]228[.]157[.]68, and performed scanning and exploitation tasks.
- The payload targeted cPanel and WHM systems and attempted exploitation of CVE-2026-41940 while searching for credentials and secrets.
- Exfiltration used HTTP POST requests, heartbeat callbacks, and staged file uploads to report results back to attacker infrastructure.
- GitHub searches found thousands of matching workflow files, indicating a broader campaign affecting multiple repositories beyond the original Packagist packages.
MITRE Techniques
- [T1195.001 ] Supply Chain Compromise: Compromise Software Dependencies and Development Tools â The attacker abused compromised repository content and Packagist synchronization to distribute malicious workflow files (âPackagist automatically synchronized malicious development versions across all ten packagesâ).
- [T1584.006 ] Compromise Infrastructure: Web Services â The campaign relied on attacker-controlled web infrastructure for payload delivery and collection (âdownload a corresponding Linux scanning and exploitation payload from the threat actor-controlled command and control serverâ).
- [T1059.004 ] Command and Scripting Interpreter: Unix Shell â The workflow executed Linux payloads and shell commands on GitHub-hosted runners (âcurl⌠wget⌠chmod 755 /tmp/.svcâ).
- [T1105 ] Ingress Tool Transfer â The payload was downloaded from attacker infrastructure to the runner (âdownload a corresponding Linux scanning and exploitation payload from 43[.]228[.]157[.]68â).
- [T1082 ] System Information Discovery â The payload detected runner processor architecture before selecting the correct binary (âdetect each runnerâs processor architectureâ).
- [T1496.002 ] Resource Hijacking: Bandwidth Hijacking â GitHub-hosted runners were used as disposable compute and network resources for attack operations (âuse their compute and internet connectivity to execute the payload, scan targetsâ).
- [T1595.002 ] Active Scanning: Vulnerability Scanning â The payload scanned broad internet-facing targets and searched for exposed services (âscans a broad range of internet-facing systemsâ).
- [T1190 ] Exploit Public-Facing Application â The payload targeted cPanel and WHM and attempted to exploit CVE-2026-41940 (ââexploit CVE-2026-41940â).
- [T1552.001 ] Unsecured Credentials: Credentials in Files â The payload searched for credentials, tokens, keys, and configuration data stored on servers (âsearches compromised servers for credentials, configuration files, environment variablesâ).
- [T1005 ] Data from Local System â Data was collected from compromised servers and runner outputs (âsearches compromised servers for⌠database access, SSH materialâ).
- [T1119 ] Automated Collection â The workflows continuously monitored result files and collected newly written data automatically (âmonitors files containing exploitation results⌠uploads newly written contentâ).
- [T1074.001 ] Data Staged: Local Data Staging â Results were buffered and uploaded in chunks, with offsets tracked to avoid duplicates (âuploads newly collected results through HTTP POST requestsâ).
- [T1071.001 ] Application Layer Protocol: Web Protocols â Heartbeats and results were sent over HTTP POST (âcurl -s -X POST â$PANEL/api/github-heartbeatââ).
- [T1071.004 ] Application Layer Protocol: DNS â DNS lookups were used as callbacks to confirm execution (ânslookup ⌠dnshook[.]siteâ).
- [T1020 ] Automated Exfiltration â Collected data was automatically sent back to attacker infrastructure in chunks (âThe workflow tracks line offsets⌠live collection transmitsâ).
- [T1041 ] Exfiltration Over C2 Channel â Stolen data and telemetry were sent to the command-and-control server (âupload newly collected results through HTTP POST requestsâ).
Indicators of Compromise
- [IP address ] attacker infrastructure and payload delivery host â 43[.]228[.]157[.]68, 43[.]228[.]157[.]68:80
- [URL paths ] payload delivery, heartbeat, and exfiltration endpoints â /api/dl/386, /api/dl/amd64, /api/github-heartbeat, /api/github-results
- [Domain ] DNS callback used for execution confirmation â f5b0b742-240a-4811-8a5b-b0ba6060685d.dnshook[.]site
- [File hash ] recovered AMD64 payload hash â 22f721fd3a81d2e27cbf90a122bb977f630c50b79daa98350f0e57b04dfa81f1
- [Package names ] affected Packagist packages linked to the compromised maintainer â dinushchathurya/srilankan-local-authorities, dinushchathurya/websmslk
- [GitHub/Packagist accounts ] compromised maintainer identities referenced by the campaign â dinushchathurya, https://github.com/dinushchathurya/
Read more: https://socket.dev/blog/github-actions-abuse-powers-cpanel-and-whm-exploitation