Egress Policy Bypass via DNS over HTTPS (DoH) in Harden-Runner (Community Tier)
Harden-Runner is a CI/CD security agent that works like an EDR for GitHub Actions runners. In versions 2.15.1 and below, a DNS over HTTPS (DoH) vulnerability allows attackers to bypass egress-policy: block network restrictions by tunneling exfiltrated data through permitted HTTPS endpoints like dns.google. The attack works by encoding sensitive data (e.g., the runner's hostname) as subdomains in DoH queries, which appear as legitimate HTTPS traffic to Harden-Runner's domain-based filtering but are ultimately forwarded to an attacker-controlled domain. This effectively enables data exfiltration without directly connecting to any blocked destination. Exploitation requires the attacker to already have code execution within the GitHub Actions workflow. The issue was fixed in version 2.16.0.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-32947
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 09:28 UTC · Revision 1
Source evidence
Egress Policy Bypass via DNS over HTTPS (DoH) in Harden-Runner (Community Tier)
core-osv · Original sourcePublished 20 Mar 2026, 04:03 UTC
Harden-Runner is a CI/CD security agent that works like an EDR for GitHub Actions runners. In versions 2.15.1 and below, a DNS over HTTPS (DoH) vulnerability allows attackers to bypass egress-policy: block network restrictions by tunneling exfiltrated data through permitted HTTPS endpoints like dns.google. The attack works by encoding sensitive data (e.g., the runner's hostname) as subdomains in DoH queries, which appear as legitimate HTTPS traffic to Harden-Runner's domain-based filtering but are ultimately forwarded to an attacker-controlled domain. This effectively enables data exfiltration without directly connecting to any blocked destination. Exploitation requires the attacker to already have code execution within the GitHub Actions workflow. The issue was fixed in version 2.16.0.
osv:CVE-2026-32947
Complete source record
{
"id": "be399e830350ac17c5ec53de370e42ffbd64282c02879cec4170106bcf918ead",
"url": "https://osv.dev/vulnerability/CVE-2026-32947",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Egress Policy Bypass via DNS over HTTPS (DoH) in Harden-Runner (Community Tier)",
"summary": "Harden-Runner is a CI/CD security agent that works like an EDR for GitHub Actions runners. In versions 2.15.1 and below, a DNS over HTTPS (DoH) vulnerability allows attackers to bypass egress-policy: block network restrictions by tunneling exfiltrated data through permitted HTTPS endpoints like dns.google. The attack works by encoding sensitive data (e.g., the runner's hostname) as subdomains in DoH queries, which appear as legitimate HTTPS traffic to Harden-Runner's domain-based filtering but are ultimately forwarded to an attacker-controlled domain. This effectively enables data exfiltration without directly connecting to any blocked destination. Exploitation requires the attacker to already have code execution within the GitHub Actions workflow. The issue was fixed in version 2.16.0.",
"evidence": "osv:CVE-2026-32947",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-32947",
"aliases": [
"CVE-2026-32947",
"GHSA-46g3-37rh-v698"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/step-security/harden-runner",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.16"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v2.16.0"
},
{
"cpe": "cpe:2.3:a:stepsecurity:harden-runner:*:*:*:*:community:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "2.16.0"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v2.15.1",
"v2.15.0",
"v2.14.2",
"v2",
"v2.14.1",
"v2.14.0",
"v2.13.3",
"v2.13.2",
"v2.13.1",
"v2.13.0",
"v2.12.2",
"v2.12.1",
"v2.12.0",
"v2.11.1",
"v2.11.0",
"v2.10.4",
"v2.10.3",
"v2.10.2",
"v2.10.1",
"v2.10.0",
"v2.9.1",
"v2.9.0",
"v2.8.1",
"v2.8.0",
"v2.7.1",
"v2.7.0",
"v2.6.1",
"v2.6.0",
"v2.5.1",
"v2.5.0",
"v2.4.1",
"v2.4.0",
"v2.3.1",
"v2.3.0",
"v2.2.1",
"v2.2.0",
"v2.1.0",
"v2.0.0",
"v1.5.0",
"v1",
"v1.4.5",
"v1.4.4",
"v1.4.3",
"v1.4.2",
"v1.4.1",
"v1.4.0",
"v1.3.0",
"v0.4.0",
"v0.3.0",
"v0.2.0",
"v0.1.1",
"v0.1.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-32947.json"
}
}
],
"modified": "2026-10-28T02:30:50.577354249Z",
"provider": "osv",
"references": [
"https://github.com/step-security/harden-runner/releases/tag/v2.16.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32947.json",
"https://github.com/step-security/harden-runner/security/advisories/GHSA-46g3-37rh-v698",
"https://nvd.nist.gov/vuln/detail/CVE-2026-32947"
],
"provider_metadata": {
"cwe_ids": [
"CWE-693",
"CWE-863"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32947.json"
}
},
"related_cves": [
{
"value": "CVE-2026-32947",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 518876,
"published_at": "2026-03-20T04:03:03.687+00:00"
}