У FreeBSD 13 мало не виявилася халтурна продаж WireGuard з порушенням ліцензії і вразливістю

З кодової бази, на основі якої формувався реліз FreeBSD 13, було зі скандалом видалено код з реалізацією протоколу VPN WireGuard, розробленої на замовлення компанії Netgate без консультацій з розробниками оригінального WireGuard, і вже включеної до стабільних випусків дистрибутива pfSense. Після перевірки коду Джейсоном Доненфілдом (Jason A. Donenfeld), автором оригінального WireGuard, з'ясувалося, що запропонована для FreeBSD реалізація WireGuard була зразком низькосортного коду, що рясніє переповненнями буфера і порушує ліцензію GPL.

У реалізації були знайдені катастрофічні огріхи в коді криптографії, була пропущена частина протоколу WireGuard, були помилки, що призводили до краху ядра та обходу методів захисту, для вхідних даних використовувалися буфери фіксованого розміру. Про якість коду багато говорить наявність заглушок замість перевірок, що завжди повертають значення «true», а також забуті налагоджувальні printf з виведенням параметрів, що використовуються для шифрування, та застосування функції sleep для запобігання станам гонки.

Деякі частини коду, такі як функція crypto_xor, порушуючи ліцензію GPL, були перенесені з реалізації WireGuard, розробленої для Linux. У результаті Джейсон Доненфілд разом з Кайлом Евансом (Kyle Evans) і Меттом Данвуді (Matt Dunwoodie, автор порту 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, прокоментував ситуацію тим, що зробив велику помилку, взявшись за роботу, будучи не готовим реалізувати цей проект. Результат, що вийшов, Мейсі пояснює емоційним вигорянням і результатом проблем, що виникли через постковидний синдром. При цьому Мейс не знайшов рішучості відмовитися від вже взятих на себе зобов'язань і спробував довести проект до кінця.

На стан Мейс також міг вплинути нещодавній тюремний термін, який він отримав за незаконні дії у спробі виселення мешканців із купленого ним будинку, які не бажають з'їжджати добровільно. Замість дружини вони підпилили балки перекриття і проламали отвори в підлогах, щоб зробити будинок непридатним для проживання, а також намагалися залякати мешканців, зламали заселені квартири і вивезли речі (дія була кваліфікована як крадіжка зі зломом). Для того, щоб уникнути відповідальності за вчинені дії, Мейсі з дружиною втік до Італії, але був екстрадований до США і відсидів понад чотири роки у в'язниці.

Джерело: opennet.ru

Додати коментар або відгук