Բուֆերային արտահոսքը Toxcore-ում շահագործվում է՝ ուղարկելով UDP փաթեթ

Հայտնաբերվել է խոցելիություն (CVE-2-2021) Toxcore-ում՝ Tox P44847P հաղորդագրությունների հաղորդագրության արձանագրության տեղեկատու ներդրումը, որը կարող է պոտենցիալ գործարկել կոդի գործարկումը հատուկ մշակված UDP փաթեթը մշակելիս: Խոցելիությունը ազդում է Toxcore-ի վրա հիմնված հավելվածների բոլոր օգտատերերի վրա, որոնց UDP տրանսպորտն անջատված չէ: Հարձակման համար բավական է ուղարկել UDP փաթեթ՝ իմանալով տուժողի IP հասցեն, ցանցային պորտը և հանրային DHT բանալին (այս տեղեկատվությունը հրապարակայնորեն հասանելի է DHT-ում, այսինքն՝ հարձակումը կարող էր կատարվել ցանկացած օգտագործողի կամ DHT հոսթի վրա): .

Խնդիրը հայտնվել է toxcore թողարկումներում 0.1.9-ից մինչև 0.2.12 և շտկվել է 0.2.13 տարբերակում: Հաճախորդների հավելվածներից միայն qTox նախագիծն է մինչ այժմ թողարկել թարմացում՝ խոցելիությունը վերացնելու համար: Որպես անվտանգության լուծում, դուք կարող եք անջատել UDP-ի օգտագործումը TCP-ի աջակցությունը թողնելով:

Խոցելիությունը պայմանավորված է handle_request() ֆունկցիայի բուֆերային արտահոսքով, որն առաջանում է ցանցային փաթեթում տվյալների չափի սխալ հաշվարկի պատճառով: Մասնավորապես, գաղտնագրված տվյալների երկարությունը որոշվել է «1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE» CRYPTO_SIZE մակրոյում, որը հետագայում օգտագործվել է «երկարություն - CRYPTO_SIZE» հանման գործողության մեջ։ Մակրոյում փակագծերի բացակայության պատճառով բոլոր արժեքների գումարը հանելու փոխարեն հանեք 1-ը և ավելացրեք մնացած մասերը։ Օրինակ, «երկարություն - (1 + 32 * 2 + 24)» փոխարեն, բուֆերի չափը հաշվարկվել է որպես «երկարություն - 1 + 32 * 2 + 24», ինչը հանգեցրել է բուֆերից դուրս գտնվող կույտի տվյալների վերագրանցմանը: սահման.

Source: opennet.ru

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