projects/miniupnp: add OSS-Fuzz integration for minixml, UPnP reply, IGD desc, and port listing parsers#15590
projects/miniupnp: add OSS-Fuzz integration for minixml, UPnP reply, IGD desc, and port listing parsers#15590XananasX7 wants to merge 3 commits into
Conversation
…IGD desc, and port listing parsers miniupnp/miniupnpc is the most widely-used open-source UPnP client library, present in countless desktop applications, network tools, and embedded devices. It has no existing OSS-Fuzz integration. Attack surface justification: all four parsers process XML/text data returned by UPnP-capable routers over HTTP/SSDP. In a network-adjacent threat model (same subnet as a rogue or compromised router), an attacker can fully control the content of UPnP responses that these parsers process. Fuzz targets (4): - fuzz_minixml: SAX XML parser (minixml.c) — core XML parsing for all UPnP responses - fuzz_upnpreplyparse: SOAP reply key-value parser — processes AddPortMapping etc. responses - fuzz_igd_desc_parse: IGD device description parser — processes the XML UPnP description fetched over HTTP from the router at startup - fuzz_portlistingparse: GetListOfPortMappings response parser All harnesses use real test XML files from the repository as seed corpus.
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
XananasX7 is integrating a new project, but the |
|
Good catch — missing |
|
Added |
|
Thanks for the detailed feedback @DavidKorczynski — addressing all 5 points:
The remaining open PRs here cover genuinely new projects not yet in OSS-Fuzz. Happy to address any other issues on those. |
ce71ad7 to
eaa2cbd
Compare
|
Reauthored all commits with the correct email (mehdiananas007@gmail.com) matching the signed Google Individual CLA. The CLA bot should now verify successfully. |
Summary
miniupnp/miniupnpc is the most widely-deployed open-source UPnP NAT traversal client library. It is used by BitTorrent clients (Transmission, qBittorrent, libtorrent), VPN tools, and is included in many Linux distributions. It currently has no OSS-Fuzz coverage.
Attack surface
All four parsers process data from UPnP-capable routers over HTTP/SSDP. In a network-adjacent threat model (same subnet as a rogue or compromised router), an attacker controls the full content of responses these parsers handle:
fuzz_minixml) — SAX XML parser used for all UPnP XML responsesfuzz_upnpreplyparse) — SOAP reply key-value parser for UPnP action responsesfuzz_igd_desc_parse) — IGD device description XML parser (fetched over HTTP at startup)fuzz_portlistingparse) — GetListOfPortMappings XML response parserSeed corpus
Test XML/namevalue files shipped in the repository (
testreplyparse/,testdesc/) are bundled as seed corpora.I have read the CLA Document and I hereby sign the CLA