80+ Critical CVEs — GitHub Actions, JWT, and the AI Agent That Attacked Datadog
Your CI/CD Pipeline Is Now the #1 Attack Vector
Three independent critical RCEs in GitHub Actions workflows landed this week — not variations of one bug, but three separate exploitation patterns confirming a mature attack class. Jellyfin's code-quality.yml (CVE-2026-31852, CVSS 10.0) runs forked PR code in privileged context via pull_request_target. Python Black's formatter (CVE-2026-31900, CVSS 9.8) achieves RCE via a poisoned pyproject.toml parsed during CI formatting. And Xygeni-action (CVE-2026-31976, CVSS 9.8) — ironically a CI/CD security action — was susceptible to tag poisoning during a March 2026 maintenance window.
The attack pattern is clear: compromise the developer toolchain, not the application. If your workflows check out PR code and run any tool against it, you have exposure.
Datadog's BewAIre system provided the first documented case of an AI agent autonomously attacking open-source repositories. The agent "hackerbot-claw" targeted GitHub Actions workflows via command injection embedded in filenames. Detection caught it, but what actually contained the blast radius was boring defense-in-depth: org-wide rulesets preventing direct pushes to main, GITHUB_TOKEN scoped to read-only, and no secrets accessible to PR-triggered workflows.
JWT/JWKS Validation Is Systemically Broken
Three unrelated products — Unity Catalog (CVE-2026-27478, CVSS 9.1), Authlib (CVE-2026-27962, CVSS 9.1), and Centrifugo (CVE-2026-32301, CVSS 9.3) — share the same design-level failure: trusting attacker-controllable JWKS endpoints for token validation. Unity Catalog doesn't validate trusted issuers. Authlib allows JWK header injection for token forgery. Centrifugo follows dynamic JWKS URLs from JWT claims, enabling SSRF.
The fix is architectural: JWKS endpoints must be statically configured. Never derive the JWKS URL from the token being validated — that's circular trust. Audit every service that validates JWTs: API gateways, service mesh sidecars, custom auth middleware.
Additional High-Priority Vulnerabilities
| Component | CVE | CVSS | Impact |
|---|---|---|---|
| Simple-Git (npm) | New bypass | 9.8 | Full RCE, bypasses all prior fixes |
| Apollo Federation | CVE-2026-32621 | 9.9 | Prototype pollution at GraphQL gateway |
| Argo Workflows | Pre-4.0.2 | 9.8 | Sensitive template leak without auth |
| kubectl-mcp-server | CVE-2025-69902 | 9.8 | Command injection — K8s control plane RCE |
| Semantic Kernel | CVE-2026-26030 | 9.9 | Vector store filter bypass, cross-tenant RAG |
| Wazuh SIEM | CVE-2026-25769 | 9.1 | Root escalation — your SIEM is the vector |
The kubectl-mcp-server vulnerability deserves special attention: an LLM calling kubectl operations through MCP can be tricked into arbitrary shell commands on your Kubernetes control plane. The Wazuh RCE means a compromised endpoint being monitored can pivot to owning the SIEM master. When your security tools are the attack surface, the 'add more tools' approach hits a wall.
Ramp independently validated autonomous security scanning at scale: their multi-agent pipeline (coordinator → parallel detectors → adversarial manager → validator → fixer) found ~100 novel issues in 6 days with zero humans. The adversarial agent stage — which argues against each finding before validation — accounts for ~40% false positive reduction. Praetorian's newly released Trajan tool (32 detection + 24 attack plugins across GitHub Actions, GitLab CI, Azure DevOps, Jenkins) gives you a practical way to assess your own exposure today.
What to do
Audit all GitHub Actions workflows for fork-PR code execution — specifically any workflow triggered by pull_request_target that checks out PR code and runs formatters, linters, or test suites. Pin all Actions to commit SHAs, not tags.
Run `npm ls simple-git` and audit JWKS endpoint resolution across all services that validate JWTs — ensure endpoints are pinned to trusted issuers, not derived from token headers.
Upgrade Apollo Federation to 2.9.6+/2.10.5+/2.11.6+/2.12.3+/2.13.2+ and Argo Workflows to 4.0.2+/3.7.11+.
Run Praetorian's Trajan against your CI/CD pipelines this sprint to baseline your exposure across GitHub Actions, GitLab CI, and Jenkins.