CVE-2026-33487

goxmldsig has validateSignature Loop Variable Capture Signature Bypass

Published Mar 26, 2026 CVSS 3.1 · 7.5 High EPSS < 1% KEV · Not listed
Description
goxmlsig provides XML Digital Signatures implemented in Go. Prior to version 1.6.0, the `validateSignature` function in `validate.go` goes through the references in the `SignedInfo` block to find one that matches the signed element's ID. In Go versions before 1.22, or when `go.mod` uses an older version, there is a loop variable capture issue. The code takes the address of the loop variable `_ref` instead of its value. As a result, if more than one reference matches the ID or if the loop logic is incorrect, the `ref` pointer will always end up pointing to the last element in the `SignedInfo.References` slice after the loop. goxmlsig version 1.6.0 contains a patch.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-479m-364c-43vc validateSignature Loop Variable Capture Signature Bypass in goxmldsig
History
Type Values Removed Values Added
First Time appeared Goxmldsig Project
Goxmldsig Project goxmldsig
CPEs cpe:2.3:a:goxmldsig_project:goxmldsig:*:*:*:*:*:*:*:*
Vendors & Products Goxmldsig Project
Goxmldsig Project goxmldsig
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Russellhaering
Russellhaering goxmldsig
Vendors & Products Russellhaering
Russellhaering goxmldsig
Type Values Removed Values Added
Description goxmlsig provides XML Digital Signatures implemented in Go. Prior to version 1.6.0, the `validateSignature` function in `validate.go` goes through the references in the `SignedInfo` block to find one that matches the signed element's ID. In Go versions before 1.22, or when `go.mod` uses an older version, there is a loop variable capture issue. The code takes the address of the loop variable `_ref` instead of its value. As a result, if more than one reference matches the ID or if the loop logic is incorrect, the `ref` pointer will always end up pointing to the last element in the `SignedInfo.References` slice after the loop. goxmlsig version 1.6.0 contains a patch.
Title goxmldsig has validateSignature Loop Variable Capture Signature Bypass
Weaknesses CWE-347
CWE-682
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Sep 9, 2026, 12:05 PM
Reserved
Mar 20, 2026, 4:16 PM
Status
Modified
Published
Mar 26, 2026, 6:16 PM
Modified
Sep 9, 2026, 1:19 PM
Severity
Important
Public date
Mar 26, 2026, 5:17 PM