Зиёдшавии буфер дар Toxcore тавассути фиристодани бастаи UDP истифода мешавад

Toxcore, татбиқи истинод ба протоколи паёмнависии Tox P2P, дорои осебпазирӣ (CVE-2021-44847) мебошад, ки метавонад ҳангоми коркарди бастаи махсуси таҳияшудаи UDP иҷроиши кодро оғоз кунад. Ҳамаи корбарони барномаҳои дар асоси Toxcore асосёфта, ки нақлиёти UDP-ро ғайрифаъол намекунанд, аз осебпазирӣ осеб мебинанд. Барои ҳамла, фиристодани бастаи UDP кифоя аст, ки суроғаи IP, порти шабака ва калиди DHT-и ҷабрдидаро донист (ин маълумот дар DHT дастрас аст, яъне ҳамла метавонад ба ҳама гуна корбар ё гиреҳи DHT анҷом дода шавад).

Масъала дар релизҳои toxcore 0.1.9 то 0.2.12 мавҷуд буд ва дар версияи 0.2.13 ислоҳ карда шуд. Дар байни замимаҳои муштарӣ, танҳо лоиҳаи qTox то ҳол навсозиро нашр кардааст, ки осебпазириро аз байн мебарад. Ҳамчун як роҳи ҳалли амният, шумо метавонед UDP-ро ҳангоми нигоҳ доштани дастгирии TCP хомӯш кунед.

осебпазирӣ аз фаромадани буфер дар функсияи handle_request() ба амал меояд, ки аз ҳисоби нодуруст ҳисоб кардани андозаи маълумот дар бастаи шабакавӣ ба амал меояд. Махсусан, дарозии маълумоти рамзшуда дар макроси CRYPTO_SIZE муайян карда шуд, ки ҳамчун "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE" муайян карда шуд, ки баъдан дар амалиёти тарҳкунии "дарозӣ - CRYPTO_SIZE" истифода шуд. Аз сабаби набудани қавс дар макрос ба ҷои тарҳи ҷамъи ҳамаи арзишҳо 1-ро тар карда, қисмҳои боқимондаро илова кард. Масалан, ба ҷои "дарозӣ - (1 + 32 * 2 + 24)", андозаи буфер ҳамчун "дарозӣ - 1 + 32 * 2 + 24" ҳисоб карда шуд, ки дар натиҷа ба баргардонидани маълумот дар стек берун аз ҳудуди буферӣ оварда расонд.

Манбаъ: opennet.ru

Илова Эзоҳ