CVE-2026-25598

5.3 MEDIUM

📋 TL;DR

Harden-Runner GitHub Action versions before 2.14.2 fail to log outbound network connections using sendto, sendmsg, and sendmmsg system calls when configured with egress-policy: audit. This allows unauthorized network traffic to bypass security monitoring in CI/CD pipelines. Organizations using Harden-Runner Community Tier for GitHub Actions security are affected.

💻 Affected Systems

Products:
  • Harden-Runner GitHub Action (Community Tier)
Versions: All versions before 2.14.2
Operating Systems: Linux
Default Config Vulnerable: ✅ No
Notes: Only affects configurations using egress-policy: audit setting. Other egress policies (block, allow) are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could exfiltrate sensitive data, establish command-and-control channels, or pivot to internal networks without detection, compromising the entire CI/CD pipeline and potentially production systems.

🟠

Likely Case

Unauthorized data exfiltration or communication with external malicious servers goes undetected, allowing credential theft, intellectual property theft, or supply chain attacks.

🟢

If Mitigated

With proper network segmentation and additional monitoring layers, impact is limited to potential data leakage from the specific runner instance.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires ability to execute arbitrary code on GitHub Actions runners, which typically requires repository write access or compromised credentials.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.14.2

Vendor Advisory: https://github.com/step-security/harden-runner/security/advisories/GHSA-cpmj-h4f6-r6pq

Restart Required: No

Instructions:

1. Update your GitHub Actions workflow YAML file to use step-security/harden-runner@v2.14.2 or later. 2. Replace any references to older versions with v2.14.2+. 3. Commit and push the changes to trigger updated workflows.

🔧 Temporary Workarounds

Change egress policy to block

all

Switch from audit mode to block mode to prevent unauthorized outbound connections entirely

Change 'egress-policy: audit' to 'egress-policy: block' in your workflow YAML

Use allow-list mode

all

Configure specific allowed domains instead of audit mode

Set 'egress-policy: allow' and configure 'allowed-endpoints' with specific domains

🧯 If You Can't Patch

  • Implement network-level egress controls using GitHub Actions network policies or VPC restrictions
  • Add additional monitoring using GitHub Actions audit logs and third-party security tools

🔍 How to Verify

Check if Vulnerable:

Check your GitHub Actions workflow YAML files for 'uses: step-security/harden-runner@' with version lower than v2.14.2 and 'egress-policy: audit' configuration.

Check Version:

grep -r 'step-security/harden-runner@' .github/workflows/

Verify Fix Applied:

Verify workflow YAML uses step-security/harden-runner@v2.14.2 or later and test with known outbound connections to confirm logging works.

📡 Detection & Monitoring

Log Indicators:

  • Missing expected outbound connection logs in Harden-Runner audit output
  • Unexpected successful outbound connections without corresponding audit entries

Network Indicators:

  • Outbound connections from GitHub Actions runners to unexpected destinations
  • Traffic patterns inconsistent with workflow requirements

SIEM Query:

source="github-actions" AND NOT (process="harden-runner" AND event_type="egress_audit") AND dest_ip NOT IN (allowed_ips)

🔗 References

📤 Share & Export