ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
832975 Топик полностью
fk0, легенда (18.04.2018 13:09, просмотров: 59) ответил lloyd на Да, уязвимость Remote Code Execution на микроконтроллере.
А теперь публикую давно вынашиваемую идею, пока не запатентовали. Известно, что в больших системах на базе Linux, например, защищают стек от исполнения кода и поэтому для загрузки шеллкода избретён метод ROP (возвратно-ориентированного) программирования. Когда на стеке формируется последовательность слов и делается ret. Процессор попадает в какую-то, обычно библиотечную функцию, что-то выполняет, делает ret, попадает в другую функцию. А расположенные на стеке слова служат аргументами функции. Не очень эффективно, но программирование таким образом в целом возможно. Но нужно знать адреса полезных кусочков кода. В целом нужно знать содержимое памяти жертвы. Обычно с помощью ROP-кода лишь аллоцируется исполняемая страница кода, куда загружается обычный шеллкод и запускается на исполнение. Но в принципе в ROP-коде возможно построение интерпретатора шитого кода. И на основе которого возможно построение FORTH-интерпретатора. К чему это ведёт -- потенциально возможно исполнение загружаемого кода на системах в принципе не предполагающих ни загрузку кода, ни располагающих исполняемым ОЗУ. Практически это системы на базе микроконтроллеров. Ограничением для использования технологии является знание содержимого памяти системы (нужна библиотека "полезных" подпрограмм), достаточно большой (килобайты) объём стека, и возможность изначальной загрузки на стек bootstrap-кода (основная часть шитого кода может располагаться не на стеке, а в любом месте ОЗУ). Под угрозой в основном устройства способные обмениваться с внешним миром большими объёмами данных и обрабатывающие эти данные. Подразумевается, что в коде обработки данных возможна ошибка, позволяющая две вещи: 1) дамп программной памяти, 2) загрузка шеллкода.
[ZX]