FreeBSD 13 endte nesten opp med en hacky implementering av WireGuard med lisensbrudd og sårbarheter

Fra kodebasen som FreeBSD 13-utgivelsen ble dannet på, var koden som implementerte WireGuard VPN-protokollen, utviklet etter ordre fra Netgate uten samråd med utviklerne av den originale WireGuard, og allerede inkludert i de stabile utgivelsene av pfSense-distribusjonen, skandaløst. fjernet. Etter kodegjennomgang av Jason A. Donenfeld, forfatteren av den originale WireGuard, viste det seg at FreeBSDs foreslåtte implementering av WireGuard var et stykke elendig kode, full av bufferoverløp og brudd på GPL.

Implementeringen inneholdt katastrofale feil i kryptografikoden, en del av WireGuard-protokollen ble utelatt, det var feil som førte til krasj av kjernen og omgåelse av sikkerhetsmetoder, og buffere med fast størrelse ble brukt for inndata. Tilstedeværelsen av stubber i stedet for sjekker som alltid returnerer "true", så vel som glemte debugging printfs med utdata av parametere som brukes for kryptering, og bruken av søvnfunksjonen for å forhindre raseforhold sier mye om kvaliteten på koden.

Noen deler av koden, for eksempel crypto_xor-funksjonen, ble portert fra WireGuard-implementeringen utviklet for Linux, i strid med GPL-lisensen. Som et resultat tok Jason Donenfield, sammen med Kyle Evans og Matt Dunwoodie (forfatter av WireGuard-porten for OpenBSD), på seg oppgaven med å omarbeide den problematiske implementeringen og erstattet i løpet av en uke fullstendig all koden til utvikleren ansatt av Netgate . Den modifiserte versjonen ble utgitt som et eget sett med patcher, plassert i WireGuard-prosjektdepotet og har ennå ikke blitt inkludert i FreeBSD.

Interessant nok var det i utgangspunktet ingen tegn til problemer. Netgate, som ønsket å kunne bruke WireGuard i pfSense-distribusjonen, ansatt Matthew Macy, som er godt kjent med FreeBSD-kjernen og nettverksstakken, er involvert i feilrettinger og har erfaring med utvikling; nettverksdrivere for dette operativsystemet. Macy fikk en fleksibel timeplan uten tidsfrister eller midtveissjekker. Utviklere som møtte Macy mens de jobbet på FreeBSD beskrev ham som en talentfull og profesjonell programmerer som ikke gjorde flere feil enn andre og svarte adekvat på kritikk. Den dårlige kvaliteten på WireGuard-implementeringskoden for FreeBSD kom som en overraskelse på dem.

Etter 9 måneders arbeid, la Macy sin implementering til HEAD-grenen, som ble brukt til å formulere FreeBSD 13-utgivelsen, i desember i fjor uten fullføring av fagfellevurdering og testing. Utviklingen ble gjort uten kommunikasjon med utviklerne av den originale WireGuard OpenBSD og NetBSD-porter. I februar integrerte Netgate WireGuard i den stabile utgaven av pfSense 2.5.0 og begynte å sende brannmurer basert på den. Etter at problemer ble identifisert, ble WireGuard-koden fjernet fra pfSense.

Den tillagte koden avslørte kritiske sårbarheter som ble brukt i 0-dagers utnyttelser, men Netgate anerkjente først ikke eksistensen av sårbarheter og prøvde å anklage utvikleren av den originale WireGuard for angrep og skjevheter, noe som påvirket omdømmet negativt. Portutvikleren avviste først påstander om kodekvalitet og anså dem som overdrevne, men etter å ha demonstrert feil trakk han oppmerksomheten til det faktum at det virkelig viktige problemet er mangelen på riktig gjennomgang av kodekvaliteten i FreeBSD, fordi problemene forble uoppdaget i mange måneder (Netgate-representanter indikerte at offentlig anmeldelse ble lansert tilbake i august 2020, men individuelle FreeBSD-utviklere bemerket at i Phabricator ble anmeldelsen stengt av Macy uten fullføring og med kommentarer ignorert). FreeBSD Core Team reagerte på hendelsen ved å love å modernisere kodegjennomgangsprosessene deres.

Matthew Macy, utvikleren av den problematiske FreeBSD-porten, kommenterte situasjonen ved å si at han gjorde en stor feil ved å ta på seg jobben uten å være klar til å implementere prosjektet. Macy forklarer resultatet med emosjonell utbrenthet og resultatet av problemer som oppsto på grunn av post-Covid-syndrom. Samtidig fant ikke Macy viljen til å forlate forpliktelsene han allerede hadde påtatt seg og prøvde å få prosjektet til slutt.

Macys tilstand kan også ha blitt påvirket av en nylig fengselsstraff han fikk for ulovlig forsøk på å kaste ut leietakere fra et hjem han kjøpte som ikke var villige til å flytte ut frivillig. I stedet saget han og kona ned gulvbjelkene og brøt hull i gulvene for å gjøre huset ubeboelig, og forsøkte også å skremme beboerne, brøt seg inn i okkuperte leiligheter og tok ut eiendelene deres (aksjonen ble klassifisert som innbrudd). For å unngå ansvar for handlingene hans, flyktet Macy og kona til Italia, men ble utlevert til USA og sonet mer enn fire år i fengsel.

Kilde: opennet.ru

Legg til en kommentar