[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fKk3VBaoGINXuSkcX_WD5Gg8VD7z6m40EqZAsiZFuyuQ":3},{"lesson":4},{"id":5,"slug":6,"article_id":7,"title":8,"body":9,"prevention":10,"framework_refs":11,"status":21,"created_at":22,"published_at":23,"article":24,"tags":28,"podcasts":47},"f9dadde3-7bea-4e12-8169-0ae5828bea3e","github-actions-blocks-risky-pr-checkouts-to-prevent-secret-theft","ed7360d0-2fa9-4234-9796-ccb45609e960","GitHub Actions Blocks Risky PR Checkouts to Prevent Secret Theft","The root cause of this risk lies in misconfigured CI\u002FCD workflows that use privileged triggers like `pull_request_target` or `workflow_run` while checking out and executing code from untrusted external pull requests — a pattern known as a 'pwn request.' This design flaw allowed attackers to craft malicious pull requests that, when processed by a privileged workflow, could exfiltrate repository secrets or gain unauthorized write access. GitHub's actions\u002Fcheckout v7 introduces a default guardrail, but it does not eliminate all attack vectors, meaning developers who fetch untrusted code through other means remain exposed. This matters because CI\u002FCD pipelines are high-value targets in software supply chain attacks, and a single compromised workflow can cascade into a full repository or organizational breach.","**Immediate actions:**\n- Upgrade all repositories to actions\u002Fcheckout v7 to benefit from the new default protection against risky PR checkouts.\n- Audit existing workflows for any use of `pull_request_target` or `workflow_run` triggers that reference or execute code from external forks.\n- Rotate any repository secrets that may have been exposed in workflows using vulnerable checkout patterns.\n\n**Long-term improvements:**\n- Adopt least-privilege principles for all CI\u002FCD workflows by scoping permissions to only what each job explicitly requires.\n- Implement a mandatory workflow review process that flags high-risk trigger configurations before merging pipeline changes.\n- Separate privileged build environments from those that execute untrusted external code using distinct runners or job boundaries.\n\n**Detection measures:**\n- Enable GitHub's secret scanning and push protection to detect accidental exposure of credentials in workflow logs or code.\n- Monitor workflow run logs for anomalous behavior such as unexpected network calls, secret access, or elevated permission usage during PR-triggered jobs.\n- Integrate SAST or CI\u002FCD security scanning tools (e.g., Semgrep, Zizmor) to continuously detect dangerous workflow patterns across all repositories.",[12,13,14,15,16,17,18,19,20],"CIS Control 4: Secure Configuration of Enterprise Assets and Software","CIS Control 16: Application Software Security","NIST SP 800-204D: DevSecOps Pipeline Security","NIST SP 800-161: Cybersecurity Supply Chain Risk Management","NIST SA-11: Developer Testing and Evaluation","NIST AC-6: Least Privilege","SLSA Supply Chain Levels for Software Artifacts (Levels 2–3)","SSDF (NIST SP 800-218): PW.1 – Design Software to Meet Security Requirements","OpenSSF Scorecard: Token-Permissions and Dangerous-Workflow checks","published","2026-06-21T20:20:19.907747+00:00","2026-06-21T20:20:19.823+00:00",{"id":7,"url":25,"slug":26,"title":27},"https:\u002F\u002Fsocket.dev\u002Fblog\u002Fgithub-actions-checkout-blocks-pull-request-target-checkouts?utm_medium=feed","github-actions-checkout-now-blocks-risky-pull-request-target-checkouts-ff5e2e","GitHub Actions Checkout Now Blocks Risky pull_request_target Checkouts",[29,35,41],{"id":30,"name":31,"slug":32,"description":33,"color":34},"1ec88fde-2d0f-4ed8-932a-33f5ccc0fdc7","Access Control","access-control","Excessive privileges, missing MFA, weak auth","#f97316",{"id":36,"name":37,"slug":38,"description":39,"color":40},"859cf0ad-a7e9-42bb-a75d-bac6511fa5d5","Configuration Management","configuration-management","Misconfigs, default credentials, exposed services","#eab308",{"id":42,"name":43,"slug":44,"description":45,"color":46},"f0c2a0af-58aa-4128-87c9-6acd30f2dc48","Supply Chain","supply-chain","Third-party risk, compromised dependencies","#8b5cf6",[48],{"id":49,"date":50,"edition":51,"title":52,"audio_url":53},"53f2c2fa-cfaa-41f3-a06b-6555f3f75087","2026-06-22","morning","ThreatNoir Morning Brief — June 22","https:\u002F\u002Fcdn.threatnoir.com\u002Fpodcasts\u002F2026-06-22\u002Fthreatnoir-morning-brief-2026-06-22.mp3"]