От кода, на базе которого был создан релиз FreeBSD 13, был удалён с шумом код реализации протокола VPN WireGuard, разработанный для компании Netgate без консультаций с оригинальными разработчиками WireGuard, и уже включённый в стабильные версии дистрибутива pfSense. После анализа кода Джейсоном Доненфилдом, автором оригинального WireGuard, выяснилось, что предложенная для FreeBSD реализация WireGuard являлась образцом некачественного кода, изобилующего переполнениями буфера и нарушающего лицензию GPL.
В реализации были обнаружены серьёзные ошибки в криптографическом коде, была упущена часть протокола WireGuard, присутствовали ошибки, приводившие к сбоям ядра и обходу мер безопасности; для входных данных использовались буферы фиксированной длины. О качестве кода говорит наличие заглушек вместо проверок, которые всегда возвращают значение «true», а также забытые отладочные printf, выводящие параметры, используемые для шифрования, и применение функции sleep для предотвращения условий гонки.
Некоторые части кода, такие как функция crypto_xor, в нарушение лицензии GPL были перенесены из реализации WireGuard, созданной для Linux. В итоге Джейсон Доненфилд вместе с Кайлом Эвансом и Мэттом Данвуди, автором порта WireGuard для OpenBSD, занялись переработкой проблемной реализации и за неделю полностью заменили весь код разработчика, нанятого Netgate. Переделанная версия выпущена отдельным набором патчей, размещённым в репозитории проекта WireGuard и пока не вошла в состав FreeBSD.
Интересно, че в началото нищо не предвещаваше беда. Компанията Netgate, която желаеше да получи възможност за използване на WireGuard в дистрибуцията pfSense, нае Матю Мейси (Matthew Macy), експерт по ядрото и мрежовия стек на FreeBSD, участващ в отстраняването на грешки и с опит в разработката на мрежови драйвери за тази оперативна система. Мейси получи свободен график без крайни срокове и междинни проверки. Разработчиците, които работиха с Мейси по FreeBSD, го описаха като талантлив и професионален програмист, допускащ същото количество грешки, колкото и другите, и адекватно реагиращ на критика. Тъжното качество на кода на реализацията на WireGuard за FreeBSD стана за тях неочаквано.
След 9 месеца работа, през декември миналата година, Мейси добави своята реализация в клон HEAD, без да завърши рецензията и тестовете от трети страни, която се използваше за формирането на релиза FreeBSD 13. Разработката беше извършена без контакт с разработчиците на оригиналния WireGuard и портовете за OpenBSD и NetBSD. През февруари компанията Netgate интегрира WireGuard в стабилното издание pfSense 2.5.0 и започна да го доставя в междужиелни екрани на неговата основа. След установяването на проблеми, кодът на WireGuard беше премахнат от pfSense.
В добавения код бяха открити критични уязвимости, които бяха използвани в 0-day експлойти, но Netgate в началото не признаваше наличието на уязвимости и се опитваше да обвини разработчика на оригиналния WireGuard в атаки и предубеденост, което негативно се отрази на репутацията й. Разработчикът на порта първоначално отхвърли претенциите за качеството на кода и ги определи като преувеличени, но след демонстрацията на грешките, обърна внимание на факта, че наистина важен проблем е липсата на адекватна рецензия на качеството на кода във FreeBSD, тъй като проблемите останаха незабелязани в продължение на много месеци (представители на Netgate посочиха, че публичната рецензия беше стартирана още през август 2020 година, но отделни разработчици на FreeBSD отбелязаха, че в Phabricator рецензията беше затворена от Мейси без изпълнение и с игнориране на коментарите). Екипът на FreeBSD Core Team реагира на инцидента с обещание да модернизира процесите по проверка на кода.
Матю Мейси, разработчик проблемного порта для FreeBSD, коментира ситуацията, като каза, че е допуснал голяма грешка, като се е захванал с работата, без да е готов за реализиране на проекта. Полученият резултат Мейси обяснява с емоционално изтощение и последица от проблеми, възникнали заради постковидния синдром. Въпреки това, Мейси не е намерил смелост да се откаже от поетите ангажименти и е опитал да завърши проекта.
На състоянието на Мейси също е могло да повлияеrecentният затворнически срок, който е получил за незаконни действия в опит за изплзване на наематели от закупен от него дом, не желаещи да напуснат доброволно. Вместо със съпругата си, те подпилили гредите на покрива и пробили отворите в подовете, за да направят дома неудобен за живеене, както и се опитвали да заплашват наемателите, счупили обитаваните апартаменти и изнесли наличните вещи (действието е квалифицирано като кражба с взлом). За да избегне отговорност за извършените действия, Мейси и съпругата му избягали в Италия, но той бил екстрадиран в САЩ и излежал повече от четири години в затвор.
Източник: opennet.ru
