HTTP/2 протоколының әртүрлі іске асыруларында 8 DoS осалдықтары анықталды

Netflix және Google зерттеушілері ашылды HTTP/2 протоколының әртүрлі іске асыруларында белгілі бір жолмен желілік сұраулар ағынын жіберу арқылы қызмет көрсетуден бас тартуға себеп болатын сегіз осалдық бар. Мәселе белгілі бір дәрежеде HTTP/2 қолдауы бар HTTP серверлерінің көпшілігіне әсер етеді және жұмысшының жадының таусылуына немесе тым көп процессор жүктемесін жасауға әкеледі. Осалдықтарды жоятын жаңартулар қазірдің өзінде ұсынылған nginx 1.16.1/1.17.3 и H2O 2.2.6, бірақ әзірге қол жетімсіз Apache httpd үшін және басқа өнімдер.

Мәселелер HTTP/2 протоколына екілік құрылымдарды, қосылымдардағы деректер ағынын шектеу жүйесін, ағынның басымдық беру механизмін және HTTP/2 қосылымында жұмыс істейтін ICMP тәрізді басқару хабарламаларының болуын пайдаланумен байланысты қиындықтардан туындаған. деңгейі (мысалы, пинг, қалпына келтіру және ағын параметрлері). Көптеген іске асырулар басқару хабарларының ағынын дұрыс шектемеді, сұрауларды өңдеу кезінде басым кезекті тиімді басқармады немесе ағынды басқару алгоритмдерінің оңтайлы емес енгізулерін пайдаланды.

Анықталған шабуыл әдістерінің көпшілігі серверге белгілі бір сұрауларды жіберуге арналған, бұл жауаптардың үлкен санын генерациялауға әкеледі. Егер клиент розеткадан деректерді оқымаса және қосылымды жаппаса, сервер жағындағы жауапты буферлеу кезегі үздіксіз толтырылады. Бұл әрекет желілік қосылымдарды өңдеу үшін кезекті басқару жүйесіне жүктеме жасайды және іске асыру мүмкіндіктеріне байланысты қол жетімді жад немесе процессор ресурстарының таусылуына әкеледі.

Анықталған осалдықтар:

  • CVE-2019-9511 (Data Dribble) – шабуылдаушы серверді деректерді 1 байт блоктарда кезекке қоюға мәжбүрлей отырып, сырғымалы терезе өлшемін және ағын басымдылығын өңдеу арқылы бірнеше ағындарға деректердің үлкен көлемін сұрайды;
  • CVE-2019-9512 (Ping Flood) – шабуылдаушы HTTP/2 қосылымы арқылы пинг хабарламаларын үздіксіз улап, жіберілген жауаптардың ішкі кезегін екінші жағынан тасқынға әкеледі;
  • CVE-2019-9513 (Resource Loop) – шабуылдаушы бірнеше сұрау ағындарын жасайды және ағындардың басымдылығын үздіксіз өзгертіп, басымдық тармағын араластырады;
  • CVE-2019-9514 (Тасқынды қалпына келтіру) – шабуылдаушы бірнеше ағын жасайды
    және сервердің RST_STREAM кадрларын жіберуіне себеп болатын әрбір ағын арқылы жарамсыз сұрауды жібереді, бірақ оларды жауап кезегін толтыру үшін қабылдамайды;

  • CVE-2019-9515 (Settings Flood) - шабуылдаушы бос "SETTINGS" кадрлар ағынын жібереді, оған жауап ретінде сервер әрбір сұраудың қабылданғанын растауы керек;
  • CVE-2019-9516 (0-Length Headers Leak) – шабуылдаушы нөл атауы және нөл мәні бар тақырыптар ағынын жібереді және сервер әрбір тақырыпты сақтау үшін жадта буферді бөледі және оны сеанс аяқталғанша шығармайды. ;
  • CVE-2019-9517 (Ішкі деректерді буферлеу) - шабуылдаушы ашылады
    Серверге деректерді шектеусіз жіберуге арналған HTTP/2 жылжымалы терезе, бірақ TCP терезесін жабық күйде ұстайды, бұл деректердің розеткаға нақты жазылуын болдырмайды. Содан кейін шабуылдаушы үлкен жауапты талап ететін сұрауларды жібереді;

  • CVE-2019-9518 (бос кадрлар тасқыны) - шабуылдаушы DATA, HEADERS, CONTINUATION немесе PUSH_PROMISE түріндегі кадрлар ағынын жібереді, бірақ бос пайдалы жүктеме және ағынды тоқтату жалаушасы жоқ. Сервер шабуылдаушы тұтынатын өткізу қабілеттілігіне сәйкес келмейтін әрбір кадрды өңдеуге уақыт жұмсайды.

Ақпарат көзі: opennet.ru

пікір қалдыру