Действительно ли компьютеры Гарвардской архитектуры неуязвимы для нападений инжекции и выполнения произвольного кода?

Преобразование десятичного числа в двоичное с помощью встроенных команд bash (от 0 до 255):

D2B=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})

echo ${D2B[7]}

00000111

echo ${D2B[85]}

01010101

echo ${D2B[127]}

01111111


Для удаления начальных нулей, например из ${D2B[7]}:

echo $((10#${D2B[7]}))

111


Это создает массив с 00000000 00000001 00000010 ... 11111101 11111110 11111111 с расширением bash‘s . Позиция в массиве D2B представляет ее десятичное значение.

См. Также: Понимание кода ({0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0 ..1} {0..1})

9
задан ROMANIA_engineer 19 November 2016 в 20:11
поделиться

6 ответов

Они несколько более устойчивы, чем архитектура фон Неймана, но не полностью. В каждой архитектуре есть точка преобразования, где данные начинают обрабатываться как код. В фон Неймане это происходит непосредственно внутри ЦП, в то время как в Гарварде это происходит до того, как память зарезервирована и объявлена ​​для модуля (или иногда даже до этого, когда файл готовится системой сборки). Это означает, что в архитектуре Гарварда успешная атака с внедрением кода должна быть немного более сложной и требующей больших усилий, но не обязательно невозможной.

Если можно поместить файл, содержащий вредоносный код, в хранилище машины (например, в файловую систему) и вызвать, скажем, переполнение буфера, которое при возврате к существующему (действительному,

14
ответ дан 4 December 2019 в 08:52
поделиться

Это частично зависит от того, что вы считаете «атакой с внедрением кода».

Возьмем, к примеру, атаку с использованием SQL-инъекции. Сам SQL-запрос никогда не должен находиться в исполняемой части памяти, потому что он преобразуется в собственный код (или интерпретируется, или в любую другую терминологию, которую вы хотите использовать) механизмом базы данных. Однако этот SQL все еще можно широко рассматривать как «код».

Если вы включаете только злоумышленника, вставляющего собственный код, который будет выполняться непосредственно процессором (например, через переполнение буфера), и если процессу не разрешено копировать данные в "область кода", тогда она обеспечивает защиту от такого рода атак, да. (Я не хочу требовать 100% защиты, даже если я не могу вспомнить ни одного вектора атаки; это звучит надежно, но безопасность »

5
ответ дан 4 December 2019 в 08:52
поделиться

По-видимому, есть некоторые исследователи , которым удалось выполнить постоянную атаку с внедрением кода в архитектуру Гарварда. Так что, может быть, не так безопасно, как думали люди.

5
ответ дан 4 December 2019 в 08:52
поделиться

Большинство машин с архитектурой Гарварда по-прежнему используют общий общий пространство памяти для данных и инструкций вне ядра. Таким образом, все еще можно было ввести код и выполнить его как инструкции. Фактически, большинство современных процессоров имеют внутреннюю гарвардскую архитектуру, даже если внешне они выглядят как фон Неймана.

0
ответ дан 4 December 2019 в 08:52
поделиться

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

0
ответ дан 4 December 2019 в 08:52
поделиться

В моем университете недавно была защита от рассеянного склероза, в которой обсуждалась именно эта тема. К сожалению, я не смог приехать. Я уверен, что если вы свяжетесь с мистером Уоттсом, он будет готов обсудить это.

http://www.cs.uidaho.edu/Defenses/KrisWatts.html

0
ответ дан 4 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

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