Skip to content
Heist/ feed
Back to feed
Medium

webhookd: Unrestricted HTTP Header to Shell Variable Injection

Type: advisorySources: OSV

webhookd is a minimalist webhook server that triggers shell scripts and external processes through HTTP requests. Prior to 1.22.0, webhookd deployments without htpasswd authentication forwarded all incoming HTTP headers through HTTPParamsToShellVars in pkg/api/index.go into the hook script environment without an allowlist. When an upstream reverse proxy did not strip a client-supplied X-WebAuthn-User header and a hook script trusted that variable for identity or privilege, a remote unauthenticated attacker could spoof another user, bypass script security controls, and access or modify resources available to the impersonated identity. This issue is fixed in version 1.22.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59157
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 06:02 UTC · Revision 1

Source evidence

webhookd: Unrestricted HTTP Header to Shell Variable Injection

core-osv · Original source

Published 15 Sept 2026, 15:46 UTC

webhookd is a minimalist webhook server that triggers shell scripts and external processes through HTTP requests. Prior to 1.22.0, webhookd deployments without htpasswd authentication forwarded all incoming HTTP headers through HTTPParamsToShellVars in pkg/api/index.go into the hook script environment without an allowlist. When an upstream reverse proxy did not strip a client-supplied X-WebAuthn-User header and a hook script trusted that variable for identity or privilege, a remote unauthenticated attacker could spoof another user, bypass script security controls, and access or modify resources available to the impersonated identity. This issue is fixed in version 1.22.0.

osv:CVE-2026-59157
Complete source record
{
  "id": "1144dedf95c11acf2daf57b2dcc2b81893660c749089843e464730e067517906",
  "url": "https://osv.dev/vulnerability/CVE-2026-59157",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "webhookd: Unrestricted HTTP Header to Shell Variable Injection",
    "summary": "webhookd is a minimalist webhook server that triggers shell scripts and external processes through HTTP requests. Prior to 1.22.0, webhookd deployments without htpasswd authentication forwarded all incoming HTTP headers through HTTPParamsToShellVars in pkg/api/index.go into the hook script environment without an allowlist. When an upstream reverse proxy did not strip a client-supplied X-WebAuthn-User header and a hook script trusted that variable for identity or privilege, a remote unauthenticated attacker could spoof another user, bypass script security controls, and access or modify resources available to the impersonated identity. This issue is fixed in version 1.22.0.",
    "evidence": "osv:CVE-2026-59157",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-59157",
      "aliases": [
        "CVE-2026-59157",
        "GHSA-v25g-mvwr-f5fp",
        "GO-2026-6451"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/ncarlier/webhookd",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "5ac66677bf7224191f1dfc51a875b09187d10beb"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.22"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5ac66677bf7224191f1dfc51a875b09187d10beb"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5ac66677bf7224191f1dfc51a875b09187d10beb"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.22.0"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.22.0"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.21.0",
            "v1.20.2",
            "v1.20.1",
            "v1.20.0",
            "v1.19.0",
            "v1.18.0",
            "v1.17.3",
            "v1.17.2",
            "v1.17.1",
            "v1.16.0",
            "v1.15.1",
            "v1.15.0",
            "v1.14.0",
            "v1.13.0",
            "v1.12.0",
            "v1.11.0",
            "v1.10.0",
            "v1.9.0",
            "1.8.0",
            "v1.7.0",
            "v1.6.1",
            "v1.6.0",
            "v1.5.1",
            "v1.5.0",
            "v1.4.0",
            "v1.3.2",
            "v1.3.1",
            "v1.3.0",
            "v1.2.1",
            "v1.2.0",
            "v1.1.0",
            "v1.0.1",
            "v1.0.0",
            "v0.0.3",
            "v0.0.2",
            "v0.0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-59157.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:42.903612949Z",
      "provider": "osv",
      "references": [
        "https://github.com/ncarlier/webhookd/releases/tag/v1.22.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59157.json",
        "https://github.com/ncarlier/webhookd/security/advisories/GHSA-v25g-mvwr-f5fp",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-59157",
        "https://github.com/ncarlier/webhookd/commit/5ac66677bf7224191f1dfc51a875b09187d10beb",
        "https://github.com/ncarlier/webhookd/pull/121"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-290",
          "CWE-807"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59157.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59157",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 510934,
  "published_at": "2026-09-15T15:46:35.418+00:00"
}