Действительно ли ARM является более безопасной системой команд?

Я считал, что 'Нормальные' инструкции ARM являются фиксированной длиной - 32 бита. И что никакая инструкция ARM не может вскочить в середину другой инструкции - что-то, что легко сделать с x86 инструкциями.

(Для x86 NaCl Google пытается 'зафиксировать' это путем выравнивания инструкций относительно 32-байтовых границ.)

Это делает программы ARM более безопасными или более стойкими к определенным нападениям?

Если так, это расширяется на инструкции по Java и Ползунок?

5
задан philcolbourn 2 March 2010 в 12:26
поделиться

2 ответа

Место, где может быть безопаснее, - это сканирование кода операции в процесс песочницы. Если вы хотите запретить или перехватить какую-либо инструкцию, это проще сделать с набором инструкций фиксированной длины. В архитектуре x86 набор инструкций зависит от контекста, а инструкция имеет переменную длину, поэтому инструкция, которая кажется безобидной, может фактически встроить другую инструкцию, если вы проанализируете ее с правильным смещением. Вы можете эффективно «перейти в середину инструкции», оставаясь при этом действующей инструкцией.

ARM легче анализировать, и режим большого пальца не меняет этого. Таким образом, набор инструкций ARM не особенно безопасен сам по себе, но его гораздо проще анализировать, и правильный синтаксический анализ необходим для NaCl, подобного песочнице

. Это краткий и, вероятно, неточный ответ. Более точный ответ можно найти в сообщении в блоге в отличном блоге matasano

3
ответ дан 15 December 2019 в 00:59
поделиться

Вы думаете об этой атаке, состоящей в том, чтобы сбить адрес возврата стека или что-то подобное, чтобы она перешла в полезную нагрузку? Выравнивание слов, я полагаю, здесь не очень помогает или помешает - вам просто нужно выровнять полезную нагрузку 4 байта. Да, и x64 требует 16-байтового выравнивания инструкций.

Вы это имели в виду? Спасибо!

1
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: