Description
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to version 0.37.0, cpp-httplib uses std::regex (libstdc++) to parse RFC 5987 encoded filename* values in multipart Content-Disposition headers. The regex engine in libstdc++ implements backtracking via deep recursion, consuming one stack frame per input character. An attacker can send a single HTTP POST request with a crafted filename* parameter that causes uncontrolled stack growth, resulting in a stack overflow (SIGSEGV) that crashes the server process. This issue has been patched in version 0.37.0.
Problem types
CWE-674: Uncontrolled Recursion
CWE-1333: Inefficient Regular Expression Complexity
Product status
References
github.com/...ttplib/security/advisories/GHSA-qq6v-r583-3h69
github.com/...ommit/de296af3eb5b0d5c116470e033db900e4812c5e6
github.com/yhirose/cpp-httplib/releases/tag/v0.37.0