FreeBSD 13 slutade nästan med en hackig implementering av WireGuard med licensöverträdelser och sårbarheter

Från kodbasen som FreeBSD 13-utgåvan bildades på, var koden som implementerade WireGuard VPN-protokollet, utvecklad på order av Netgate utan samråd med utvecklarna av den ursprungliga WireGuard, och som redan ingår i de stabila utgåvorna av pfSense-distributionen, skandalöst. tog bort. Efter kodgranskning av Jason A. Donenfeld, författaren till den ursprungliga WireGuard, visade det sig att FreeBSD:s föreslagna implementering av WireGuard var ett stycke skum kod, fylld av buffertspill och bröt mot GPL.

Implementeringen innehöll katastrofala brister i kryptografikoden, en del av WireGuard-protokollet uteslöts, det fanns fel som ledde till att kärnan kraschade och säkerhetsmetoder gick förbi, och buffertar med fast storlek användes för indata. Förekomsten av stubbar istället för kontroller som alltid returnerar "true", såväl som glömda felsökningsprintfs med utdata av parametrar som används för kryptering, och användningen av vilofunktionen för att förhindra tävlingsförhållanden säger mycket om kodens kvalitet.

Vissa delar av koden, såsom crypto_xor-funktionen, portades från WireGuard-implementationen som utvecklats för Linux, i strid med GPL-licensen. Som ett resultat tog Jason Donenfield, tillsammans med Kyle Evans och Matt Dunwoodie (författare till WireGuard-porten för OpenBSD), på sig uppgiften att omarbeta den problematiska implementeringen och ersatte inom en vecka helt all kod för utvecklaren som anlitats av Netgate . Den modifierade versionen släpptes som en separat uppsättning patchar, placerad i WireGuard-projektförrådet och har ännu inte inkluderats i FreeBSD.

Intressant nog fanns det till en början inga tecken på problem; Netgate, som ville kunna använda WireGuard i pfSense-distributionen, anställde Matthew Macy, som är väl insatt i FreeBSD-kärnan och nätverksstacken, är involverad i buggfixar och har erfarenhet av att utveckla nätverksdrivrutiner för detta operativsystem. Macy fick ett flexibelt schema utan deadlines eller halvtidskontroller. Utvecklare som träffade Macy när de arbetade på FreeBSD beskrev honom som en begåvad och professionell programmerare som inte gjorde fler misstag än andra och svarade adekvat på kritik. Den dåliga kvaliteten på WireGuard-implementeringskoden för FreeBSD kom som en överraskning för dem.

Efter 9 månaders arbete lade Macy till sin implementering till HEAD-grenen, som användes för att formulera FreeBSD 13-utgåvan, i december förra året utan att slutföra peer review och testning. Utvecklingen gjordes utan kommunikation med utvecklarna av den ursprungliga WireGuard och OpenBSD och NetBSD-portar. I februari integrerade Netgate WireGuard i den stabila versionen av pfSense 2.5.0 och började skicka brandväggar baserade på den. Efter att problem identifierats togs WireGuard-koden bort från pfSense.

Den tillagda koden avslöjade kritiska sårbarheter som användes i 0-dagars utnyttjande, men till en början erkände inte Netgate existensen av sårbarheter och försökte anklaga utvecklaren av den ursprungliga WireGuard för attacker och partiskhet, vilket negativt påverkade dess rykte. Portutvecklaren avvisade till en början påståenden om kodkvalitet och ansåg dem överdrivna, men efter att ha visat fel uppmärksammade han det faktum att det verkligt viktiga problemet är bristen på korrekt granskning av kodkvaliteten i FreeBSD, eftersom problemen förblev oupptäckta i många månader (Netgate-representanter indikerade att granskningen lanserades redan i augusti 2020, men enskilda FreeBSD-utvecklare noterade att i Phabricator stängdes granskningen av Macy utan att ha slutförts och kommentarer ignorerades). FreeBSD Core Team svarade på incidenten genom att lova att modernisera sina processer för kodgranskning.

Matthew Macy, utvecklaren av den problematiska FreeBSD-porten, kommenterade situationen genom att säga att han gjorde ett stort misstag genom att ta på sig jobbet utan att vara redo att implementera projektet. Macy förklarar resultatet med känslomässig utbrändhet och resultatet av problem som uppstod på grund av post-Covid-syndromet. Samtidigt fann Macy inte beslutsamheten att överge de skyldigheter han redan åtagit sig och försökte få projektet att slutföras.

Macys tillstånd kan också ha påverkats av ett nyligen fängelsestraff som han fick för olagligt försök att vräka hyresgäster från ett hem han köpt som var ovilliga att flytta ut frivilligt. Istället sågade han och hans fru ner golvbjälkarna och slog hål i golven för att göra huset obeboeligt och försökte även skrämma de boende, bröt sig in i ockuperade lägenheter och plockade ut deras tillhörigheter (handlingen rubricerades som inbrott). För att slippa ansvaret för sina handlingar flydde Macy och hans fru till Italien, men utlämnades till USA och avtjänade mer än fyra år i fängelse.

Källa: opennet.ru

Lägg en kommentar