vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2022-06-17 11:45 am

CheriBSD

Вам надоели указатели в Си/Си++? Тогда CHERI идёт к вам!

CHERI расшифровывается как "Capability Hardware Enhanced RISC Instructions". Это исследовательский проект в Кембридже по замене указателей на более безопасные capabilities. Не знаю как это по русски. В отличие от указателей capabilities содержат также границы и уровень доступа. ARM сделал экспериментальный процессор Morello с поддержкой capabilities.

Архитектура хардвера описана в статье: "CheriABI: Enforcing Valid Pointer Provenance and Minimizing Pointer Privilege in the POSIX C Run-time Environment" (PDF).

Особенности языка Си/Си++ на такой архитектуре приведены в статье: "CHERI C/C++ Programming Guide" (PDF).

Развивается проект CheriBSD: перенос операционной системы FreeBSD на платформу CHERI.

На видео показана работа графического сервера Wayland и демо OpenGL на процессоре Morello под операционной системой CheriBSD.



Подобных проектов в истории было много. Кто помнит, советская ЭВМ Эльбрус разрабатывалась с аналогичной целью, защититься от программных ошибок адресации памяти. Но во всех таких проектах софт приходилось писать с нуля из-за полной несовместимости с существующими методами программирования. А здесь 99% софта переносится без проблем.
vit_r: default (Default)

[personal profile] vit_r 2022-06-17 09:19 pm (UTC)(link)
Не будет ли это жутко тормозить?

На мой взгляд, проблема как раз в методах программирования. Ошибки всё равно придётся обрабатывать.
perdakot: (Default)

[personal profile] perdakot 2022-06-17 10:02 pm (UTC)(link)
Ошибки всё равно придётся обрабатывать.

Эта штуковина будет предсказуемо крашиться при обращении не в ту память что полезно для безопасности и ошибка доступа будет видна сразу, а не как попезет.
vit_r: default (Default)

[personal profile] vit_r 2022-06-18 05:06 am (UTC)(link)
Та программа, которая не запускается, полностью безопасна. Но есть и другие критерии.
dmytrish: (bartson)

[personal profile] dmytrish 2022-06-21 08:54 pm (UTC)(link)
A memory-safe language это однозначно хорошо, поддержка железом соблюдения pointer provenance — тоже очень хорошо.