Հեռակա շահագործվող խոցելիություն qmail փոստի սերվերում

Անվտանգության հետազոտողներ Qualys-ից ցույց տվեց առիթ շահագործման qmail փոստի սերվերի խոցելիությունը, հայտնի է դեռևս 2005 թվականին (CVE-2005-1513), բայց մնաց առանց կարկատման, քանի որ qmail-ի հեղինակը պնդում էր, որ անիրատեսական է ստեղծել աշխատանքային շահագործում, որը կարող է օգտագործվել լռելյայն կազմաձևով համակարգերի վրա հարձակվելու համար: Qualys-ը կարողացավ պատրաստել էքսպոիտ, որը հերքում է այս ենթադրությունը և թույլ է տալիս սերվերում սկսել կոդի հեռակա կատարումը՝ ուղարկելով հատուկ մշակված հաղորդագրություն:

Խնդիրն առաջանում է stralloc_readyplus() ֆունկցիայի ամբողջ թվի արտահոսքի պատճառով, որը կարող է առաջանալ շատ մեծ հաղորդագրություն մշակելիս։ Գործողությունը պահանջում էր 64-բիթանոց համակարգ՝ ավելի քան 4 ԳԲ վիրտուալ հիշողությամբ: Երբ խոցելիությունը ի սկզբանե վերլուծվեց 2005 թվականին, Դանիել Ջ. Բերնշտեյնը պնդում էր, որ կոդում առկա ենթադրությունը, որ հատկացված զանգվածի չափը միշտ 32-բիթանոց արժեքի սահմաններում է, հիմնված է այն փաստի վրա, որ ոչ ոք չի տրամադրում գիգաբայթ հիշողություն յուրաքանչյուր գործընթացին: Վերջին 15 տարիների ընթացքում սերվերների վրա 64-բիթանոց համակարգերը փոխարինել են 32-բիթանոց համակարգերին, և մատակարարվող հիշողության քանակն ու ցանցի թողունակությունը կտրուկ աճել են:

qmail փաթեթի սպասարկողները հաշվի են առել Bernstein-ի նշումը և qmail-smtpd գործընթացը սկսելիս սահմանափակել են հասանելի հիշողությունը (օրինակ, Debian 10-ում սահմանաչափը սահմանված է 7 ՄԲ)։ Բայց Qualys-ի ինժեներները պարզեցին, որ դա բավարար չէ, և, բացի qmail-smtpd-ից, կարող է իրականացվել հեռահար հարձակում qmail-local գործընթացի վրա, որն անսահմանափակ մնաց բոլոր փորձարկված փաթեթներում: Որպես ապացույց, պատրաստվեց exploit-ի նախատիպը, որը հարմար էր կանխադրված կոնֆիգուրացիայի մեջ qmail-ով Debian փաթեթի վրա հարձակվելու համար։
Հարձակման ժամանակ կոդի հեռակա կատարումը կազմակերպելու համար սերվերը պահանջում է 4 ԳԲ ազատ սկավառակի տարածություն և 8 ԳԲ RAM:
Exploit-ը թույլ է տալիս գործարկել ցանկացած կեղևի հրամաններ՝ համակարգի ցանկացած օգտատիրոջ իրավունքով, բացառությամբ արմատային և համակարգի օգտագործողների, ովքեր չունեն իրենց սեփական ենթացուցակը «/home» գրացուցակում (qmail-local գործընթացը գործարկվում է իրավունքներով։ տեղական օգտագործողի, ում առաքումն իրականացվում է):

Հարձակումն իրականացվում է
փոստի շատ մեծ հաղորդագրություն ուղարկելու միջոցով, ներառյալ մի քանի վերնագրի տողեր, որոնք չափում են մոտավորապես 4 ԳԲ և 576 ՄԲ: Նման տողի մշակումը qmail-local-ում հանգեցնում է ամբողջ թվի հորդացման, երբ փորձում են հաղորդագրություն հասցնել տեղական օգտագործողին: Այնուհետև ամբողջ թվի արտահոսքը հանգեցնում է բուֆերային արտահոսքի տվյալների պատճենման ժամանակ և հիշողության էջերը libc կոդով վերագրելու հնարավորության: Հաղորդվող տվյալների դասավորությունը շահարկելով՝ հնարավոր է նաև վերաշարադրել «open()» ֆունկցիայի հասցեն՝ այն փոխարինելով «system()» ֆունկցիայի հասցեով։

