cpp-httplib — это однофайловая кроссплатформенная библиотека HTTP/HTTPS C++11, предназначенная только для заголовков. До версии 0.37.0 cpp-httplib использовал std::regex (libstdc++) для анализа значений имени файла*, закодированных в соответствии с RFC 5987, в составных заголовках Content-Disposition. Механизм регулярных выражений в libstdc++ реализует возврат с помощью глубокой рекурсии, потребляя один кадр стека на каждый входной символ.
Злоумышленник может отправить один HTTP-запрос POST со специально созданным параметром имени файла*, который вызывает неконтролируемый рост стека, что приводит к переполнению стека (SIGSEGV), что приводит к сбою серверного процесса. Эта проблема исправлена в версии 0.37.0.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1