Защищены ли компьютеры архитектуры Гарварда от произвольного внедрения кода и атак на выполнение? - PullRequest
8 голосов
/ 05 июня 2009

Компьютеры Гарвардской архитектуры имеют отдельный код и память данных. Делает ли это их невосприимчивыми к атакам внедрения кода (поскольку данные не могут быть выполнены как код)?

Ответы [ 6 ]

13 голосов
/ 05 июня 2009

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

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

5 голосов
/ 05 июня 2009

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

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

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

4 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

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

0 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...