· 36 min read
OpenSSH creator Theo de Raadt was pushed out of NetBSD, lost a DARPA grant and fought half of open source. Now his paranoid code guards the world's servers.

I. Half a Second
Until the last days of March 2024, almost nobody outside a small circle of programmers had heard of liblzma. It was a compression library, a piece of plumbing buried deep in Linux, and for two years someone had been preparing to use it to walk through the front door of the internet.
He called himself Jia Tan. He was patient. He wrote helpful patches. He was polite to an exhausted volunteer maintainer, and useful, and always there, and in time he was given the keys. Then he began to build. The payload went into the release tarballs in pieces, obfuscated and disguised as test files. It was aimed at OpenSSH, the program that guards remote access to nearly every server on Earth. Once the code shipped in the stable releases of the major Linux distributions, whoever held the private key could let himself into a large share of the world's machines.
It nearly worked. What stopped it was half a second.
Andres Freund, an engineer at Microsoft, noticed that SSH logins on his Debian test machine were burning about five hundred milliseconds more CPU than they should. Most people would have let it go. Freund didn't. He followed the delay down through the SSH daemon, through systemd, and into liblzma, and at the bottom he found the backdoor.
He posted the disclosure to the oss-security list on March 29. Within hours the Linux world was doing triage. Red Hat issued an urgent advisory. Debian rolled back. At banks, cloud providers and hospital networks, engineers were pulled out of bed to tear open their build pipelines. They were all asking the same question: are we exposed?
The city of Calgary sits on the high plains of southern Alberta, where the prairie runs flat to the east and the Rockies stand to the west like a wall. In winter the cold comes down hard and stays. Sometimes a wind called the Chinook pours off the mountains, warm and dry, and lifts the temperature twenty degrees in an afternoon. Snowbanks rot to slush by dark. Locals say the Chinook brings migraines and short tempers, and that dogs won't settle while it blows. It arrives without warning, and nobody asks for it.

Here, one operating system was not asking.
OpenBSD had never been in the blast radius. The attack depended on a chain. Linux distributions had patched their SSH daemons to talk to systemd, systemd pulled in liblzma, and liblzma carried the poison into the daemon's memory. OpenBSD had never let systemd in. It had never tied that dependency to its most sensitive process. For nearly a decade it had wrapped its programs in restraints called pledge and unveil. Under those rules, a program that reached for anything it hadn't declared in advance was killed by the kernel.
Nine years earlier, at a conference in Quebec, the man who built that system had stood before a room and named the danger. He didn't speak of compressors in general. He named this one. "Especially with compressors like XZ," he said, "which had 2 memory system vulnerabilities in the last year…"
Nobody had taken much notice at the time.
His name is Theo de Raadt. He has called Richard Stallman "a lying cheating hypocrite" and called Linux "garbage." The first project he helped found threw him out. A single sentence to a newspaper cost him a million dollars of Pentagon money. And his code is almost certainly running on the machines that hold your bank balance, your medical records and the servers that delivered this page. He lives far from the centers of the technology industry, in a city known for cattle and oil. He trusts almost no one. That is why so many others can afford to trust.

II. Мальчик, ушедший до прихода армии
Начинается всё с отъезда.
Претория, Южная Африка, 1977 год. Соуето горел годом ранее. Апартеидистское государство воевало со своим собственным народом и соседями, и у каждого белого мальчика в стране в будущем была назначена дата: два года обязательной службы в той самой армии. Тео де Раадт родился 19 мая 1968 года. Он старший из четверых детей голландского отца и южноафриканской матери. Ему девять лет, так что призыв ещё за десятилетие. Семья не стала ждать.
В ноябре 1977 года они уезжают в Калгари. Это первый урок мальчика в безопасности, и самый важный. Когда система гнилая, с ней не договариваются. От неё уходят.
Мальчик с Высоких Ветров выходит из самолёта в ноябрьской прерии, в холод, который пронзает зубы под белым, огромным небом. Он привыкает к нему. В 1983 году земля снова дрожит. Канада погружается в самый тяжёлый кризис со времён Великой депрессии, экономика нефтяного сектора Аберты рушится, и семья на время переезжает в Юкон, где северных оленей больше, чем людей, а зимний свет длится всего несколько часов.

К тому времени у него уже есть компьютер. Это Commodore VIC-20 — клин из бежевого пластика с пятью килобайтами памяти, подключаемый к телевизору. Он говорит на BASIC, а для серьёзных дел — на машинном коде 6502. Он не прощает ошибок. Нет интернета, чтобы задать вопрос, и никого, кого можно позвать. Есть только инструкция и курсор. Если ты ошибёшься хотя бы в одном байте, машина зависнет, и придётся начинать заново.

Позже появится Amiga. Но именно VIC-20 имеет значение. Семью уже дважды вырвали с корнем. Страна всё ещё чужая, а земля снаружи такая же жёсткая и чистая, как лист льда. Экономики рушатся, люди подводят, но машина точна. Пойми её до последнего регистра, и она никогда тебя не предаст.
Для мальчика, который в одиночку учится программировать в северной тьме, правильность — это не вопрос вкуса. Это укрытие.
Он возвращается в Калгари и в 1992 году заканчивает бакалавриат по компьютерным наукам в Университете Калгари. Ему двадцать четыре года, и он гениален. Он ещё не понял, что большинству людей не важна правильность в той мере, в какой она важна ему.
III. Изгнание
В 1993 году мир свободного Unix был городом на фронтире. AT&T и Беркли судились в суде, выясняя, кому принадлежит код. Линус Торвальдс был финским студентом с хобби-ядром. Несколько хакеров, разбросанных по континенту, пытались превратить 386BSD, бесплатный Unix для дешёвых ПК на базе Intel, во что-то, что действительно работает. Оно работало недостаточно хорошо и было слишком松散 (свободным/неорганизованным). Четверо из них откололись: Крис Деметриу, Адам Гласс, Чарльз Ханнум и Тео де Раадт. Они назвали свой проект NetBSD.
Де Раадт полностью погрузился в проект. Вместе с Чаком Кранором он создал порт для Sun SPARC и писал код в количествах, которые трудно подвести под учёт. Когда в октябре 1994 года вышел NetBSD 1.0, это стало первым релизом проекта, поддерживающим несколько платформ. Значительная часть этой переносимости несёт его отпечатки.

