FreeBSD 13 endte næsten med en hacky implementering af WireGuard med licensovertrædelser og sårbarheder

Fra kodebasen, som FreeBSD 13-udgivelsen var baseret på, koden med implementeringen af ​​WireGuard VPN-protokollen, udviklet efter ordre fra Netgate uden samråd med udviklerne af den originale WireGuard, og allerede inkluderet i stabile udgivelser af pfSense-distributionen, blev fjernet med en skandale. Efter at have gennemgået koden af ​​Jason A. Donenfeld, forfatteren til den originale WireGuard, viste det sig, at den foreslåede FreeBSD-implementering af WireGuard var et stykke lavkvalitetskode, der var fyldt med bufferoverløb og overtrådte GPL-licensen.

Katastrofale fejl i kryptografikoden blev fundet i implementeringen, en del af WireGuard-protokollen blev udeladt, der var fejl, der førte til nedbrud af kernen og omgåelse af beskyttelsesmetoder, buffere med fast størrelse blev brugt til inputdata. Meget om kodens kvalitet er tilstedeværelsen af ​​stubs i stedet for checks, der altid returnerer værdien "true", samt glemte debug printfs med output af parametre, der bruges til kryptering, og brugen af ​​sleep-funktionen til at forhindre race betingelser.

Nogle dele af koden, såsom crypto_xor-funktionen, er blevet porteret fra Linux-implementeringen af ​​WireGuard i strid med GPL. Som et resultat gik Jason Donenfield sammen med Kyle Evans og Matt Dunwoodie (forfatter af WireGuard-porten til OpenBSD) i gang med at omarbejde den problematiske implementering og erstattede i løbet af en uge fuldstændigt al koden for udvikleren hyret af Netgate. Den omarbejdede version blev udgivet som et separat sæt patches, placeret i WireGuard-projektets repository og er endnu ikke inkluderet i FreeBSD.

Interessant nok var der i starten intet der lovede problemer. Netgate, der ønskede at kunne bruge WireGuard i pfSense-distributionen, hyrede Matthew Macy, som er velbevandret i FreeBSD-kernen og netværksstakken, involveret i fejlretning og har erfaring med at udvikle netværksdrivere til dette operativsystem. Macy fik en gratis tidsplan uden deadlines eller mellemliggende kontroller. Udviklere, der krydsede veje med Macy, mens de arbejdede på FreeBSD, karakteriserede ham som en talentfuld og professionel programmør, der ikke lavede flere fejl end andre og reagerede tilstrækkeligt på kritik. Den beklagelige kodekvalitet af FreeBSD-implementeringen af ​​WireGuard overraskede dem.

Efter 9 måneders arbejde i december sidste år tilføjede Macy sin implementering til HEAD-grenen, som blev brugt til at forme FreeBSD 13-udgivelsen, uden at fuldføre nogen peer review eller test. I februar integrerede Netgate WireGuard i den stabile udgivelse af pfSense 2.5.0 og begyndte at sende wireguards baseret på den. Efter at problemer blev identificeret, blev WireGuard-koden fjernet fra pfSense.

Kritiske sårbarheder blev identificeret i den tilføjede kode, som blev brugt i 0-dages udnyttelser, men Netgate anerkendte i første omgang ikke eksistensen af ​​sårbarheder og forsøgte at beskylde udvikleren af ​​den originale WireGuard for angreb og bias, hvilket påvirkede dets omdømme negativt. Udvikleren af ​​porten afviste oprindeligt påstandene om kodekvalitet som overdrevne, men efter at have vist fejlene bemærkede han, at det virkelig vigtige problem var manglen på korrekt gennemgang af kodekvaliteten i FreeBSD, fordi problemerne forblev ubemærket i mange måneder (Netgate Repræsentanter indikerede, at offentligheden gennemgangen blev lanceret så tidligt som i august 2020, men individuelle FreeBSD-udviklere bemærkede, at i Phabricator blev anmeldelsen lukket af Macy uden udførelse og ignorering af kommentarer). FreeBSD Core Team reagerede på hændelsen med et løfte om at modernisere deres kodegennemgangsprocesser.

Matthew Macy, udvikleren af ​​den problematiske port for FreeBSD, kommenterede, at han begik en stor fejl ved at påtage sig jobbet, og han var ikke klar til at implementere dette projekt. Macy forklarer det resulterende resultat med følelsesmæssig udbrændthed og resultatet af problemer, der er opstået på grund af post-COVID-syndromet. Samtidig fandt Macy ikke viljen til at opgive de forpligtelser, der allerede var påtaget, og forsøgte at bringe projektet til ende.

Macys tilstand kan også have været påvirket af en nylig fængselsstraf, som han modtog for ulovlige handlinger i et forsøg på at smide lejere ud af et hus, han købte, og som ikke ønskede at flytte ud frivilligt. I stedet savede de sammen med hans kone gulvbjælkerne og brød huller i gulvene for at gøre huset ubeboeligt, og de forsøgte også at skræmme lejerne, brød ind i de beboede lejligheder og tog ejendelene ud (handlingen var kvalificeret som et indbrud) . For at undgå ansvaret for sine handlinger flygtede Macy til Italien med sin kone, men blev udleveret til USA og afsonede mere end fire år i fængsel.

Kilde: opennet.ru

Tilføj en kommentar