Защищены ли компьютеры архитектуры Гарварда от произвольного внедрения кода и атак на выполнение?

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

6 ответов

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам