FreeBSD 13 preskaŭ finiĝis kun haka efektivigo de WireGuard kun licencaj malobservoj kaj vundeblecoj

El la kodbazo sur kiu la FreeBSD 13-eldono estis formita, la kodo efektiviganta la WireGuard VPN-protokolon, evoluigita laŭ ordono de Netgate sen konsulto kun la programistoj de la originala WireGuard, kaj jam inkluzivita en la stabilaj eldonoj de la pfSense-distribuo, estis skandale. forigita. Post kodrevizio de Jason A. Donenfeld, la verkinto de la origina WireGuard, ĝi turnis ke la proponita efektivigo de FreeBSD de WireGuard estis peco de fuŝa kodo, truita kun bufrosuperfluoj kaj malobservanta la GPL.

La efektivigo enhavis katastrofajn difektojn en la kriptografiokodo, parto de la WireGuard-protokolo estis preterlasita, estis eraroj kiuj kaŭzis la kraŝon de la kerno kaj preterpasi sekurecmetodojn, kaj fiksgrandaj bufroj estis uzitaj por enigdatenoj. La ĉeesto de stumpoj anstataŭ ĉekoj, kiuj ĉiam resendas "veraj", same kiel forgesitaj sencimoj printfs kun la eligo de parametroj uzataj por ĉifrado, kaj la uzo de la dorma funkcio por malhelpi vetkurajn kondiĉojn diras multon pri la kvalito de la kodo.

Kelkaj partoj de la kodo, kiel ekzemple la crypto_xor-funkcio, estis portitaj de la WireGuard-efektivigo evoluigita por Linukso, malobee al la GPL-licenco. Kiel rezulto, Jason Donenfield, kune kun Kyle Evans kaj Matt Dunwoodie (aŭtoro de la haveno WireGuard por OpenBSD), prenis sur sin la taskon reverki la probleman efektivigon kaj, ene de semajno, tute anstataŭigis la tutan kodon de la programisto dungita de Netgate. . La modifita versio estis publikigita kiel aparta aro de pecetoj, metita en la WireGuard-projektdeponejon kaj ankoraŭ ne estis inkludita en FreeBSD.

Interese, ke komence ne estis signoj de problemo; Netgate, kiu volis povi uzi WireGuard en la distribuo pfSense, dungis Matthew Macy, kiu bone konas la FreeBSD-kernon kaj retan stakon, okupiĝas pri eraroj kaj havas sperton pri evoluado. retaj ŝoforoj por ĉi tiu operaciumo. Macy ricevis flekseblan horaron sen templimoj aŭ mezperiodaj kontroloj. Programistoj kiuj renkontis Macy laborante pri FreeBSD priskribis lin kiel talentan kaj profesian programiston kiu faris ne pli da eraroj ol aliaj kaj respondis adekvate al kritiko. La malbona kvalito de la efektivigkodo de WireGuard por FreeBSD surprizis ilin.

Post 9 monatoj da laboro, Macy aldonis sian efektivigon al la branĉo HEAD, kiu estis uzata por formuli la eldonon de FreeBSD 13, la pasintan decembron sen kompletigo de kolega revizio kaj testado.La evoluo estis farita sen komunikado kun la programistoj de la originala WireGuard kaj la OpenBSD kaj NetBSD-havenoj. En februaro, Netgate integris WireGuard en la stabilan eldonon de pfSense 2.5.0 kaj komencis sendi fajromurojn bazitajn sur ĝi. Post kiam problemoj estis identigitaj, la WireGuard-kodo estis forigita de pfSense.

La aldonita kodo malkaŝis kritikajn vundeblecojn, kiuj estis uzataj en 0-tagaj ekspluatoj, sed komence Netgate ne agnoskis la ekziston de vundeblecoj kaj provis akuzi la programiston de la originala WireGuard pri atakoj kaj biaso, kiuj negative influis ĝian reputacion. La havenprogramisto komence malakceptis asertojn pri kodkvalito kaj konsideris ilin troigitaj, sed post pruvo de eraroj, li atentigis pri tio, ke la vere grava problemo estas la manko de taŭga revizio de kodkvalito en FreeBSD, ĉar la problemoj restis nerimarkitaj dum multaj monatoj. (Reprezentantoj de Netgate indikis ke publika la revizio estis lanĉita reen en aŭgusto 2020, sed individuaj FreeBSD-programistoj rimarkis, ke en Phabricator la revizio estis fermita de Macy sen kompletigo kaj kun komentoj ignoritaj). La FreeBSD Kerna Teamo respondis al la okazaĵo per promesado modernigi siajn kodajn reviziajn procezojn.

Matthew Macy, la programisto de la problema FreeBSD-haveno, komentis la situacion dirante, ke li faris grandan eraron okupante la laboron sen esti preta efektivigi la projekton. Macy klarigas la rezultan rezulton per emocia elĉerpiĝo kaj la rezulto de problemoj, kiuj estiĝis pro post-Covid-sindromo. En la sama tempo, Macy ne trovis la persistemon prirezigni la devontigojn kiujn li jam entreprenis kaj provis alporti la projekton al fino.

La kondiĉo de Macy ankaŭ eble estis trafita per lastatempa mallibereca puno kiun li ricevis por kontraŭleĝe provado forpeli luantojn de hejmo kiun li aĉetis kiuj estis nevolaj translokiĝi libervole. Anstataŭe, li kaj lia edzino segis malsupren la planktrabojn kaj rompis truojn en la plankoj por igi la domon neloĝebla, kaj ankaŭ provis timigi la loĝantojn, rompis en loĝatajn loĝejojn kaj elprenis iliajn havaĵojn (la ago estis klasifikita kiel rompoŝtelo). Por eviti respondecon por liaj agoj, Macy kaj lia edzino fuĝis al Italio, sed estis ekstradiciitaj al Usono kaj servis pli ol kvar jarojn en malliberejo.

fonto: opennet.ru

Aldoni komenton