Հաջորդը, qmesearch()-ը qmail-local-ում կանչելու գործընթացում բացվում է «.qmail-extension» ֆայլը open() ֆունկցիայի միջոցով, որը հանգեցնում է ֆունկցիայի իրական կատարմանը:
system ("qmail-extension"): Բայց քանի որ ֆայլի «ընդլայնման» մասը ստեղծվում է ստացողի հասցեի հիման վրա (օրինակ՝ «localuser-extension@localdomain»), հարձակվողները կարող են կազմակերպել հրամանի ուղարկումը, որպեսզի գործարկվի՝ նշելով օգտագործողի «localuser-;հրամանը»: ;@localdomain» որպես հաղորդագրության ստացող:

Կոդի վերլուծության ընթացքում երկու խոցելիություն է հայտնաբերվել նաև qmail-verify լրացուցիչ պատչում, որը Debian-ի փաթեթի մի մասն է։ Առաջին խոցելիությունը (CVE-2020-3811- ը) թույլ է տալիս շրջանցել էլփոստի հասցեի ստուգումը, իսկ երկրորդը (CVE-2020-3812- ը) հանգեցնում է տեղական տեղեկատվության արտահոսքի: Մասնավորապես, առաջին խոցելիությունը թույլ է տալիս շրջանցել հրաման ուղարկելու համար օգտագործվող exploit-ում օգտագործված հասցեի ճշգրտության ստուգումը (ստուգումը չի աշխատում առանց տիրույթի հասցեների, օրինակ՝ «localuser-;command;»): Երկրորդ խոցելիությունը կարող է օգտագործվել համակարգում ֆայլերի և դիրեկտորիաների առկայությունը ստուգելու համար, ներառյալ դրանք, որոնք հասանելի են միայն root-ի համար (qmail-verify գործարկումներ արմատային իրավունքներով), տեղական մշակողին ուղղակի զանգի միջոցով:

Խնդիրը լուծելու համար Բերնշտեյնը խորհուրդ է տվել գործարկել qmail պրոցեսները՝ հասանելի հիշողության ընդհանուր սահմանափակումով («softlimit -m12345678»), որի դեպքում խնդիրն արգելափակված է։ Որպես պաշտպանության այլընտրանքային մեթոդ նշվում է նաև մշակված հաղորդագրության առավելագույն չափի սահմանափակումը «control/databytes» ֆայլի միջոցով (լռելյայն այն չի ստեղծվում լռելյայն կարգավորումներով, qmail-ը մնում է խոցելի): Բացի այդ, «control/databytes»-ը չի պաշտպանում համակարգի օգտատերերի տեղական հարձակումներից, քանի որ սահմանաչափը հաշվի է առնվում միայն qmail-smtpd-ում:

Խնդիրն ազդում է փաթեթի վրա netqmail, ներառված է Debian պահեստներում: Այս փաթեթի համար պատրաստվել է մի շարք patches, որոնք վերացնում են ինչպես հին խոցելիությունները 2005 թվականից (ավելացնելով կոշտ հիշողության սահմանաչափեր alloc() ֆունկցիայի կոդում), այնպես էլ նոր խնդիրները qmail-verify-ում: Առանձին-առանձին պատրաստված qmail-verify կարկատակի թարմացված տարբերակը: Կառուցապատողներ մասնաճյուղերը notqmail պատրաստեցին իրենց սեփական պատչերը՝ արգելափակելու հին խնդիրները, ինչպես նաև սկսեցին աշխատել կոդում բոլոր հնարավոր ամբողջ թվերի արտահոսքերը վերացնելու ուղղությամբ:

Source: opennet.ru

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