FreeBSD 13 melkein päätyi hakkeroituun WireGuard-toteutukseen, jossa oli lisenssirikkomuksia ja haavoittuvuuksia

Koodipohjasta, jolle FreeBSD 13 -julkaisu muodostettiin, WireGuard VPN -protokollaa toteuttava koodi, joka kehitettiin Netgaten tilauksesta ilman alkuperäisen WireGuardin kehittäjien kuulemista ja joka sisältyi jo pfSense-jakelun vakaisiin julkaisuihin, oli skandaalimaista. poistettu. Alkuperäisen WireGuardin kirjoittajan Jason A. Donenfeldin kooditarkistuksen jälkeen kävi ilmi, että FreeBSD:n ehdottama WireGuard-toteutus oli huono koodi, joka oli täynnä puskurin ylivuotoa ja rikkoo GPL:ää.

Toteutus sisälsi katastrofaalisia puutteita salauskoodissa, osa WireGuard-protokollasta jätettiin pois, oli virheitä, jotka johtivat ytimen kaatumiseen ja turvamenetelmien ohittamiseen, ja syöttötiedoille käytettiin kiinteän kokoisia puskureita. Tynkien läsnäolo tarkistusten sijaan, jotka palauttavat aina "true", sekä unohdetut printfs-virheenkorjaukset salaukseen käytettävien parametrien lähdöillä ja lepotilatoiminnon käyttö kilpailuolosuhteiden estämiseksi kertovat paljon koodin laadusta.

Jotkut koodin osat, kuten crypto_xor-funktio, siirrettiin Linuxille kehitetystä WireGuard-toteutuksesta GPL-lisenssin vastaisesti. Tämän seurauksena Jason Donenfield yhdessä Kyle Evansin ja Matt Dunwoodien (OpenBSD:n WireGuard-portin kirjoittaja) kanssa otti tehtäväkseen muokata ongelmallista toteutusta ja vaihtoi viikon kuluessa kokonaan Netgaten palkkaaman kehittäjän koodin. . Muokattu versio julkaistiin erillisenä korjaustiedostona, joka sijoitettiin WireGuard-projektin arkistoon, eikä sitä ole vielä sisällytetty FreeBSD:hen.

Mielenkiintoista on, että aluksi ei ollut merkkejä ongelmista; Netgate, joka halusi käyttää WireGuardia pfSense-jakelussa, palkkasi Matthew Macyn, joka tuntee hyvin FreeBSD-ytimen ja verkkopinon, on mukana virheenkorjauksissa ja jolla on kokemusta kehitystyöstä. verkkoajurit tälle käyttöjärjestelmälle. Macylle annettiin joustava aikataulu ilman määräaikoja tai välitarkistuksia. Kehittäjät, jotka tapasivat Macyn työskennellessään FreeBSD:n parissa, kuvailivat häntä lahjakkaaksi ja ammattimaiseksi ohjelmoijaksi, joka ei tehnyt enempää virheitä kuin muut ja vastasi kritiikkiin riittävästi. FreeBSD:n WireGuard-toteutuskoodin huono laatu tuli heille yllätyksenä.

Yhdeksän kuukauden työn jälkeen Macy lisäsi toteutuksensa HEAD-haaraan, jota käytettiin FreeBSD 9 -julkaisun muotoiluun, viime joulukuussa ilman vertaisarviointia ja testausta. Kehitys tehtiin ilman yhteydenpitoa alkuperäisen WireGuardin kehittäjien ja OpenBSD- ja NetBSD-portit. Helmikuussa Netgate integroi WireGuardin pfSense 13:n vakaaseen julkaisuun ja aloitti siihen perustuvien palomuurien toimituksen. Kun ongelmat havaittiin, WireGuard-koodi poistettiin pfSensestä.

Lisätty koodi paljasti kriittisiä haavoittuvuuksia, joita käytettiin 0-päivän hyökkäyksissä, mutta Netgate ei aluksi tunnustanut haavoittuvuuksien olemassaoloa ja yritti syyttää alkuperäisen WireGuardin kehittäjää hyökkäyksistä ja harhautumisesta, mikä vaikutti negatiivisesti sen maineeseen. Portin kehittäjä hylkäsi aluksi väitteet koodin laadusta ja piti niitä liioiteltuina, mutta virheiden osoittamisen jälkeen hän kiinnitti huomion siihen tosiasiaan, että todella tärkeä ongelma on FreeBSD:n koodin laadun asianmukaisen tarkastelun puute, koska ongelmat jäivät havaitsematta monta kuukautta. (Netgaten edustajat ilmoittivat, että arvostelu julkaistiin jo elokuussa 2020, mutta yksittäiset FreeBSD-kehittäjät huomauttivat, että Macy sulki tarkistuksen Phabricatorissa ilman, että se oli saatettu loppuun ja kommentit jätettiin huomiotta). FreeBSD:n ydintiimi vastasi tapaukseen lupaamalla modernisoida koodintarkistusprosessinsa.

Ongelmallisen FreeBSD-portin kehittäjä Matthew Macy kommentoi tilannetta sanomalla, että hän teki suuren virheen ryhtyessään työhön olematta valmis toteuttamaan projektia. Macy selittää tuloksen emotionaalisella burnoutilla ja seurauksella post-Covid-oireyhtymästä aiheutuneista ongelmista. Samaan aikaan Macy ei löytänyt päättäväisyyttä luopua jo tekemissään velvoitteista ja yritti viedä projektin päätökseen.

Macyn tilaan saattoi vaikuttaa myös äskettäinen vankeustuomio, jonka hän sai yrittäessään laittomasti häätää ostamastaan ​​kodista vuokralaisia, jotka eivät halunneet muuttaa pois vapaaehtoisesti. Sen sijaan hän vaimonsa kanssa sahasi lattiapalkit ja mursi lattioihin reikiä tehdäkseen talon asumiskelvottomaksi, ja yritti myös pelotella asukkaita, murtautui asuttuihin asuntoihin ja vei heidän omaisuutensa (toimi luokiteltiin murtovarkaudeksi). Välttääkseen vastuun teoistaan ​​Macy ja hänen vaimonsa pakenivat Italiaan, mutta heidät luovutettiin Yhdysvaltoihin ja istuivat yli neljä vuotta vankilassa.

Lähde: opennet.ru

Lisää kommentti