Разделение HTTP-ответа - это форма уязвимости веб-приложения , возникающая из-за того, что приложение или его среда не могут должным образом очистить входные значения. Его можно использовать для выполнения атак с использованием межсайтовых сценариев , межпользовательского искажения, заражения веб-кешем и аналогичных эксплойтов .
Атака состоит в том, чтобы заставить сервер распечатать последовательность перевода строки возврата каретки (CR, ASCII 0x0D ) (LF, ASCII 0x0A ), за которой следует контент, предоставленный злоумышленником в разделе заголовка своего ответа, обычно путем включения их в поля ввода, отправленные приложение. В соответствии со стандартом HTTP (RFC 2616) заголовки разделяются одним CRLF, а заголовки ответа отделяются от его тела двумя. Следовательно, отказ от удаления CR и LF позволяет злоумышленнику установить произвольные заголовки, взять под контроль тело или разбить ответ на два или более отдельных ответа - отсюда и название.
Профилактика
Общее решение - кодировать строки URL перед включением в заголовки HTTP, такие как Location или Set-Cookie .
Типичные примеры очистки включают приведение к целым числам или агрессивную замену регулярных выражений . Хотя разделение ответов не является специфическим для PHP , интерпретатор PHP содержит защиту от атак, начиная с версий 4.4.2 и 5.1.2. [1]
Рекомендации
- ^ «PHP: PHP 5.1.2. Объявление о выпуске» . Группа PHP . Проверено 13 ноября 2014 .
Внешние ссылки
- Разделяй и властвуй - разделение HTTP-ответа, атаки с отравлением веб-кеша и связанные темы. Амит Кляйн, 2004.
- Целевое веб-приложение, уязвимое для инъекции заголовка HTTP
- Разделение HTTP-ответа, Консорциум безопасности веб-приложений
- Сканер Wapiti с открытым исходным кодом XSS, заголовков, SQL и LDAP-инъекций
- LWN статья
- CWE-113: Ошибка очистки последовательностей CRLF в заголовках HTTP («Разделение ответа HTTP»)
- Атака с разделением HTTP-ответа - OWASP
- Внедрение CRLF - OWASP