Способ вызова процедуры на основе двойного стека

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

 

Изобретение относится к способу защиты программного обеспечения от несанкционированного доступа.

В настоящее время способ вызова процедуры делится на обращение к процедуре и возврат из процедуры.

Обращение к процедуре состоит в сохранении информации о контексте программы в точке вызова процедуры, а возврат из процедуры состоит в восстановлении сохраненного контекста программы. Под контекстом программы понимают информацию о состоянии программы на момент вызова процедуры.

Работа с контекстом осуществляется при помощи специальных команд процессора: команды вызова процедуры и команды возврата управления вызвавшей программе.

Известен способ вызова из книги авторов Белецкий Я. Турбо Ассемблер: Версия 2.0: Учеб. пособие для студентов вузов / Пер. с польск. В.В.Яценко. - М.: Машиностроение, 1994. - 160 с., взятый в качестве прототипа. Способ заключается в вызове процедуры с использованием команды вызова, а после выполнения процедуры - в возврате управления вызвавшей программе с использованием команды возврата.

Команда вызова процедуры размещается в коде вызывающей программы. Эта команда передает управление по адресу расположения процедуры, при этом в стеке сохраняется контекст вызвавшей процедуру программы: адрес возврата и текущий указатель вершины стека. Адрес возврата - это адрес команды, следующей за командой вызова процедуры.

В результате этих действий вызванная процедура получает управление и информацию, куда необходимо вернуть управления после окончания работы.

Команда возврата управления вызвавшей программе размещается в коде вызванной процедуры. Эта команда выполняет считывание сохраненного контекста и на основании полученных данных восстанавливает значения соответствующих регистров процессора.

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

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

Существующий способ вызова процедуры не защищает программное обеспечение от несанкционированного доступа.

Указанная проблема решена при помощи способа вызова процедуры на основе двойного стека.

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

Применение указанного способа вызова процедуры на основе двойного стека обеспечивает контроль правильности адреса возврата перед выполнением команды возврата управления вызвавшей команде. Наличие такого контроля позволяет эффективно обнаруживать и предотвращать попытки несанкционированного доступа с использованием искажения адреса возврата.

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

В отличие от прототипа способ вызова процедуры на основе двойного стека при передаче управления процедуре предусматривает резервирование истинного адреса возврата. Истинность резервируемого адреса возврата обеспечивается тем, что процесс резервирования адреса возврата производится непосредственно перед началом выполнения процедуры, т.е. в тот момент времени, когда искажение адреса возврата еще невозможно.

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

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

Пример.

В ходе экспериментального исследования эффективности способа вызова процедуры на основе двойного стека была произведена модификация ряда априорно уязвимого программного обеспечения.

В качестве примера можно привести результаты модификации программного обеспечения OpenSSH версии 1.2.2, содержащего уязвимость, связанную с возможностью целочисленного переполнения в модуле CRC32 Compensation Attack Detector. Ошибка целочисленного переполнения в этом модуле позволяла удаленно, т.е. через сеть, разместить в памяти уязвимой программы произвольный программный код и передать этому коду управление.

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

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



 

Похожие патенты:

Изобретение относится к электросвязи и может быть использовано в средствах защиты информации. .

Изобретение относится к средствам защиты от несанкционированного доступа к информации, хранимой в персональной ЭВМ. .

Изобретение относится к области защиты данных при обмене информацией. .

Изобретение относится к электросвязи и может быть использовано в автоматизированных технических средствах защиты информации с целью мониторинга безопасности автоматизированных систем и оперативной идентификации применяемого в цифровых системах связи, в частности в сети передачи данных типа "Internet" семейства коммуникационных протоколов TCP/IP.

Изобретение относится к средствам защиты для обеспечения доступа к устройству или информации в устройстве. .

Изобретение относится к средствам защиты информационных систем от несанкционированного доступа. .

Изобретение относится к системам защиты компьютерных систем от несанкционированного доступа. .

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

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

Изобретение относится к средствам обеспечения доступа к полупроводниковой карте памяти и компьютерно-считываемому носителю записи для записи программы инициализации полупроводниковой карты памяти.

Изобретение относится к устройствам, входящим в состав автоматических систем управления технологическими процессами (АСУ ТП), и предназначено для использования в нефтехимической, газовой, металлургической промышленности, электроэнергетике и других отраслях.

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

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

Изобретение относится к системам помехоустойчивой передачи и защиты информации, передаваемой по каналам связи. .

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

Изобретение относится к цифровой вычислительной технике, в частности к средствам контроля и поиска неисправностей в устройствах с дискретным характером функционирования.

Изобретение относится к электросвязи и может быть использовано в автоматизированных технических средствах защиты информации с целью мониторинга безопасности автоматизированных систем и оперативной идентификации применяемого в цифровых системах связи, в частности в сети передачи данных типа "Internet" семейства коммуникационных протоколов TCP/IP.

Изобретение относится к области диагностики технических систем и может быть использовано при диагностике состояния технических систем различной степени сложности.

Изобретение относится к системам контроля и, в частности, к системам контроля работы лазеров. .

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

Изобретение относится к цифровым системам связи и может быть использовано в средствах поиска информации с целью мониторинга безопасности автоматизированных систем и оперативной идентификации применяемого в цифровых системах связи, таких как Интернет, семейства коммуникационных протоколов TCP/IP
Наверх