Выбрать главу

Ещё в 2003 году программисты-разработчики, занимавшиеся созданием очередной версии (2.6) ядра ОС Linux, благодаря удачному стечению обстоятельств обнаружили и ликвидировали в открытых исходных кодах системы тайный бэкдор. Причем реализован этот бэкдор был настолько хитро и искусно, что даже для закоренелых скептиков разговоры о неуловимых троянах в открытом ПО перестали звучать как бред параноиков.

Подробности этой истории в своё время освещались на страницах "Компьютерры" (см. текст "Такая вот паранойя"), здесь же достаточно упомянуть лишь суть. Выявленный тайный ход в систему представлял собой совершенно неприметное добавление всего из двух строчек кода, тщательно замаскированных под невинный контроль ошибок, сопровождающий одну из функций системного вызова. Эта функция была доступна любой программе, работающей на компьютере, и на первый взгляд просто говорила операционной системе сделать паузу, пока другая программа не завершит свою работу. Лишь при особо тщательном исследовании было установлено, что человек, знавший нужное (и в данных условиях экзотическое) сочетание управляющих флагов плюс место, где их следует применить, получал бы благодаря этим двум строчкам полный, с максимальными привилегиями Root, контроль над любой машиной, работающей под ОС Linux с новым ядром. То есть такой операционной системы, исходный код которой всегда был открыт и доступен любому для выявления потенциальных слабостей.

Знающие люди в рядах движения за свободное ПО, конечно же, наверняка были наслышаны об этой истории. Сразу после публикации писем де Раадта и Перри в сообществе OpenBSD начались аудиторские проверки криптоподсистем этой ОС. Первые же дни пристрастных перепроверок позволили выявить в кодах пару существенных и прежде незамеченных багов - не особо, впрочем, похожих на коварный бэкдор. На первый взгляд, по крайней мере.

В следующем письме Тео де Раадта, разосланном им для разработчиков OpenBSD, обрисована суть обнаруженных багов и делается попытка прояснить те роли, что могли сыграть в их появлении конкретные программисты от фирмы NetSec - Джейсон Райт и Ангелос Керомитис. Нет никаких сомнений, что два этих видных разработчика проекта OpenBSD были непосредственно связаны с NetSec, однако де Раадт со всей осторожностью предупреждает, что не знает, были ли сами эти люди в курсе относительно тесных дел их компании с ФБР.

Как бы там ни было, система контроля над модификациями кода, реализованная при разработке OpenBSD, позволяет аудиторам проконтролировать, какие из разработчиков участвовали в написании каких именно сегментов кода. Согласно де Раадту, Джейсон Райт был главным образом вовлечён в программирование драйверов и не имел никакого отношения к созданию криптографической подсистемы OCF. При этом он явно работал над некоторыми частями стека IPSec. В своём ответном письме Джейсон Райт категорически отверг обвинения, будто он встраивал бэкдоры в код OpenBSD. Однако де Раадт тут же подверг Райта критике за то, что он в своей реакции так и не прояснил суть работы, которой занимался в NetSec.

Основной фокус расследования аудиторов, насколько можно понять, тем временем сместился с Райта на вклад Ангелоса Керомитиса, который, согласно де Раадту, был архитектором и главным разработчиком стека IPSec в OpenBSD. Правда, есть информация, что Керомитис официально начал работать на NetSec несколько позже. Но при этом, как отмечает де Раадт, именно тогда в кодах OpenBSD появилась концепция небезопасных векторов инициализации, которую, впрочем, затем удалили на последующей стадии разработки.

По свидетельству де Раадта, те несколько багов, что уже выявил нынешний аудит, могли бы иметь последствия в ослаблении безопасности. Однако, по личному мнению лидера проекта, природа этих багов предполагает, что они не были преднамеренными и тем более не обеспечивают тайный ход в криптографию операционной системы. Но можно отметить, что один из этих багов, относящийся к известной специалистам "проблеме CBC-оракула" (предсказуемые векторы инициализации, кратко IV), в IPSEC-стеке уже был выявлен прежде и в свое время залатан Ангелосом Керомитисом. Однако в драйверах устройств, за разработку которых отвечал Джейсон Райт, этот же баг остался проигнорированным. Другая из выявленных ныне дыр также связана с инструкцией в аппаратном драйвере. Кроме того, де Раадт мимоходом упомянул ещё об одной проблеме в подсистеме генерации случайных чисел, однако в подробности на этот счёт пока вдаваться не стал.

Наиболее же серьёзным откровением для всех интересующихся, как считается, стала "новость" о давнем обнаружении условного нехорошего выражения в более старых версиях кода модуля ESP (Encapsulating Security Payload). Эта серьёзная дыра была по-тихому заделана разработчиками ещё в 2002 году, но, что примечательно, без обычного процесса публичного раскрытия уязвимости. Этот баг как таковой не присутствует в современных версиях OpenBSD, однако он оставался неизвестным для пользователей из-за отсутствия публичных рекомендаций по укреплению безопасности.