Հայտնաբերվել են 2 DoS խոցելիություններ HTTP/8 արձանագրության տարբեր իրականացումներում

Հետազոտողներ Netflix-ից և Google-ից բացահայտվեց HTTP/2 արձանագրության տարբեր իրականացումներում կան ութ խոցելիություններ, որոնք կարող են առաջացնել ծառայության մերժում` որոշակի ձևով ցանցային հարցումների հոսք ուղարկելով: Խնդիրը որոշ չափով ազդում է HTTP սերվերների մեծ մասի վրա՝ HTTP/2 աջակցությամբ և հանգեցնում է նրան, որ աշխատողը սպառվում է հիշողությունից կամ ստեղծում է CPU-ի չափազանց մեծ բեռ: Թարմացումները, որոնք վերացնում են խոցելիությունը, արդեն ներկայացված են nginx 1.16.1/1.17.3 и H2O 2.2.6, բայց առայժմ անհասանելի համար Apache httpd եւ այլ ապրանքներ.

Խնդիրները առաջացել են 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

Добавить комментарий