Затем появились списки рассылки.
В списке рассылки де Раадт был как пламенная горелка. Пользователь задаёт наивный вопрос — и получает жестокую порку. Разработчик отправляет патч, который он считает небрежным, — и он возвращается полностью разобранным на части. Он обычно прав, что делает ситуацию ещё хуже. Он прав так, что оставляет людей истекающими кровью, и, похоже, он не замечает этой крови. Или замечает, но не считает её важной по сравнению с тем, правильный ли код.
Хакерская культура 1994 года простит почти всё, если код хорош. Почти всё. Де Раадт находит предел и переходит его.
20 декабря 1994 года, за пять дней до Рождества, остальная часть ядра команды NetBSD отзывает у него доступ к репозиторию исходного кода. Проект отстранил одного из своих основателей.
Три спустя дня Адам Гласс пишет в список netbsd-users:
«Это было очень трудное решение, принятое в результате долгой истории грубости Тео по отношению к пользователям и разработчикам NetBSD и его злоупотреблений. Мы считаем, что такому поведению нет места среди представителей Проекта NetBSD, и что в целом оно наносило ущерб проекту.»»
Гласс признаёт, что де Раадт был «главным куратором поддержки SPARC в NetBSD и написал столько кода, что перечислять его вклад просто невозможно». Это ничего не меняет. Он ушёл.
Спустя годы Чарльз Ханнам вспоминает те события. «Широко распространено мнение, что именно я „вышвырнул“ Тео из сообщества NetBSD. Это ложь», — говорит он. — „В тот период истории NetBSD роль доминантной фигуры играл Крис Г. Деметриу, и у меня не было выбора. Я был уверен, что это обернётся для нас серьёзными проблемами. Думаю, вопрос для историков заключается не в том, случилось ли это, а в том, сколько раз и насколько сильно“.
Писатель Питер Уэйнер в книге Free for All выражается сдержанно: «чрезмерная прямота» де Раадта задевала людей. Изнутри картина могла выглядеть иначе. Он уже потерял одну страну, прежде чем её армия успела призвать его, и потерял опору под ногами в другой, когда там рухнула экономика. Теперь место, которое он построил собственными руками, публично и письменно проголосовало за его увольнение. Ему позволили построить это, а затем забрали всё обратно.
Другой человек, возможно, замолчал бы после этого.
Но де Раадт принял правило. Он больше никогда не будет строить ничего, ключи от чего могут быть отняты им другим человеком.
IV. Год ноль
Октябрь 1995 года, Калгари. Де Раадт берёт исходный код NetBSD — тот самый код, к которому ему закрыли доступ, — и создаёт его форк. Лицензия это разрешает, так что никто не может ему помешать. Он называет новый проект OpenBSD.
На этот раз нет ядра команды, способного его уволить. Есть один лидер. Релизы выходят каждые шесть месяцев строго по графику, каждый поддерживается в течение года, а затем выводится из эксплуатации. Код постоянно проверяется, строка за строкой по всему дереву исходников. Когда находится одна ошибка, команда выслеживает все остальные случаи подобных ошибок. Функциональность отходит на второй план. Так же, как и производительность, поддержка оборудования и чувства людей. Важна только один вопрос: можно ли это сломать?

Маскот — морской ёж по имени Пафффи. Он выглядит достаточно мило для футболки, но морской ёж выживает, надуваясь в шар из шипов и становясь ядовитым. Ни один проект программного обеспечения не выбрал более честного символа.
Вскоре с проектом связывается калгарийская компания по безопасности Secure Networks, позже поглощённая McAfee. Они разрабатывали инструмент аудита сетей под названием Ballista. Это сотрудничество сформировало доктрину OpenBSD — проактивную безопасность. Вы не ждёте, пока вор разобьёт окно. Вы предполагаете, что он уже во дворе и держит руку на стекле.
OpenBSD превращает паранойю в инженерный метод. Весь код считается виновным. Все сети считаются враждебными. Каждый программист совершает ошибки, включая тех, кто работает над самим проектом, поэтому система должна выживать, несмотря на них. Когда что-то выглядит подозрительно, программа немедленно и громко завершает работу, потому что сбой можно восстановить, а компрометацию системы — нет. По умолчанию при установке почти ничего не включено, поэтому, по словам проекта, новичкам не нужно «становиться экспертами по безопасности в одночасье».
Затем де Раадт размещает на главной странице сайта заявление, которое может прочитать каждый атакующий на Земле:
"Пять лет без удалённых уязвимостей в стандартной установке!"
Он служит годами. По всей отрасли обновления для коммерческих систем выходят каждый месяц, как по часам. В Альберте добровольный проект бросает вызов всем, кто осмелится взломать систему.
В июне 2002 года Марк Дауд из Internet Security Systems обнаруживает уязвимость в механизме аутентификации OpenSSH по запросу-ответу. Де Радт публично меняет слоган: «Одна удалённая уязвимость в стандартной установке за почти 6 лет!» В 2007 году Альфредо Ортга обнаруживает вторую уязвимость, в сетевом стеке. Слоган снова меняется:
«Всего две удалённые уязвимости в стандартной установке за чертовски долгое время!»
Это две удалённые уязвимости за более чем десятилетие. Люди, называвшие его параноиком, получили свой ответ.
V. Замок
До середины 1990-х интернет работал без шифрования.
Системные администраторы подключались к удалённым машинам через Telnet или rlogin. Каждый нажатый клавиши передавался по сети в открытом виде, включая имена пользователей, пароли и root-пароли. Любой, кто находился в сети и имел сетевую карту в режиме promiscuous, мог их прочитать. В феврале 1994 года CERT выпустил предупреждение CA-94:01, описывающее злоумышленников, которые тихо собирали учётные данные для десятков тысяч систем.

