Raw vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XSummary
CVE-2026-31976 is a critical-severity Embedded Malicious Code (CWE-506) vulnerability in Xygeni Xygeni-Action. Its CVSS base score is 9.3 (Critical).
Operationally, exploitation aligns with the MITRE ATT&CK technique Embedded Payloads (T1027.009); ranked at the 40th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.
The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SC-44 (Detonation Chambers) — see the control section below for these in your framework.
Deeper analysis AI-assisted summary
Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.
CVE-2026-31976 is a supply chain compromise vulnerability affecting the xygeni-action GitHub Action, specifically the mutable v5 tag of the xygeni/xygeni-action repository. On March 3, 2026, an attacker with compromised credentials created pull requests (#46, #47, #48) injecting obfuscated shell code into action.yml. Although branch protection rules prevented these PRs from merging into the main branch, the attacker used compromised GitHub App credentials to retag the v5 reference to point at the malicious commit (4bf1d4e19ad81a3e8d4063755ae0f482dd3baf12), which persisted in the repository's git object store. This tag poisoning (CWE-506) enabled remote code execution for any GitHub Actions workflow referencing xygeni/xygeni-action@v5, with a CVSS v3.1 score of 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
Any GitHub Actions workflow referencing xygeni/xygeni-action@v5 between approximately March 3 and March 10, 2026, would fetch and execute the malicious commit, deploying a command-and-control (C2) implant. This granted the attacker arbitrary command execution on the affected CI runner for up to 180 seconds per workflow run, allowing potential data exfiltration, persistence, or further compromise of the runner environment. Exploitation required no privileges beyond public access to the action, targeting users of the xygeni-action in their workflows.
Mitigation details are available in the GitHub security advisory (GHSA-f8q5-h5qh-33mh) and issue tracker (#54) at https://github.com/xygeni/xygeni-action/security/advisories/GHSA-f8q5-h5qh-33mh and https://github.com/xygeni/xygeni-action/issues/54, published following the incident detection on March 11, 2026.
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2026-11331
Vulnerability Data
xygeni-action is the GitHub Action for Xygeni Scanner. On March 3, 2026, an attacker with access to compromised credentials created a series of pull requests (#46, #47, #48) injecting obfuscated shell code into action.yml. The PRs were blocked by branch…
more
protection rules and never merged into the main branch. However, the attacker used the compromised GitHub App credentials to move the mutable v5 tag to point at the malicious commit (4bf1d4e19ad81a3e8d4063755ae0f482dd3baf12) from one of the unmerged PRs. This commit remained in the repository's git object store, and any workflow referencing @v5 would fetch and execute it. This is a supply chain compromise via tag poisoning. Any GitHub Actions workflow referencing xygeni/xygeni-action@v5 during the affected window (approximately March 3–10, 2026) executed a C2 implant that granted the attacker arbitrary command execution on the CI runner for up to 180 seconds per workflow run.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise Techniques
CVEs Like This One
Affected Assets
Mitigating Controls
Control response
—
—
- 3 hardening rules · 2 OS baselines
—
Mitigating Controls (NIST 800-53 r5) AI
Developer testing and evaluation can discover embedded malicious code before release.
Detonation chambers can reveal embedded malicious code through controlled execution analysis.
Integrity verification tools directly detect unauthorized or malicious code insertions.
Tamper-resistance and detection mechanisms identify malicious code introduced via the supply chain.
Component authenticity requirements reduce the chance malicious code is embedded by developers or suppliers.
Component authenticity controls stop introduction of malicious or counterfeit code into the product.
Mitigating Controls (NIST CSF 2.0) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.
Assessing authenticity and integrity before acquisition catches embedded malicious code.
Secure SDLC practices directly prevent introduction of malicious code during development.
Due diligence prior to supplier relationships helps avoid sources of embedded malicious code.
Supplier risk assessment reduces likelihood of receiving products containing malicious code.
Pre-acquisition assessment of critical suppliers mitigates risk of malicious code in procured software.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
Requiring suppliers to furnish component lists, attestations, and cryptographic verification of delivered artefacts makes it harder for an attacker to embed hidden malicious code that would otherwise go undetected through the supply chain.
Checks that executed code has not been tampered with and monitoring for malware-associated activity reduce the likelihood that hidden malicious code remains active.
Banning unapproved or unknown software and requiring testing plus authorization reduces the chance that hidden malicious code will be introduced into production environments.
Hardening callouts derived
Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (authoritative rows only; rows rated `none` are excluded).
Oracle Linux 9 (1 rule)
- V-271452 OL 9 must use a Linux Security Module configured to enforce limits on system services. prevents CWE-506
RHEL 9 (1 rule)
- V-258078 RHEL 9 must use a Linux Security Module configured to enforce limits on system services. prevents CWE-506