FreeBSD 13 почти завърши с хакерско внедряване на WireGuard с нарушения на лиценза и уязвимости

От кодовата база, върху която е формирана версията FreeBSD 13, кодът, внедряващ протокола WireGuard VPN, разработен по поръчка на Netgate без консултация с разработчиците на оригиналния WireGuard и вече включен в стабилните версии на дистрибуцията pfSense, беше скандално отстранени. След преглед на кода от Джейсън А. Доненфелд, авторът на оригиналния WireGuard, се оказа, че предложената реализация на WireGuard от FreeBSD е калпав код, пълен с препълване на буфери и нарушаващ GPL.

Внедряването съдържаше катастрофални пропуски в криптографския код, част от протокола WireGuard беше пропусната, имаше грешки, които доведоха до срив на ядрото и заобикаляне на методите за сигурност, а за входни данни бяха използвани буфери с фиксиран размер. Наличието на мъничета вместо проверки, които винаги връщат „true“, както и забравени printfs за отстраняване на грешки с извеждане на параметри, използвани за криптиране, и използването на функцията за заспиване за предотвратяване на условия на състезание, казват много за качеството на кода.

Някои части от кода, като функцията crypto_xor, бяха пренесени от изпълнението на WireGuard, разработено за Linux, в нарушение на GPL лиценза. В резултат на това Джейсън Доненфийлд, заедно с Кайл Евънс и Мат Дънуди (автор на порта на WireGuard за OpenBSD), се заеха със задачата да преработят проблемната реализация и в рамките на една седмица напълно замениха целия код на разработчика, нает от Netgate . Модифицираната версия беше пусната като отделен набор от пачове, поставени в хранилището на проекта WireGuard и все още не е включена във FreeBSD.

Интересното е, че първоначално нямаше признаци на проблем; Netgate, който искаше да може да използва WireGuard в дистрибуцията на pfSense, нае Матю Мейси, който е добре запознат с ядрото и мрежовия стек на FreeBSD, участва в корекции на грешки и има опит в разработката мрежови драйвери за тази операционна система. На Мейси беше даден гъвкав график без крайни срокове или междинни проверки. Разработчиците, които се запознават с Мейси, докато работят върху FreeBSD, го описват като талантлив и професионален програмист, който не прави повече грешки от другите и отговаря адекватно на критиките. Лошото качество на кода за внедряване на WireGuard за FreeBSD беше изненада за тях.

След 9 месеца работа Мейси добави внедряването си към клона HEAD, който беше използван за формулиране на изданието FreeBSD 13, миналия декември без завършване на партньорска проверка и тестване.Разработката беше извършена без комуникация с разработчиците на оригиналния WireGuard и OpenBSD и NetBSD портове. През февруари Netgate интегрира WireGuard в стабилната версия на pfSense 2.5.0 и започна да доставя защитни стени, базирани на него. След като бяха идентифицирани проблеми, кодът на WireGuard беше премахнат от pfSense.

Добавеният код разкри критични уязвимости, които бяха използвани в 0-дневни експлойти, но първоначално Netgate не призна съществуването на уязвимости и се опита да обвини разработчика на оригиналния WireGuard в атаки и пристрастия, което се отрази негативно на репутацията му. Разработчикът на порта първоначално отхвърли твърденията за качеството на кода и ги счете за преувеличени, но след като демонстрира грешки, той обърна внимание на факта, че наистина важният проблем е липсата на подходящ преглед на качеството на кода във FreeBSD, тъй като проблемите останаха неоткрити в продължение на много месеци (Представителите на Netgate посочиха, че публичният преглед е пуснат още през август 2020 г., но отделни разработчици на FreeBSD отбелязаха, че във Phabricator прегледът е затворен от Macy без завършване и с игнорирани коментари). Основният екип на FreeBSD отговори на инцидента, като обеща да модернизира своите процеси за преглед на кода.

Матю Мейси, разработчикът на проблемния порт на FreeBSD, коментира ситуацията, като каза, че е направил голяма грешка, като е поел работата, без да е готов да реализира проекта. Мейси обяснява получения резултат с емоционално прегаряне и резултат от проблеми, възникнали поради постковид синдрома. В същото време Мейси не намери решителност да се откаже от вече поетите задължения и се опита да доведе проекта докрай.

Състоянието на Мейси също може да е било повлияно от скорошна присъда затвор, която той получи за незаконен опит да изгони наематели от дом, който е закупил, които не са искали да се изнесат доброволно. Вместо това той и съпругата му са изрязали гредите на пода и са пробили пода, за да направят къщата необитаема, а също така са се опитали да сплашат жителите, нахлули са в обитавани апартаменти и са изнесли вещите им (акцията е квалифицирана като кражба с взлом). За да избегне отговорността за действията си, Мейси и съпругата му избягаха в Италия, но бяха екстрадирани в САЩ и излежаха повече от четири години затвор.

Източник: opennet.ru

Добавяне на нов коментар