В 1995 году Таату Юлёнен, исследователь из Хельсинкского университета технологий, написал Secure Shell. Он шифровал сеанс и проверял сервер с помощью криптографических ключей. Он выпустил его бесплатно, и к концу года у него уже было двадцать тысяч пользователей в пятидесяти странах. Затем он основал компанию SSH Communications Security, и лицензия стала ужесточаться. К 1999 году новые версии содержали коммерческие ограничения, и компаниям рекомендовалось обращаться в фирму Datafellows для их приобретения.
Для де Радта это было неприемлемо. Самый важный инструмент безопасности интернета оказался заперт, и компания держала ключи от входной двери каждого.
Разработчики OpenBSD нашли старую версию кода Юлёнена, 1.2.12, которая всё ещё была под свободной лицензией. Шведский программист по имени Бьёрн Гронвалл поддерживал её под названием OSSH. Она поддерживала только старый протокол 1.3, но они могли взять её. OpenBSD 2.6 должен был выйти менее чем через два месяца. Де Радт решил, что в него войдёт SSH, полностью свободный от ограничений.
Работа шла быстро. Из Калгари де Радт вырезал запутанный и непереносимый код, чтобы в нём ничего не могло спрятаться. Нильс Провос, немец, живущий в США, неоднократно приезжал в Канаду, чтобы работать рядом с ним, удаляя криптографию с ограничениями и код под лицензией GPL, заменяя их свободно используемыми библиотеками, такими как OpenSSL. В Германии Маркус Фридл переписал поддержку протоколов, сначала для SSH 1.5, а позже для SSH 2.0 и SFTP. Дуг Сон, Аарон Кэмпбелл и Боб Бек заполнили пробелы. У них не было офиса и инвесторов, только установленный ими самими срок, который они не собирались сдвигать.
1 декабря 1999 года OpenBSD 2.6 вышел вместе с OpenSSH 1.2.2.

То, что произошло дальше, никогда не входило в планы де Радта. Дэймиен Миллер и Филипп Хэндс портировали код на Linux и другие Unix-системы, создав «портативную» версию и оставив ядро OpenBSD нетронутым. Код был свободным. Параноидальная команда провела его аудит. Патент RSA должен был истечь в США в сентябре 2000 года. Поэтому все его взяли. Он вошёл в Linux, Solaris, AIX и macOS, а также в миллионы маршрутизаторов, межсетевых экранов и устройств. К 2008 году опрос показал, что он установлен на более чем 80% SSH-серверов. Современные оценки ещё выше.
Человек, которого выгнали из собственного проекта, построил крепость для себя и нескольких единомышленников-параноиков. В итоге он сделал замок, которым пользуется весь мир. Через него проходят банковские переводы. Администратор, патчащий базу данных больницы в три часа ночи, входит в систему через него. Облачные платформы работают через него. Он построил его, чтобы отгородиться от мира, а мир вошёл внутрь.
Индустрия построила на этом свои состояния. В 2004 году, принимая награду от Фонда свободного программного обеспечения, де Раадт подвёл итоги и выразил благодарность: вендоры оборудования, которые использовали OpenSSH во всех своих продуктах, за пять лет «подарили проекту всего один ноутбук». «И чтобы получить этот ноутбук, ушёл целый год. Это была IBM.»
VI. Половина крылатой ракеты
В Пенсильванском университете Джонатан Смит из Лаборатории распределённых систем руководил проектом POSSE (Portable Open Source Security Elements — Переносные элементы безопасности с открытым исходным кодом). Он получил 2,125 миллиона долларов гранта от DARPA, исследовательского агентства Пентагона и создателя оригинальной ARPANET. Правительство хотело получить надёжное программное обеспечение безопасности с открытым исходным кодом для своих собственных компьютеров и выбрало OpenBSD, назвав его «самым безопасным форумом в мире вычислительной техники для разработки программного обеспечения с открытым исходным кодом». Около 1 миллиона долларов гранта досталось проекту де Раадта.
Проект существовал за счёт пожертвований и продаж CD-дисков и футболок, поэтому эти деньги означали выживание. Они позволили оплатить оборудование и хакатоны, а также дать разработчикам возможность работать на полную ставку.
В марте 2003 года США вторглись в Ирак. Торпеды Tomahawk взлетали с военных кораблей в Персидском заливе и Красном море, оставляя за собой белые огненные следы в ночном небе, и эти кадры облетели весь мир.

В апреле репортёр из Globe and Mail позвонил де Раадту и спросил, как он относится к получению военных денег.
При наличии миллиона долларов на кону ожидаемым ответом была бы благодарность, какие-то слова о том, что работа приносит пользу всем, а затем молчание.
Де Раадт ответил так:
«Мне самому довольно некомфортно от этого, даже если наше твёрдое условие заключалось в том, что они не могут диктовать нам, что делать. Мы просто делаем то, что делаем, — защищаем программное обеспечение, — и у них нет права голоса в этом вопросе. Я пытаюсь убедить себя, что наш грант означает, что не будет построена половина крылатой ракеты.»
В течение нескольких дней DARPA прекратило финансирование. Смит сказал, что военные чиновники были обеспокоены антивоенными высказываниями лидера OpenBSD. Миллион долларов исчез.
Более практичный человек на следующее утро позвонил бы в Пентагон, извинился бы и сказал, что его цитировали вне контекста. Де Раадт не отказался от своих слов. Он не стал бы добавлять в своё ядро закрытый, непроверяемый бинарный файл, и он не стал бы навязывать себе непроверяемое мнение. Его независимость была частью модели безопасности. Если чужие деньги могут решать, что он говорит, они могут решать и то, что он выпускает.
Проект метнулся в сторону и выжил, став беднее, чем прежде.
VII. Гадости
Если он мог так поступить с Пентагоном, то от своих коллег можно было ожидать не лучшего.
Он видел Linux, корпоративную систему, захватившую серверный рынок, как воплощение всего плохого в программном обеспечении. Она ставила на первое место функциональность, поддержку оборудования и долю рынка, а безопасность оставляла на потом. В 2005 году Forbes опубликовало интервью с заголовком «Linux для неудачников?», и де Раадт сказал:
«Это ужасно, все его используют, и они не осознают, насколько оно плохое. А люди из Linux-сообщества просто продолжат использовать его и добавлять новые функции, вместо того чтобы отступить назад и сказать: „Это мусор, и мы должны это исправить“».
Линус Торвальдс ответил тем же. В списке рассылки ядра Linux в 2008 году он назвал сообщество OpenBSD «кучей мастурбирующих обезьян», потому что они так сильно акцентировали внимание на безопасности, что «почти признавались, что для них не имеет значения ничего другого». Он хотел оскорбить. В Калгари это прозвучало как справедливое описание.

