FreeBSD 13 málem skončilo s hackerskou implementací WireGuard s porušováním licencí a zranitelností

Z kódové základny, na které bylo vytvořeno vydání FreeBSD 13, byl kód implementující protokol WireGuard VPN, vyvinutý na objednávku společnosti Netgate bez konzultace s vývojáři původního WireGuard a již zahrnutý ve stabilních vydáních distribuce pfSense, skandálně. odstraněno. Po kontrole kódu Jasonem A. Donenfeldem, autorem původního WireGuardu, se ukázalo, že FreeBSD navržená implementace WireGuard byla kusem nekvalitního kódu, který byl prošpikovaný přetečením vyrovnávací paměti a porušoval GPL.

Implementace obsahovala katastrofální chyby v šifrovacím kódu, byla vynechána část protokolu WireGuard, vyskytly se chyby, které vedly k pádu jádra a obcházení bezpečnostních metod, pro vstupní data byly použity buffery s pevnou velikostí. Přítomnost pahýlů namísto kontrol, které vždy vrací „true“, stejně jako zapomenuté ladící printfs s výstupem parametrů používaných pro šifrování a použití funkce spánku k zamezení race conditions vypovídají mnohé o kvalitě kódu.

Některé části kódu, jako je funkce crypto_xor, byly přeneseny z implementace WireGuard vyvinuté pro Linux, což je v rozporu s licencí GPL. V důsledku toho se Jason Donenfield spolu s Kylem Evansem a Mattem Dunwoodiem (autor WireGuard portu pro OpenBSD) ujali úkolu přepracovat problematickou implementaci a během týdne kompletně vyměnili veškerý kód vývojáře najatého Netgate . Upravená verze byla vydána jako samostatná sada oprav, umístěná v úložišti projektu WireGuard a dosud nebyla zahrnuta do FreeBSD.

Zajímavé je, že zpočátku nebyly žádné známky problémů; Netgate, který chtěl mít možnost používat WireGuard v distribuci pfSense, najal Matthewa Macyho, který se dobře vyzná v jádře FreeBSD a síťovém stacku, podílí se na opravách chyb a má zkušenosti s vývojem síťové ovladače pro tento operační systém. Macy dostal flexibilní rozvrh bez termínů nebo průběžných kontrol. Vývojáři, kteří potkali Macyho při práci na FreeBSD, ho popsali jako talentovaného a profesionálního programátora, který nedělal více chyb než ostatní a adekvátně reagoval na kritiku. Špatná kvalita implementačního kódu WireGuard pro FreeBSD je překvapila.

Po 9 měsících práce přidal Macy loni v prosinci svou implementaci do větve HEAD, která byla použita k formulaci vydání FreeBSD 13. Vývoj probíhal bez komunikace s vývojáři původního WireGuard a Porty OpenBSD a NetBSD. V únoru Netgate integroval WireGuard do stabilní verze pfSense 2.5.0 a začal dodávat firewally založené na něm. Po zjištění problémů byl kód WireGuard z pfSense odstraněn.

Přidaný kód odhalil kritické zranitelnosti, které byly použity v 0-day exploitech, ale Netgate nejprve existenci zranitelnosti nepřiznal a pokusil se obvinit vývojáře původního WireGuardu z útoků a zaujatosti, což negativně ovlivnilo jeho pověst. Vývojář portů zpočátku odmítal tvrzení o kvalitě kódu a považoval je za přehnané, ale po prokázání chyb upozornil na skutečnost, že skutečně důležitým problémem je nedostatek řádné kontroly kvality kódu ve FreeBSD, protože problémy zůstaly nezjištěny po mnoho měsíců. (Zástupci Netgate uvedli, že veřejná recenze byla spuštěna již v srpnu 2020, ale jednotliví vývojáři FreeBSD poznamenali, že v Phabricatoru byla recenze uzavřena Macy bez dokončení a s ignorováním komentářů). Základní tým FreeBSD reagoval na incident příslibem modernizace svých procesů kontroly kódu.

Matthew Macy, vývojář problematického portu FreeBSD, situaci komentoval slovy, že udělal velkou chybu, když se ujal zakázky, aniž by byl připraven projekt implementovat. Macy vysvětluje výsledný výsledek emočním vyhořením a výsledkem problémů, které vznikly v důsledku post-Covid syndromu. Macy zároveň nenašel odhodlání vzdát se již přijatých závazků a pokusil se projekt dotáhnout do konce.

Macyho stav mohl být také ovlivněn nedávným trestem odnětí svobody, který dostal za nelegální pokus vystěhovat nájemníky z domu, který koupil a kteří nebyli ochotni se dobrovolně vystěhovat. Místo toho s manželkou rozřezali podlahové trámy a vylámali díry do podlah, aby byl dům neobyvatelný, a také se snažili zastrašit obyvatele, vloupali se do obsazených bytů a vynesli jejich věci (akce byla kvalifikována jako vloupání). Aby se vyhnul odpovědnosti za své činy, Macy a jeho manželka uprchli do Itálie, ale byli vydáni do Spojených států a strávili více než čtyři roky ve vězení.

Zdroj: opennet.ru

Přidat komentář