Уязвимость обхода проверки HSTS в curl с использованием IDN символов
Описание
В curl существует уязвимость, связанная с обходом механизма проверки HSTS, что позволяет злоумышленнику обмануть приложение и заставить его продолжать использовать HTTP. Обычно, благодаря поддержке HSTS, curl можно настроить на использование HTTPS вместо небезопасного HTTP, даже если в URL указано HTTP. Однако механизм HSTS можно обойти, если в заданном URL адресе используются IDN символы, которые преобразуются в ASCII-эквиваленты в процессе IDN-конверсии. Например, использование символа UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) вместо стандартной ASCII точки (U+002E) .
. В результате последующие запросы некорректно определяют состояние HSTS и выполняют передачу данных в открытом виде, так как информация хранится в IDN-кодировке, но поиск ведется в IDN-декодированном виде.
Затронутые версии ПО
- curl версий до 7.87.0
Тип уязвимости
Обход HSTS
Ссылки
- ExploitThird Party Advisory
- Mailing ListThird Party Advisory
- Third Party Advisory
- Third Party Advisory
- ExploitThird Party Advisory
- Mailing ListThird Party Advisory
- Third Party Advisory
- Third Party Advisory
Уязвимые конфигурации
Одно из
Одно из
EPSS
7.5 High
CVSS3
Дефекты
Связанные уязвимости
A vulnerability exists in curl <7.87.0 HSTS check that could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. However, the HSTS mechanism could be bypassed if the host name in the given URL first uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) instead of the common ASCII full stop (U+002E) `.`. Then in a subsequent request, it does not detect the HSTS state and makes a clear text transfer. Because it would store the info IDN encoded but look for it IDN decoded.
A vulnerability exists in curl <7.87.0 HSTS check that could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. However, the HSTS mechanism could be bypassed if the host name in the given URL first uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) instead of the common ASCII full stop (U+002E) `.`. Then in a subsequent request, it does not detect the HSTS state and makes a clear text transfer. Because it would store the info IDN encoded but look for it IDN decoded.
A vulnerability exists in curl <7.87.0 HSTS check that could be bypass ...
EPSS
7.5 High
CVSS3