Затем были бинарные блоки. Современные Wi-Fi-чипы, видеокарты и сетевые карты часто работают только с секретной микропрограммой, называемой «бинарным блоком», которая загружается в устройство и получает высокие привилегии, никто извне вендора не видит, что она делает. Linux в основном принимает эти блоки, чтобы ноутбуки могли подключаться к Wi-Fi в кофейнях.
Де Раадт отказался. Для него бинарный блок был незнакомцем, которому вручили ключ от хранилища без предъявления удостоверения. Он мог содержать ошибку или бэкдор, и не было способа это проверить, потому что никому не разрешалось заглядывать внутрь. Поэтому он публично, называя имена, обращался к производителям оборудования, требуя документацию.
На конференции в Мельбурне представитель HP предупредил его: «Если вы будете говорить такие гадости вендорам, вы ничего не получите».
Де Раадт ответил:
«Нет, за восемь лет, когда я ничего не говорил, мы ничего не получили, и я собираюсь начать говорить гадости, в надежде, что некоторые из этих вендоров начнут платить мне, чтобы я замолчал».
Публичное осуждение сработало. Несколько крупных тайваньских производителей беспроводных чипов открыли свою документацию. Появились свободные драйверы, для OpenBSD и для всех остальных открытых систем, включая Linux. Человек, которого все считали невозможным, добился того, о чем вежливо просили годами. Почти никто его не поблагодарил.
Затем был Ричард Столлманоснователь Фонда свободного программного обеспечения и автор лицензии GPL. Ее условия копилефта требуют, чтобы каждый, кто строит на основе этого кода, также сохранял свою работу свободной. Де Раадт считал это ошейником, замаскированным под свободу. OpenBSD использовал разрешительные лицензии ISC и BSD, которые позволяли всем, включая корпорации, использовать код для любых целей. Именно так OpenSSH оказалась повсюду. Для де Раадта это была свобода. GPL была чужими правилами.

В декабре 2007 года в списке рассылки openbsd-misc Столлман обвинил OpenBSD в том, что он направляет пользователей к несвободному программному обеспечению через дерево портов. Де Раадт объяснил, с нарастающим раздражением, что дерево портов содержит только Makefiles и URL-адреса, и никакого несвободного программного обеспечения там нет. Столлман не отступил. Де Раадт написал:
«…вы ведете себя как обычный скользкий лицемерный придурок… Вы могли иметь ценность десять лет назад, но люди увидят, что вы ее больше не имеете… Ричард, вы лжец, мошенник и лицемер».
Практически никто не говорит со Столлманом таким образом, ни публично, ни иначе. Дир Радт делает это, потому что ничто не стоит между тем, во что он верит, и тем, что он печатает. Это же качество помешало ему лгать, а Globe and Mail также не позволило ему выпустить проприетарные бинарные блоки. Его честность не направлена ни на кого конкретного. Она направлена во всех направлениях, как шипы на иглобрюхе.
VIII. Письмо
В декабре 2010 года без предупреждения пришло электронное письмо.
Отправителем был Грегори Перри, бывший главный технологический директор компании NETSEC, ныне несуществующего государственного подрядчика, и бывший технический консультант ФБР. В письме он указал, что срок действия его соглашения о неразглашении истек. Десять лет назад, по его словам, ФБР заплатило разработчикам NETSEC за установку бэкдоров и «механизмов утечки ключей через побочные каналы» в криптографическом фреймворке OpenBSD и стеке IPsec, коде, обеспечивающем безопасность VPN. Целью было отслеживание зашифрованного трафика между узлами. Он назвал двух людей, Джейсона Райта и Ангелоса Керомитиса, как лиц, связанных с NETSEC в период написания кода IPsec.
На протяжении пятнадцати лет проект заявлял миру, что ему можно доверять, потому что он никому не доверяет. Теперь его обвиняли в наличии государственного бэкдора.
Обычная организация наняла бы юристов, провела тихое внутреннее расследование, составила заявление-заглушку и надеялась, что история никогда не станет достоянием общественности.
14 декабря 2010 года Дир Радт переслал письмо Перри в полном объеме на публичный список рассылки openbsd-tech.
«Я отказываюсь, — написал он, — становиться частью такого заговора».
Обвинение было направлено против крепости, поэтому он открыл все ворота и пригласил каждого криптографа в мире прийти и проверить ее.
Райт и Керомитис отрицали это. «Я заявляю четко, что я не добавлял бэкдоры в операционную систему OpenBSD», — написал Райт и потребовал извинений. Аудит выявил реальные ошибки того периода, включая «проблему с оракулом CBC» в программном криптографическом стеке, но подтвержденных бэкдоров не обнаружено. Дир Радт сохранил подозрение. «Я считаю, что NetSec, вероятно, была нанята для написания бэкдоров, как утверждается, — сказал он. — Если они были написаны, я не верю, что они попали в наше дерево исходного кода. Возможно, они были развернуты как отдельный продукт».
Обвинение могло быть правдивым, местью или страшной историей из параноидального десятилетия после 11 сентября. Важным был ответ. Когда крепость обвинили, она стала еще более открытой. Она была безопасна не потому, что кто-то обещал это, а потому, что каждый мог прочитать каждую строку и проверить.
IX. Вальгалла
В апреле 2014 года интернет начал кровоточить.

