Fastify неправильно принимает неверные заголовки Content-Type, содержащие конечные символы после токена подтипа, что нарушает RFC 9110 §8.3.1 (https://httpwg.org/specs/rfc9110.html#field.content-type). Например, запрос, отправленный с Content-Type: application/json, проходит проверку и обрабатывается нормально, а не отклоняется с кодом 415 «Неподдерживаемый тип носителя». Когда используются анализаторы типов контента на основе регулярных выражений (документированная функция Fastify), искаженное значение сопоставляется с зарегистрированными анализаторами, используя полную строку, включая конечный мусор.
Это означает, что запрос с недопустимым типом контента может быть перенаправлен и обработан анализатором, к которому он никогда не должен был достигаться. Влияние: Злоумышленник может отправлять запросы с неверными по RFC заголовками Content-Type, которые обходят проверки достоверности, достигают соответствия синтаксического анализатора типа контента и обрабатываются сервером. Запросы, которые должны быть отклонены на этапе проверки, вместо этого обрабатываются так, как если бы тип контента был действительным.
Обходные пути:
Разверните правило WAF для защиты от этого. Исправление:
Исправление доступно начиная с версии 5.8.1.
Показать оригинальное описание (EN)
Fastify incorrectly accepts malformed `Content-Type` headers containing trailing characters after the subtype token, in violation of RFC 9110 §8.3.1(https://httpwg.org/specs/rfc9110.html#field.content-type). For example, a request sent with Content-Type: application/json garbage passes validation and is processed normally, rather than being rejected with 415 Unsupported Media Type. When regex-based content-type parsers are in use (a documented Fastify feature), the malformed value is matched against registered parsers using the full string including the trailing garbage. This means a request with an invalid content-type may be routed to and processed by a parser it should never have reached. Impact: An attacker can send requests with RFC-invalid Content-Type headers that bypass validity checks, reach content-type parser matching, and be processed by the server. Requests that should be rejected at the validation stage are instead handled as if the content-type were valid. Workarounds: Deploy a WAF rule to protect against this Fix: The fix is available starting with v5.8.1.
Характеристики атаки
Последствия
Строка CVSS v3.1