Новости Безопасный C без Rust. Криптограф-скептик испытал Fil-C — и впервые за десятилетия сказал: «Этому коду можно доверять»

NewsMaker

I'm just a script
Премиум
21,871
46
8 Ноя 2022
Он 16 лет ждёт уязвимость в своём коде, но готов доверить свои серверы новому компилятору.


rx43q2buzm55d9982lvooa76fe2no567.jpg


Один из самых известных криптографов и программистов мира, Дэниел Дж. Бернстайн, протестировал новый типбезопасный компилятор Fil-C , предназначенный для языков C и C++. И хотя сам он описал результаты всего лишь как «заметки по использованию Fil-C», его оценка оказалась удивительно положительной.

Бернстайн отмечает, что компилятор обеспечивает высокий уровень совместимости: большинство библиотек и приложений, с которыми он экспериментировал, работали под Fil-C без изменений. Там, где требовались доработки, их удавалось сделать быстро. Учёный собирает собственные наблюдения на отдельной странице и признаётся, что прежде всего хочет защитить управляемые им серверы, постепенно переводя их на код, собранный с помощью нового компилятора.

Fil-C — проект, о котором впервые заговорили год назад. Он основан на Clang, фронтенде для компилятора LLVM , разработанном Apple и широко применяемом в экосистеме C-языков. Идея в том, чтобы сделать привычный C и C++ безопаснее без кардинального изменения синтаксиса и без внедрения внешних «надстроек» вроде Rust.

Fil-C — не единственный инструмент, пытающийся решить проблему. Почти одновременно появился другой компилятор, TrapC, созданный Робином Роу. На аппаратном уровне аналогичных целей добиваются проекты CHERI и OMA (Object Memory Architecture). Первый развивается при поддержке Кембриджского университета и внедряет расширения процессорной архитектуры для предотвращения ошибок доступа к памяти. Второй вырос из докторской работы Эда Наттинга, посвящённой аппаратному сборщику мусора, и недавно сравнивался самим автором с CHERI в блоге под заголовком Two Paths to Memory Safety.

Безопасность памяти остаётся одной из самых острых тем в индустрии . Миллиарды строк C-кода, написанные за десятилетия, содержат уязвимости, из-за которых компании вынуждены выпускать бесконечные обновления. Поэтому появление инструментов вроде Fil-C вызывает огромный интерес: они способны «ловить» целые классы ошибок — от выхода за границы массива до использования уже освобождённой памяти.

Автор Fil-C, инженер Филип Пизло, не раз объяснял, чем его подход отличается от конкурентов. В отличие от CHERI, Fil-C не меняет размер указателя (sizeof(void*)), поэтому обеспечивает лучшую совместимость с существующими программами. Например, под Fil-C удалось без доработок запустить интерпретатор CPython, что пока недостижимо на платформе CHERI. Кроме того, компилятор корректно обрабатывает случаи повторного обращения к уже освобождённой памяти — одна из самых опасных ошибок в C-коде.

Конечно, Fil-C не лишён недостатков. Программы, собранные с его помощью, работают медленнее обычных, а двоичная совместимость с «классическим» C (который сам Пизло шутливо называет Yolo-C) не полная. Невозможно просто перекомпилировать целую операционную систему и запустить её без адаптации, но отдельные компоненты крупных проектов можно сделать безопаснее без переписывания на Rust или Zig. В этом смысле Fil-C возвращает старому C конкурентоспособность в эпоху языков с встроенной защитой памяти.

Что делает отзыв Бернстайна особенно значимым — это его собственная репутация. Автор одних из самых безопасных реализаций сетевых сервисов, он с 2009 года предлагает тысячу долларов каждому, кто найдёт уязвимость в его DNS-сервере djbdns или почтовом агенте qmail. Спустя шестнадцать лет призы всё ещё не востребованы. Ещё в 1990-х он вошёл в историю криптографии своими работами по алгоритмам и защитным библиотекам, а среди коллег получил сокращённое прозвище DJB, став одним из «трёхбуквенных» легенд хакерского мира — наряду с RMS, ESR и JWZ.

Поэтому его мнение о новом компиляторе воспринимается не как частный отзыв, а как знак доверия со стороны человека, всю карьеру посвятившего поиску ошибок и уязвимостей. И если даже DJB готов переводить свои системы на Fil-C, у этого проекта явно есть шанс стать важной вехой в истории C-языков.
 
Источник новости
www.securitylab.ru

Похожие темы