Heartbleed, CVE-2014-0160, была уязвимостью в библиотеке OpenSSL, лежащей в основе значка замка на большинстве зашифрованных веб-трафика. Атакующий в любой точке мира мог отправить некорректное сообщение «heartbeat» и прочитать фрагменты памяти сервера, которые могли содержать пароли, сеансовые куки или закрытые ключи сервера. Уязвимость присутствовала в коде два года, и значительная часть интернета оказалась под угрозой.
Открытый исходный код давно утешал себя цитатой Эрика С. Реймонда о том, что «при достаточном количестве глаз все ошибки поверхностны». Дир Радт всегда считал это сентиментальным. «Моя любимая часть аргумента о «многих глазах», — говорил он, — это то, сколько ошибок нашли два глаза Эрика».
Затем факты стали ясны. Библиотека, защищавшая номера кредитных карт мира, поддерживалась небольшой, истощенной командой, живущей примерно на 2000 долларов в год в виде пожертвований. Код представлял собой болото. Он был переполнен поддержкой устаревших операционных систем, а его пользовательские обертки для работы с памятью мешали тем самым инструментам, которые могли бы обнаружить ошибку.
Де Раадт не подавал отчёт об ошибке. Команда OpenBSD ответвила OpenSSL и назвала ответвление LibreSSL.
Последовавшая за этим чистка была задокументирована в блоге под названием "OpenSSL Valhalla Rampage." В первую неделю они вырезали более 90 000 строк кода на C и около 150 000 строк контента в целом. Исчезла поддержка Classic Mac OS, NetWare, OS/2, 16-битных версий Windows и VMS. Были удалены пользовательские обёртки для работы с памятью и заменены на вызовы стандартной библиотеки.

"Часть из этого — отступы, потому что мы стараемся сделать код более понятным", — сказал де Раадт. "99,99% сообщества не нуждается в поддержке VMS, а 98% не нуждаются в поддержке Windows… Код должен быть простым."
Когда в июне того же года были раскрыты новые уязвимости OpenSSL, он обвинил команду OpenSSL в намеренном исключении LibreSSL из предварительных предупреждений. Разрыв стал окончательным. Это был тот же паттерн, что и после отделения OpenBSD от NetBSD и OpenSSH от SSH Communications. Когда ему доставался испорченный продукт, он не вступал в переговоры. Он ответвлял его, вычищал до основания и возводил новую стену.
X. Стены внутри стен

Большинство людей никогда не видят сам OpenBSD. То, что до них доходит, — это его идеи, которые часто уходят из Калгари и появляются спустя годы, зачастую без указания авторства, в других операционных системах.
В 2011 году, с выходом Mac OS X Lion, Apple начала отказываться от своего старого файрвола в пользу PF, пакетного фильтра OpenBSD, который попал туда через FreeBSD. PF поставляется на каждом Mac с тех пор. В 2018 году Microsoft, ежемесячные обновления безопасности которой долгое время выглядели впечатляюще на фоне заявлений OpenBSD, интегрировала OpenSSH в Windows 10. В Windows Server 2025 она устанавливается по умолчанию. Замок, созданный в Калгари, теперь поставляется вместе с самой Windows.
Принцип, лежащий в основе этих идей, прост: сложность — враг безопасности. Программисты будут совершать ошибки, особенно на C. Поэтому вы строите стены внутри стен, чтобы ошибка в одной комнате не сожгла весь дом.
- strlcpy и strlcat (1999). Стандартные функции копирования строк в C постоянно приводили к переполнению буферов. Тодд К. Миллер и де Раадт представили более безопасные аналоги на конференции USENIX, которые всегда завершают строку нулём и всегда знают размер целевого буфера. Ульрих Дрессер, сопровождающий glibc, годами не допускал их в C-библиотеку Linux. FreeBSD, macOS и Solaris приняли их. В июле 2023 года, спустя двадцать четыре года после публикации статьи на USENIX, glibc версии 2.38 добавила их без особых церемоний. В 2024 году POSIX включил их в стандарт.
- Разделение привилегий. Ниельс Провос внедрил её в OpenSSH. Демон разделяется на две части. Небольшой привилегированный монитор хранит ключи, а более крупный непривилегированный процесс обрабатывает сеть. Атакующий, прорвавшийся на сетевую сторону, оказывается запертым в камере без прав root.
- W^X (Write XOR Execute). Страница памяти может быть либо записываемой, либо исполняемой, но не тем и другим одновременно. Код, внедрённый в буфер данных, не может быть выполнен.
- pledge(2), 2015. Программа заранее объявляет ядру, какие группы системных вызовов она будет использовать, например «stdio» и «rpath», и ничего более. Если её перехватят и она попытается сделать что-то за пределами этого списка, ядро её завершит.
- unveil(2), 2018. Программа объявляет, какие части файловой системы ей разрешено видеть, а остальное исчезает. Атакующий, получивший контроль и начавший искать хеши паролей, ничего не находит.
Исследователь безопасности Томас Птасек, анализируя современные методы изоляции, сказал, что OpenBSD «добился успеха с помощью „pledge“ и „unveil“, которые позволяют программам постепенно ограничивать доступ, предоставляемый ядром». Он положительно сравнил это с сложными профилями seccomp в Linux.
Принцип прост: не доверяйте чужому коду, включая свой собственный. Заставьте каждую программу объявлять, что она будет делать, и пусть ядро завершит её, если она сделает что-то ещё.
XI. Царапина на полу
Фонд OpenBSD, канадская некоммерческая организация, основанная разработчиком Бобом Беком в июле 2007 года, обеспечивает функционирование проекта. Он оплачивает серверы, пропускную способность и оборудование в рамках бюджета, который был бы каплей в море для любой компании, обслуживающей OpenSSH. Прежде всего, он финансирует хакатоны.
Первый состоялся в Калгари в июне 1999 года. Горстка разработчиков поселилась в доме без ключевых докладов, спонсоров или презентаций. У них были ноутбуки, кабели, кофе и спальные мешки на полу, и они работали круглосуточно в течение недели. Результатом стал отраслевой новшество: стеки IPv6 и IPsec, полностью интегрированные в операционную систему. Они также оставили царапину на деревянном полу дома, о которой проект помнит до сих пор.

