Языки с безопасной памятью
Что такое Языки с безопасной памятью?
Языки с безопасной памятьюЯзыки с безопасной памятью, такие как Rust, Go, Swift, Java и C#, исключают пространственные и временные ошибки памяти, на которых строится большинство эксплойтов C и C++.
Такие языки на этапе компиляции или исполнения обеспечивают проверки границ, владение или времена жизни с GC и согласованность типов. Rust использует систему владения и заимствований без сборщика мусора; Go и Swift полагаются на управляемое выделение и срезы с проверкой границ; Java и C# работают через управляемый рантайм. Доклад Управления национального киберконтролёра США (ONCD) 2024 года Back to the Building Blocks рекомендует внедрять языки с безопасной памятью для нового кода и критичных компонентов, чтобы устранить 60–70% серьёзных уязвимостей, связанных с памятью. Подходы к внедрению — переписывание горячих участков, шаблон strangler и границы FFI для интеграции с легаси.
● Примеры
- 01
Android переписывает части стека Bluetooth на Rust, чтобы снизить риск UAF.
- 02
AWS переписывает части Firecracker и s2n-tls на Rust для повышения безопасности памяти.
● Частые вопросы
Что такое Языки с безопасной памятью?
Языки с безопасной памятью, такие как Rust, Go, Swift, Java и C#, исключают пространственные и временные ошибки памяти, на которых строится большинство эксплойтов C и C++. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Языки с безопасной памятью?
Языки с безопасной памятью, такие как Rust, Go, Swift, Java и C#, исключают пространственные и временные ошибки памяти, на которых строится большинство эксплойтов C и C++.
Как работает Языки с безопасной памятью?
Такие языки на этапе компиляции или исполнения обеспечивают проверки границ, владение или времена жизни с GC и согласованность типов. Rust использует систему владения и заимствований без сборщика мусора; Go и Swift полагаются на управляемое выделение и срезы с проверкой границ; Java и C# работают через управляемый рантайм. Доклад Управления национального киберконтролёра США (ONCD) 2024 года Back to the Building Blocks рекомендует внедрять языки с безопасной памятью для нового кода и критичных компонентов, чтобы устранить 60–70% серьёзных уязвимостей, связанных с памятью. Подходы к внедрению — переписывание горячих участков, шаблон strangler и границы FFI для интеграции с легаси.
Как защититься от Языки с безопасной памятью?
Защита от Языки с безопасной памятью обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Языки с безопасной памятью?
Распространённые альтернативные названия: MSL, Memory-safe языки.
● Связанные термины
- appsec№ 670
Безопасность памяти
Безопасность памяти — свойство, при котором программа никогда не читает, не пишет и не исполняет память, которую она не выделяла легитимно, что устраняет целые классы уязвимостей.
- appsec№ 953
Свойства безопасности Rust
Rust обеспечивает безопасность памяти и потоков на этапе компиляции через владение, заимствования и времена жизни, устраняя UAF и гонки данных без сборщика мусора.
- appsec№ 217
Целостность потока управления
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
- appsec№ 064
ASLR
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
- appsec№ 925
Возвратно-ориентированное программирование (ROP)
ROP — техника эксплуатации с повторным использованием кода, в которой короткие последовательности инструкций, оканчивающиеся RET, выстраиваются в цепочку для выполнения произвольных вычислений без внедрения нового кода.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) — функция процессора, объединяющая аппаратный теневой стек и Indirect Branch Tracking (IBT) для блокировки ROP, JOP и COP.
● См. также
- № 581KASLR