Когда говорят о защите от memory bugs, чаще всего сравнивают два подхода:
Rust предотвращает ошибки на уровне языка, а CHERI — на уровне аппаратной архитектуры. Это не конкуренты “или-или”, а два разных слоя защиты.
Что такое CHERI
CHERI (Capability Hardware Enhanced RISC Instructions) — архитектурный подход, который добавляет в процессор capability-указатели.
Такой указатель хранит не только адрес, но и:
- границы допустимой памяти
- права доступа: чтение, запись, выполнение
- защиту от подделки
Итог: даже если программа пытается выйти за пределы буфера или обратиться не туда, железо может это заблокировать.
Что решает CHERI
CHERI нацелен на самые частые классы уязвимостей:
- buffer overflow
- out-of-bounds access
- use-after-free
- повреждение указателей
- часть атак на control flow
Это особенно важно для C/C++, где ручная работа с памятью исторически даёт высокую производительность, но и высокий риск ошибок.
Что делает Rust
Rust решает проблему иначе:
- ownership
- borrowing
- строгая типизация
- проверки на этапе компиляции
- безопасная работа с памятью без GC
Большинство ошибок памяти Rust не допускает ещё до запуска программы. Именно поэтому он так ценится в системной разработке, backend, embedded и security-critical ПО.
CHERI vs Rust: ключевая разница
- Rust — про предотвращение ошибок в исходном коде
- CHERI — про аппаратное ограничение последствий ошибок во время выполнения
То есть Rust снижает вероятность появления бага, а CHERI снижает шанс, что баг станет эксплойтом.
Где Rust сильнее
- новые проекты с нуля
- контроль инвариантов на этапе компиляции
- меньше runtime-накладных рисков
- высокая безопасность без необходимости менять CPU
Где CHERI сильнее
- огромные legacy-кодовые базы на C/C++
- системы, где переписывание на Rust слишком дорого
- сценарии, где нужна защита даже для уже существующего небезопасного кода
- ОС, прошивки, low-level runtime
Есть ли у CHERI минусы
Да:
- нужна поддержка архитектуры и экосистемы
- сложнее массовое внедрение
- не заменяет безопасную разработку
- логические ошибки CHERI не исправляет
Итог
Лучший вопрос — не “что победит: CHERI или Rust?”, а как их сочетать.
Rust — это сильная профилактика.
CHERI — это аппаратурный ремень безопасности. 🛡️
Для индустрии это особенно ценно: часть новых компонентов можно писать на Rust, а legacy на C/C++ усиливать через CHERI. Такой гибридный путь выглядит реалистичнее, чем ждать полного отказа от старых стеков.
📌 Если интересны архитектуры процессоров, языки системного программирования, безопасность и low-level разработка — загляните в подборку каналов про IT.