Разработчики OpenBSD на хакатоне c2k1, MIT, июнь 2001 года.
Последующие хакатоны проходили в арендованных домах, университетских общежитиях и в любом дешёвом месте, которое могло принять несколько десятков человек, почти не спавших. Они проводятся только по приглашениям и являются изнурительными. Люди, которые большую часть года проводят на разных континентах, обмениваясь краткими письмами, сидят рядом и вносят существенные архитектурные изменения непосредственно в дерево исходного кода.
Де Раадт сидит в центре, хранитель ворот с последним словом. Он требует совершенства и не терпит посредственности. Он сделает систему сложнее в использовании, прежде чем сделает её хоть на градус слабее. Майкл Лукас дал своей книге о системе подзаголовок UNIX для практичного параноика. Он мог бы служить подписью к её основателю.
Истории о его ожесточённых спорах оставляют что-то упущенным. Люди остаются. Маркус Фридль, Дамиен Миллер и Боб Бек появляются на протяжении двадцати пяти лет истории проекта. Один страх не удерживает людей так долго. Это чувство принадлежности: к небольшой, сплочённой группе, которая согласна, что работа стоит на первом месте и что сделать всё правильно с первого раза стоит любых неприятностей.
В крепости есть люди, и они выбрали быть там.

На конференции FISL в Порту-Алегри в 2007 году Джон «мэддог» Холл вручает Тео де Раадту пару красных рогов дьявола.
XII. Половина секунды, снова
Возвращение в Калгари в конце марта 2024 года.
Мир Linux всё ещё разбирается с последствиями, извлекает пакеты и пересобирает их из чистых исходных текстов. Комментаторы пишут длинные рассуждения о выгорании сопровождающих, которое позволило Цзя Тану пробраться внутрь. Где-то люди, создавшие бэкдор — будь то правительство, преступная группа или один одарённый индивидуум — наблюдали, как более двух лет работы были уничтожены за полсекунды.
Крепость на прерии осталась нетронутой.
Удача здесь ни при чём. Десятилетия назад мальчик, которого уже дважды изгоняли из дома, решил, что ничему нельзя доверять, пока ты не понимаешь его до самого дна. Молодого человека вышвырнули из проекта, над которым он работал, и он дал себе клятву, что никто больше никогда не будет держать его ключи. Он отказался от systemd, бинарных блоков, лицензии GPL и денег Пентагона, как только почувствовал их нити. И в Квебеке в 2015 году он вслух произнёс буквы XZ как пример кода, который его пугал.
Эти черты неразделимы. Паранойя, из-за которой его выгнали из NetBSD, породила OpenBSD. Презрение, заставившее вендоров содрогаться в Мельбурне, обеспечило бесплатными драйверами Wi-Fi всех желающих. Отсутствие фильтра между его совестью и языком стоило ему денег DARPA и вывело обвинения ФБР на свет божий. Аррогантность, написавшая фразу "лжец, мошенник, лицемер" посмотрела на Heartbleed и решила переписать OpenSSL.
По большинству мнений, он не приятный человек, и, вероятно, не хотел бы, чтобы его так называли. Приятные люди берут деньги DARPA и молчат, поставляют бинарные блоки, сохраняют старый код и прячут письмо от ФБР в ящик стола. Приятные люди написали большую часть мирового программного обеспечения, и это ПО находится в плачевном состоянии.
Интернет протекает, его латают и держат на коммерческих компромиссах, уставших волонтёрах и коде, который никто не читал уже двадцать лет. В самом его центре, где проходит самый чувствительный трафик, стоит замок, сделанный в Калгари человеком, которому никто не доверяет. Он держится, пока вокруг рушатся системы стоимостью в миллиарды. Он держится, потому что его создатель каждый рабочий день предполагал, что кто-то придёт, чтобы его сломать.
Он оказывался прав чаще, чем нет.
Примечание о методе: эта статья использует реконструированные сцены, косвенно-прямую речь и драматическое сжатие. События, даты, фигуры и цитаты взяты из источников, перечисленных ниже. Внутренние мысли, приписываемые Тео де Рааду, и атмосферные детали отдельных сцен являются авторской художественной реконструкцией, а не сообщёнными фактами.
Ссылки
- Встречи CUUG: 2017–2018, http://www.cuug.ab.ca/past-meetings/meetings.17-18.html
- OpenSSH/Overview — Wikibooks, https://en.wikibooks.org/wiki/OpenSSH/Overview
- Открытое программное обеспечение против проприетарного, https://uomustansiriyah.edu.iq/media/lectures/6/6_2019_03_12!12_11_28_AM.pdf
- Калгарийский программист Тео де Раад: биография и проекты, https://calgary-future.com/en/eternal-calgary-programmer-theo-de-raadt-biography-and-projects
- Тео де Раадт — Википедия, https://en.wikipedia.org/wiki/Theo_de_Raadt
- Хакатоны — OpenBSD, https://www.openbsd.org/hackathons.html
- OpenBSD — Википедия, https://en.wikipedia.org/wiki/OpenBSD
- Тео де Раадт — Wikiquote, https://en.wikiquote.org/wiki/Theo_de_Raadt
- Раадт, Тэо де — Цитаты известных личностей, https://ru.citaty.net/avtory/raadt-teo-de/
- Linux для неудачников? — OSnews, https://www.osnews.com/story/10889/is-linux-for-losers/comment-page-2/
- netbsd-users: Тео Де Раадт, https://mail-index.netbsd.org/netbsd-users/1994/12/23/0000.html
- Проект POSSE — Википедия, https://en.wikipedia.org/wiki/POSSE_project
- Известные мужчины-программисты — Ranker, https://www.ranker.com/list/famous-male-programmers/reference?page=2
- Тео де Раадт — Alchetron, https://alchetron.com/Theo-de-Raadt
- Справочник OpenBSD, https://www.openbsdhandbook.com/
- Что такое OpenBSD? Обзор и последние функции — Liquid Web, https://www.liquidweb.com/blog/what-is-openbsd/
- strlcpy и strlcat — последовательное, безопасное копирование и конкатенация строк (USENIX 1999), https://www.usenix.org/event/usenix99/full_papers/millert/millert.pdf
- Введение — Справочник OpenBSD, https://www.openbsdhandbook.com/introduction/
- OpenSSH — Труды 12-го симпозиума USENIX по безопасности, https://www.usenix.org/event/sec03/tech/full_papers/provos_et_al/provos_et_al.pdf
- CarolinaCon 15: Написание кода, устойчивого к эксплойтам, с использованием OpenBSD, https://lteo.net/blog/2019/04/27/carolinacon-15-writing-exploit-resistant-code-with-openbsd/
- Написание кода, устойчивого к эксплойтам, с использованием OpenBSD — Лоуренс Тео, https://lteo.net/assets/pdf/lteo-openbsd-carolinacon15-20190427.pdf
- История SSH: от telnet к OpenSSH — SSD Nodes, https://www.ssdnodes.com/learn/history-of-ssh-telnet-to-openssh
- История проекта — OpenSSH, https://www.openssh.org/history.html
- Открытый исходный код не приносит денег, потому что он не предназначен для этого — Reddit, https://www.reddit.com/r/programming/comments/b30m3s/open_source_doesnt_make_money_because_it_isnt/
- "Требуется ядро OpenBSD без бинарных блоков" — Hacker News, https://news.ycombinator.com/item?id=9671025
- "Нам нужно больше людей, подобных Линусу" — Reddit, https://www.reddit.com/r/degoogle/comments/1vp1unn/we_need_more_people_like_linus/
- Цитаты Тео де Раада, https://beruhmte-zitate.de/autoren/theo-de-raadt/
- HACK — СТАТЬИ ОБ ИТ, https://cancoute-666.blogspot.com/2010/05/hack.html
- Криптографическая подсистема OpenBSD — Википедия, https://en.wikipedia.org/wiki/OpenBSD_Cryptographic_Framework
- Основатель OpenBSD считает, что ФБР создало бэкдор в IPsec — Dark Reading, https://www.darkreading.com/vulnerabilities-threats/openbsd-founder-believes-fbi-built-ipsec-backdoor
- ФБР внедрило бэкдоры для лёгкого шпионажа в интернете, утверждает — Gizmodo, https://gizmodo.com/the-fbi-planted-backdoors-to-easily-spy-on-the-internet-5713735
- Внедрило ли ФБР бэкдоры в OpenBSD? — Intego, https://www.intego.com/mac-security-blog/did-the-fbi-plant-backdoors-in-openbsd/
- Появляются новые детали о бэкдорах ФБР в OpenBSD — OSnews, https://www.osnews.com/story/24142/more-details-emerge-regarding-openbsd-fbi-backdoors/
- Обвинения в наличии бэкдоров в OpenBSD могут быть правдивыми, обновлено — Linux Journal, https://www.linuxjournal.com/content/allegations-openbsd-backdoors-may-be-true
- Как предотвратить следующий Heartbleed — Дэвид А. Уилер, https://dwheeler.com/essays/heartbleed.html
- Heartbleed — Википедия, https://en.wikipedia.org/wiki/Heartbleed
- OpenBSD форкает, очищает и исправляет OpenSSL — ZDNET, https://www.zdnet.com/article/openbsd-forks-prunes-fixes-openssl/
- Опровергает ли уязвимость Heartbleed закон Линуса? — Armed and Dangerous, http://esr.ibiblio.org/?p=5665
- TrueCrypt, Heartbleed и извлечённые уроки — zwilnik, https://www.zwilnik.com/security-and-privacy/true-crypt-heartbleed-and-lessons-learned/
- LibreSSL — Википедия, https://en.wikipedia.org/wiki/LibreSSL
- LibreSSL: почему у OpenSSL нет решения — Desde Linux, https://blog.desdelinux.net/en/libressl-because-openssl-is-irreparable-according-to-openbsd/
- C programming/C reference/nonstandard/strlcpy — Wikibooks, https://en.wikibooks.org/wiki/C_programming/C_reference/nonstandard/strlcpy
- Повышение безопасности XFree86 — OpenBSD, http://www.openbsd.org/papers/xf86-sec.pdf
- Понижение привилегий, разделение привилегий и операционная система с ограниченным сервисом, https://sha256.net/privsep.html
- Функции безопасности OpenBSD — Википедия, https://en.wikipedia.org/wiki/OpenBSD_security_features
- Раннее предупреждение об инциденте с XZ? — synhack.org, https://synhack.org/blog/pledge/
- Распространение песочницы в экосистеме открытого ПО — arXiv, https://arxiv.org/pdf/2405.06447
- Песочница и изоляция рабочих нагрузок — Fly.io, https://fly.io/blog/sandboxing-and-workload-isolation/
- Задний ход в upstream-пакете xz/liblzma, приведший к компрометации SSH-сервера — LowEndTalk, https://lowendtalk.com/discussion/193769/backdoor-in-upstream-xz-liblzma-leading-to-ssh-server-compromise-openwall-com-via-hacker-news
- Блог — Vivian Voss, https://vivianvoss.net/blog
- Привёл ли (или мог ли привести) бэкдор в XZ Utils к проблемам в экосистеме BSD? — Reddit, https://www.reddit.com/r/freebsd/comments/1btxreq/did_or_would_the_xz_utils_backdoor_affect_the_bsd/
- OpenBSD — уютная операционная система — Hacker News, https://news.ycombinator.com/item?id=40024393
- Мероприятия — Фонд OpenBSD, https://www.openbsdfoundation.org/activities.html
- www/hackathons.html в ветке master · openbsd/www — GitHub, https://github.com/openbsd/www/blob/master/hackathons.html
- OpenBSD в Канаде — undeadly.org, https://undeadly.org/cgi?action=article;sid=20230226065006
- Абсолютный OpenBSD: UNIX для практичных параноиков — Майкл У. Лукас
- Линус Торвальдс об OpenBSD («мастирующиеся обезьяны»), LKML, июль 2008 года — https://lkml.org/lkml/2008/7/15/296
- Доступна версия 2.38 библиотеки GNU C — GNU info-gnu, июль 2023 года, https://lists.gnu.org/archive/html/info-gnu/2023-07/msg00010.html
- Обзор OpenSSH для Windows — Microsoft Learn, https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh-overview
- Установка OpenSSH в Windows 10 (версии 1803 и новее) и Server 2019 — 4sysops, https://4sysops.com/archives/installing-openssh-on-windows-10-1803-and-higher-and-server-2019/
- PF (брандмауэр) — Wikipedia, https://en.wikipedia.org/wiki/PF_(firewall)
- Ipfirewall — Wikipedia, https://en.wikipedia.org/wiki/Ipfirewall
- Начало работы с сервером OpenSSH для Windows — Microsoft Learn, https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse
- strlcat — POSIX.1-2024, The Open Group, https://pubs.opengroup.org/onlinepubs/9799919799/functions/strlcat.html
Указание авторства изображений
- dunnottar-graded.jpg — Замок Данноттар, Абердиншир, Шотландия (преобразовано в черно-белое изображение; адаптация распространяется на тех же условиях). Стратос Филалитис / Wikimedia Commons, CC BY-SA 4.0, https://commons.wikimedia.org/wiki/File:Dunnotar_Castle_with_clouds.jpg
- calgary-blizzard.jpg — Пустая дорога, покрытая снегом, под уличными фонарями во время ночной метели в северном Калгари (преобразовано в черно-белое изображение). Колби Стопа / Flickr, CC BY 2.0, https://www.flickr.com/photos/93057803@N06/11189129403
- theo-de-raadt-bw.jpg — Тео де Раадт выступает на ruBSD 2013 в Москве (обрезано и преобразовано в черно-белое изображение). FAndrey / Wikimedia Commons, CC BY 2.0, https://commons.wikimedia.org/wiki/File:Theo_de_Raadt_2013.jpg
- yukon.jpg — Горный хребет Томбстоун зимой, вид с перевала North Fork, Юкон (преобразовано в черно-белое изображение). Dlogic / Wikimedia Commons, CC BY 3.0, https://commons.wikimedia.org/wiki/File:Tombstone_mountain_range_winter.jpg
- vic-20.jpg — Commodore VIC-20 (преобразовано в черно-белое изображение). Evan-Amos / Wikimedia Commons, общественное достояние, https://commons.wikimedia.org/wiki/File:Commodore-VIC-20-FL.jpg
- sparcstation.jpg — Sun SPARCstation IPX (преобразовано в черно-белое изображение; адаптация распространяется на тех же условиях). htomari / Wikimedia Commons, CC BY-SA 2.0, https://commons.wikimedia.org/wiki/File:Sun_SPARCstation_IPX.jpg
- puffy.png — Puffy, талисман OpenBSD (3D-рендеринг) (преобразовано в черно-белое изображение). art.gnux.info / Wikimedia Commons, CC BY 1.0, https://commons.wikimedia.org/wiki/File:Puffy.png
- vt100.jpg — Терминал DEC VT100, Музей компьютеров (преобразовано в черно-белое изображение). Джейсон Скотт / Wikimedia Commons, CC BY 2.0, https://commons.wikimedia.org/wiki/File:DEC_VT100_terminal.jpg
- openssh-logo.png — Логотип OpenSSH (преобразовано в черно-белое изображение). OpenSSH / проект OpenBSD, используется для идентификации, https://www.openssh.com/
- tomahawk-2003.jpg — Эсминец USS Donald Cook (DDG 75) запускает ракету «Томагавк» в сторону Ирака, 21 марта 2003 года (преобразовано в черно-белое изображение). Фото ВМС США, главный журналист Алан Дж. Барибо / Wikimedia Commons, общественное достояние, https://commons.wikimedia.org/wiki/File:US_Navy_030321-N-6141B-012_The_guided_missile_destroyer_USS_Donald_Cook_(DDG_75)_launches_a_Tomahawk_Land_Attack_Missile_(TLAM)_toward_Iraq_during_the_initial_stages_of_Operation_Iraqi_Freedom.jpg
- torvalds.jpg — Линус Торвальдс на LinuxCon Europe 2014 в Дюссельдорфе (изображение приведено к чёрно-белому виду; адаптация распространяется на тех же условиях). Krd (фото), Von Sprat (кадрирование) / Wikimedia Commons, CC BY-SA 4.0, https://commons.wikimedia.org/wiki/File:LinuxCon_Europe_Linus_Torvalds_03_(cropped).jpg
- stallman.jpg — Ричард Столлман на LibrePlanet 2019 (изображение приведено к чёрно-белому виду). Ruben Rodriguez / Wikimedia Commons, CC BY 4.0, https://commons.wikimedia.org/wiki/File:Richard_Stallman_at_LibrePlanet_2019.jpg
- heartbleed.png — Логотип Heartbleed (изображение приведено к чёрно-белому виду). Leena Kurjenniska / Codenomicon / Wikimedia Commons, CC0, https://commons.wikimedia.org/wiki/File:Heartbleed.svg
- libressl.png — Логотип LibreSSL (изображение приведено к чёрно-белому виду). LibreSSL / проект OpenBSD, используется для идентификации, https://www.libressl.org/
- datacenter.jpg — Серверные стойки в дата-центре BalticServers (изображение приведено к чёрно-белому виду; адаптация распространяется на тех же условиях). BalticServers.com / Wikimedia Commons, CC BY-SA 3.0, https://commons.wikimedia.org/wiki/File:BalticServers_data_center.jpg
- hackathon.jpg — Разработчики OpenBSD на хакатоне c2k1 в MIT, июнь 2001 года (изображение приведено к чёрно-белому виду). Dug Song / Wikimedia Commons, общественное достояние, https://commons.wikimedia.org/wiki/File:OpenBSD_hackers_at_c2k%2B%2B_at_MIT.jpg
- theo-de-raadt-2.jpg — Джон «maddog» Холл вручает Тео де Рааду набор красных пластиковых рогов, FISL 8, Порту-Алегри, 2007 год (изображение приведено к чёрно-белому виду; адаптация распространяется на тех же условиях). Randal Schwartz / Wikimedia Commons, CC BY-SA 2.0, https://commons.wikimedia.org/wiki/File:Jon_%22maddog%22_Hall_gives_Theo_de_Raadt_a_set_of_red_plastic_horns.jpg
Комментарии (0)
Войти, чтобы прокомментировать