Z kódové základny, na jejímž základě byla vytvořena verze FreeBSD 13, byl s velkým skandálem odstraněn kód pro implementaci protokolu VPN WireGuard, vyvinutý na objednávku společnosti Netgate bez konzultací s vývojáři původního WireGuard, a již zahrnutý ve stabilních verzích distribuce pfSense. Po kontrole kódu Jasonem Donenfeldem, autorem původního WireGuard, se ukázalo, že navržená implementace WireGuard pro FreeBSD představovala příklad nekvalitního kódu, který byl plný přetečení bufferů a porušoval licenci GPL.
V implementaci byly nalezeny katastrofální nedostatky v kryptografickém kódu, chyběla část protokolu WireGuard, objevily se chyby vedoucí k haváriím jádra a obcházení bezpečnostních metod, pro vstupní data se používaly buffery fixní velikosti. O kvalitě kódu hodně vypovídá přítomnost zástupných hodnot místo kontrol, které vždy vracejí hodnotu „true“, a zapomenuté ladící printf pro výstup parametru používaného pro šifrování, jakož i použití funkce sleep pro prevenci závodních podmínek.
Některé části kódu, jako například funkce crypto_xor, byly v rozporu s licencí GPL převedeny z implementace WireGuard vyvinuté pro Linux. Nakonec se Jason Donenfeld spolu s Kylem Evansem a Mattem Dunwoodiem, autorem portu WireGuard pro OpenBSD, pustili do přepracování problematické implementace a během jednoho týdne kompletně nahradili celý kód vývojáře najatého společností Netgate. Přepracovaná varianta byla vydaná jako samostatný soubor patchů, umístěná v repozitáři projektu WireGuard a zatím nebyla zahrnuta do FreeBSD.
Je zajímavé, že zpočátku nic nenasvědčovalo problémům. Společnost Netgate, která chtěla získat možnost využití WireGuard v distribuci pfSense, najala Matthew Macyho, který hluboce rozuměl jádru a síťovému stacku FreeBSD, podílel se na opravách chyb a měl zkušenosti s vývojem síťových ovladačů pro tento operační systém. Macy měl volný plán bez termínů a mezilidských kontrol. Vývojáři, kteří se s Macyem setkali při práci na FreeBSD, ho charakterizovali jako talentovaného a profesionálního programátora, který dělá stejně málo chyb jako ostatní a adekvátně reaguje na kritiku. Tragická kvalita kódu implementace WireGuard pro FreeBSD byla pro ně překvapením.
Po devíti měsících práce v prosinci loňského roku Macy bez dokončení revizí a testování ze strany externích účastníků přidal svou implementaci do větve HEAD, která byla použita k sestavení vydání FreeBSD 13. Vývoj probíhal bez kontaktu s vývojáři původního WireGuard a portů pro OpenBSD a NetBSD. V únoru společnost Netgate integrovala WireGuard do stabilní verze pfSense 2.5.0 a začala ho dodávat do firewallů na jeho základě. Po odhalení problémů byl kód WireGuard odstraněn z pfSense.
V přidaném kódu byly odhaleny kritické zranitelnosti, které byly využity v 0-day exploitacích, avšak Netgate zpočátku neuznávala existenci těchto zranitelností a snažila se obvinit vývojáře původního WireGuard z útoků a zaujatosti, což negativně ovlivnilo její pověst. Vývojář portu zpočátku odmítal tvrzení o kvalitě kódu a považoval je za přehnané, ale po demonstraci chyb si uvědomil, že skutečně zásadním problémem je nedostatečné posouzení kvality kódu ve FreeBSD, neboť problémy zůstávaly po mnoho měsíců bez povšimnutí (zástupci Netgate uvedli, že veřejné posuzování bylo spuštěno již v srpnu 2020, ale jednotliví vývojáři FreeBSD poznamenali, že revize v Phabricatoru byla Macyem uzavřena bez provedení a s ignorováním komentářů). Tým FreeBSD Core Team reagoval na incident slibem modernizovat procesy kontroly kódu.
Matthew Macy, the developer of the problematic port for FreeBSD, commented on the situation by admitting that he made a significant mistake by taking on the work without being ready to implement the project. He attributes the resulting outcome to emotional burnout and issues arising from post-COVID syndrome. At the same time, Macy did not find the resolve to withdraw from the commitments he had already taken on and tried to see the project through to the end.
Macy's condition may have also been influenced by a recent prison sentence he received for illegal actions in an attempt to evict tenants from a house he purchased, who were unwilling to leave voluntarily. Together with his wife, they cut the beams of the ceiling and broke holes in the floors to make the house uninhabitable, as well as attempted to intimidate the tenants, breaking into occupied apartments and removing their belongings (the action was classified as burglary). To avoid responsibility for his actions, Macy and his wife fled to Italy but were extradited to the USA, where he served more than four years in prison.
Zdroj: opennet.ru
