2 DoS пропусти се идентификувани во различни имплементации на протоколот HTTP/8

Истражувачи од Нетфликс и Гугл идентификувани Постојат осум пропусти во различни имплементации на протоколот HTTP/2 кои можат да предизвикаат одбивање на услугата со испраќање проток на мрежни барања на одреден начин. Проблемот влијае на повеќето HTTP сервери со поддршка за HTTP/2 до одреден степен и резултира со тоа што работникот останува без меморија или создава премногу оптоварување на процесорот. Ажурирањата што ги елиминираат ранливостите се веќе претставени во nginx 1.16.1/1.17.3 и H2O 2.2.6, но засега недостапен за Apache httpd и други производи.

Проблемите произлегоа од компликации воведени во протоколот HTTP/2 поврзани со употреба на бинарни структури, систем за ограничување на протокот на податоци во конекциите, механизам за приоритизација на протокот и присуство на контролни пораки слични на ICMP кои работат на HTTP/2 конекцијата ниво (на пример, поставки за пинг, ресетирање и проток). Многу имплементации не го ограничија соодветно протокот на контролни пораки, не управуваа ефикасно со редот за приоритет при обработка на барањата или користеа неоптимални имплементации на алгоритми за контрола на проток.

Повеќето од идентификуваните методи за напад се сведуваат на испраќање одредени барања до серверот, што доведува до генерирање на голем број одговори. Ако клиентот не чита податоци од штекерот и не ја затвори врската, редот за тампонирање на одговор на страната на серверот постојано се пополнува. Ова однесување создава оптоварување на системот за управување со редици за обработка на мрежните врски и, во зависност од карактеристиките на имплементацијата, доведува до исцрпување на расположливата меморија или ресурси на процесорот.

Идентификувани пропусти:

  • CVE-2019-9511 (Data Dribble) - напаѓачот бара голема количина на податоци во повеќе нишки со манипулирање со големината на лизгачкиот прозорец и приоритетот на нишката, принудувајќи го серверот да ги реди податоците во блокови од 1 бајт;
  • CVE-2019-9512 (Ping Flood) - напаѓачот постојано ги труе пинг-пораките преку HTTP/2 конекција, предизвикувајќи внатрешната редица на испратени одговори да се поплави од другата страна;
  • CVE-2019-9513 (Resource Loop) - напаѓачот создава повеќекратни нишки за барања и континуирано го менува приоритетот на нишките, предизвикувајќи мешање на дрвото за приоритети;
  • CVE-2019-9514 (Reset Flood) - напаѓачот создава повеќе нишки
    и испраќа неважечко барање низ секоја нишка, предизвикувајќи серверот да испраќа RST_STREAM рамки, но не да ги прифати за да ја пополни редот за одговор;

  • CVE-2019-9515 (Settings Flood) - напаѓачот испраќа проток на празни рамки „SETTINGS“, како одговор на кои серверот мора да потврди дека го примил секое барање;
  • CVE-2019-9516 (протекување на заглавија со 0-должина) – напаѓачот испраќа проток на заглавија со нула име и нула вредност, а серверот доделува бафер во меморијата за складирање на секое заглавие и не го ослободува додека не заврши сесијата ;
  • CVE-2019-9517 (Внатрешно баферирање на податоци) - се отвора напаѓачот
    Лизгачки прозорец HTTP/2 за серверот да испраќа податоци без ограничувања, но го задржува прозорецот TCP затворен, спречувајќи ги податоците всушност да се запишуваат во штекерот. Следно, напаѓачот испраќа барања кои бараат голем одговор;

  • CVE-2019-9518 (Поплава со празни рамки) - Напаѓачот испраќа проток на рамки од типот DATA, HEADERS, CONTINUATION или PUSH_PROMISE, но со празен товар и без знаменце за завршување на протокот. Серверот троши време за обработка на секоја рамка, непропорционално на пропусниот опсег што го троши напаѓачот.

Извор: opennet.ru

Додадете коментар