Հետազոտողներ Netflix-ից և Google-ից
Խնդիրները առաջացել են HTTP/2 արձանագրության մեջ մտցված բարդություններից՝ կապված երկուական կառուցվածքների օգտագործման, կապերի ներսում տվյալների հոսքերի սահմանափակման համակարգի, հոսքերի առաջնահերթության մեխանիզմի և HTTP/2 միացումում գործող ICMP-ի նման հսկիչ հաղորդագրությունների առկայության հետ: մակարդակը (օրինակ՝ ping, վերականգնում և հոսքի կարգավորումներ): Շատ իրականացումներ պատշաճ կերպով չէին սահմանափակում հսկիչ հաղորդագրությունների հոսքը, չէին արդյունավետորեն կառավարում առաջնահերթության հերթը, երբ մշակվում էին հարցումները, կամ օգտագործում էին հոսքի վերահսկման ալգորիթմների ոչ օպտիմալ իրականացումները:
Հայտնաբերված հարձակման մեթոդների մեծ մասը հանգում է սերվերին որոշակի հարցումներ ուղարկելուն, ինչը հանգեցնում է մեծ թվով պատասխանների առաջացման: Եթե հաճախորդը չի կարդում տվյալները վարդակից և չի փակում կապը, ապա սերվերի կողմից պատասխանի բուֆերային հերթը անընդհատ լցվում է: Այս վարքագիծը բեռ է ստեղծում հերթերի կառավարման համակարգի վրա ցանցային կապերի մշակման համար և, կախված իրականացման առանձնահատկություններից, հանգեցնում է առկա հիշողության կամ պրոցեսորի ռեսուրսների սպառմանը:
Հայտնաբերված խոցելիություններ.
- CVE-2019-9511 (Data Dribble) - հարձակվողը պահանջում է մեծ քանակությամբ տվյալներ մի քանի շղթաների մեջ՝ շահարկելով լոգարիթմական պատուհանի չափը և շղթայի առաջնահերթությունը՝ ստիպելով սերվերին հերթագրել տվյալները 1 բայթ բլոկների մեջ.
- CVE-2019-9512 (Ping Flood) - հարձակվողը շարունակաբար թունավորում է ping հաղորդագրությունները HTTP/2 կապի միջոցով՝ առաջացնելով ուղարկված պատասխանների ներքին հերթը դեպի ջրհեղեղ մյուս կողմից.
- CVE-2019-9513 (Resource Loop) - հարձակվողը ստեղծում է բազմաթիվ հարցումների շղթաներ և անընդհատ փոխում է շղթաների առաջնայնությունը՝ առաջնահերթության ծառի խառնման պատճառ դառնալով.
- CVE-2019-9514 (Վերականգնել ջրհեղեղը) - հարձակվողը ստեղծում է բազմաթիվ թելեր
և ուղարկում է անվավեր հարցում յուրաքանչյուր շղթայի միջոցով՝ ստիպելով սերվերին ուղարկել 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 տիպի շրջանակների հոսք, բայց դատարկ բեռնվածությամբ և առանց հոսքի դադարեցման դրոշի: Սերվերը ժամանակ է ծախսում յուրաքանչյուր շրջանակի մշակման վրա, որը անհամաչափ է հարձակվողի կողմից սպառված թողունակությանը:
Source: opennet.ru