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 сыяктуу башкаруу билдирүүлөрүнүн болушунан келип чыккан. деңгээл (мисалы, пинг, баштапкы абалга келтирүү жана агым орнотуулары). Көптөгөн ишке ашыруулар башкаруу билдирүүлөрүнүн агымын талаптагыдай чектеген эмес, суроо-талаптарды иштеп чыгууда артыкчылыктуу кезекти эффективдүү башкарган эмес, же агымды башкаруу алгоритмдеринин оптималдуу эмес ишке ашырууларын колдонушкан.

Белгиленген чабуул ыкмаларынын көбү серверге белгилүү бир суроо-талаптарды жөнөтүү үчүн келип, көп сандагы жооптордун пайда болушуна алып келет. Эгерде кардар розеткадан маалыматтарды окубаса жана байланышты жаппаса, сервер тарабындагы жооп буферлөө кезеги тынымсыз толуп турат. Бул жүрүм-турум тармак байланыштарын иштетүү үчүн кезекти башкаруу системасына жүктү жаратат жана ишке ашыруунун өзгөчөлүктөрүнө жараша жеткиликтүү эстутумдун же CPU ресурстарынын түгөнүшүнө алып келет.

Белгиленген кемчиликтер:

  • CVE-2019-9511 (Data Dribble) - чабуулчу серверди 1 байт блокторго берилиштерди кезекке коюуга мажбурлап, жылма терезенин өлчөмүн жана жиптин приоритеттерин манипуляциялоо жолу менен бир нече жиптерге чоң көлөмдөгү маалыматтарды сурайт;
  • CVE-2019-9512 (Ping Flood) - чабуулчу HTTP/2 туташуусу аркылуу пинг-билдирүүлөрдү үзгүлтүксүз ууландырат, бул жөнөтүлгөн жооптордун ички кезегин башка тарапка каптап кетишине алып келет;
  • CVE-2019-9513 (ресурстук цикл) - чабуулчу бир нече суроо жиптерин түзүп, жиптердин приоритеттерин тынымсыз өзгөртүп, артыкчылык дарагынын аралашуусуна алып келет;
  • CVE-2019-9514 (Топконду калыбына келтирүү) - чабуулчу бир нече жипти түзөт
    жана ар бир жип аркылуу жараксыз суроо-талапты жөнөтөт, бул сервердин RST_STREAM фреймдерин жөнөтүүгө алып келет, бирок аларды жооп кезегин толтурууга кабыл албайт;

  • CVE-2019-9515 (Орнотуулар ташкыны) - чабуулчу бош "SETTINGS" кадрлардын агымын жөнөтөт, ага жооп катары сервер ар бир суроо-талаптын кабыл алынганын ырасташы керек;
  • CVE-2019-9516 (0-Length Headers Leak) – чабуулчу нөл аталышы жана нөл мааниси бар аталыштардын агымын жөнөтөт, ал эми сервер ар бир теманы сактоо үчүн эстутумда буферди бөлөт жана аны сессия аяктаганга чейин чыгарбайт. ;
  • CVE-2019-9517 (Ички берилиштерди буферлөө) - чабуулчу ачылат
    Серверге маалыматтарды чектөөсүз жөнөтүү үчүн HTTP/2 жылма терезеси, бирок TCP терезесин жабык кармап, маалыматтардын чындыгында розеткага жазылышына жол бербейт. Андан кийин, чабуулчу чоң жооп талап кылган суроо-талаптарды жөнөтөт;

  • CVE-2019-9518 (Бош алкактардын ташкыны) - Чабуулчу DATA, HEADERS, CONTINUATION же PUSH_PROMISE түрүндөгү кадрлардын агымын жөнөтөт, бирок бош жүк жана агымды токтотуу желекчеси жок. Сервер ар бир кадрды иштетүүгө убакыт коротот, бул чабуулчу керектеген өткөрүү жөндөмдүүлүгүнө пропорционалдуу эмес.

Source: opennet.ru

Комментарий кошуу