RU2220443C2 - Способ контроля выполнения компьютерных программ в соответствии с их назначением - Google Patents
Способ контроля выполнения компьютерных программ в соответствии с их назначением Download PDFInfo
- Publication number
- RU2220443C2 RU2220443C2 RU99118013/09A RU99118013A RU2220443C2 RU 2220443 C2 RU2220443 C2 RU 2220443C2 RU 99118013/09 A RU99118013/09 A RU 99118013/09A RU 99118013 A RU99118013 A RU 99118013A RU 2220443 C2 RU2220443 C2 RU 2220443C2
- Authority
- RU
- Russia
- Prior art keywords
- protection
- return address
- memory
- stack
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2143—Clearing memory, e.g. to prevent the data from being stolen
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Изобретение относится к способу контроля выполнения компьютерных программ в соответствии с их назначением. Техническим результатом является защита компьютерных программ от противоправных манипуляций при их выполнении. Способ заключается в обеспечении запоминающего устройства защиты, недоступного вне системы, исполняющей контролируемую компьютерную программу, препятствии перезаписи адресов возврата, препятствии использования ошибочно запомненных адресов возврата и ошибочно перезаписанных адресов возврата. 9 з. п. ф-лы, 2 ил.
Description
Изобретение относится к способу, определенному родовым понятием п.1 формулы изобретения, т.е. к способу контроля выполнения компьютерных программ в соответствии с их назначением.
Обеспечение возможности выполнения компьютерной программы в соответствии с ее назначением является постоянной целью, которая достигается все в большей степени за счет использования различных мер.
В то время как раньше основной причиной ненадлежащего выполнения компьютерной программы были недопустимые сбои в аппаратных средствах и ошибки программирования, в настоящее время преднамеренные манипуляции при выполнении программы начинают играть все более важную роль.
За счет целенаправленного манипулирования ходом выполнения программы можно, например, пропустить определенные части программы, посредством чего можно, например, обойти проверку, предусмотренную для подтверждения права доступа.
Это может стать серьезной проблемой в карточках с интегральными схемам (ИС), хотя и не исключительно только в этой области, поскольку с одной стороны карточки с ИС находят все большее распространение в областях, где требуется защита осуществляемых операций (например, контроль доступа, финансовые сделки и т.д.), а с другой стороны такие карточки, в силу присущих им свойств, не находятся под постоянным контролем или присмотром и могут беспрепятственно стать предметом попыток противоправного манипулирования.
При использовании разнообразных уже предусмотренных мер по обеспечению защиты вероятность того, что такие противоправные действия будут успешными, весьма невысока. Однако данные ситуации нельзя исключить полностью.
Поэтому в основе настоящего изобретения лежит задача создания способа контроля предусмотренного выполнения компьютерной программы, с помощью которого преднамеренные противоправные манипуляции ходом выполнения программы практически будут исключены.
Эта задача решается в изобретении за счет признаков, указанных в отличительной части п.1 формулы изобретения. В соответствии с этим предусмотрено, что перезапись адреса возврата, хранящегося для последующего применения, и/или применение записанного с ошибками или перезаписанного адреса возврата в качестве адреса возврата запрещается.
Практическое выполнение этапов способа может осуществляться различными путями. В простейшем случае при вызове функции или в ином случае, требующем запоминания адреса возврата, запоминается не собственно адрес возврата, а дополнительная информация защиты, которая позволяет распознать, требуется ли еще запомненный адрес возврата, и поэтому не может быть перезаписан, и/или является ли запомненный адрес возврата первоначально запомненным адресом возврата или соответственно адресом возврата, который необходимо запомнить.
В первом указанном случае, т.е. при реализации защиты от перезаписи адреса возврата, информация защиты может состоять, например, из распознавания защиты записи в виде бита защиты записи или иного подобного средства, которое устанавливается при записи адреса возврата и сбрасывается после применения записанного адреса возврата в качестве адреса возврата.
Во втором указанном случае, т.е. при реализации защиты применения адреса возврата, информация защиты может состоять, например, из собственно адреса возврата или из данных, иным образом представляющих или характеризующих адрес возврата.
Указанная информация записи хранится в области памяти, к которой предпочтительно не возможен внешний доступ; "нормальное" хранение адреса возврата может осуществляться обычным образом в так называемом стеке (стековой (магазинной) памяти).
Если перед каждой попыткой записи в стек проверять, определена ли записываемая область с помощью бита защиты записи в качестве области с защитой от записи, то можно воспрепятствовать перезаписи данных, которые применяются в качестве адреса возврата.
Если проверить, в качестве альтернативы, или дополнительно, соответствуют ли используемые в качестве адреса возврата данные первоначально запомненному или запоминаемому адресу возврата, то можно воспрепятствовать тому, чтобы после запоминания адреса возврата измененные (путем противоправного манипулирования) данные применялись в качестве адреса возврата.
В обоих случаях можно, в целях предотвращения дальнейших попыток противоправных манипуляций, прервать текущее выполнение программы, и/или осуществить сброс в системе, выполняющей программу, и/или выработать предупредительную сигнализацию, и/или стереть данные, относящиеся к защите, и/или принять иные меры защиты.
Таким путем можно гарантировать, что преднамеренные манипуляции с адресами возврата не смогут привести к изменению хода выполнения программы в соответствии с ее назначением.
Тем самым найден способ, посредством которого можно в значительной степени исключить преднамеренные манипуляции, воздействующие на ход выполнения программы.
Предпочтительные варианты осуществления изобретения представлены в зависимых пунктах формулы изобретения.
Изобретение поясняется ниже на примерах осуществления, иллюстрируемых чертежами, на которых показано следующее.
Фиг. 1 - схематичное представление фрагмента системы для осуществления защиты применения адреса возврата.
Фиг. 2 - схематичное представление, наглядно поясняющее защиту от перезаписи адреса возврата и модифицированную защиту применения адреса возврата.
Показанный на фиг.1 фрагмент системы представляет собой систему, обеспечивающую выполнение компьютерной программы, которая может полностью или частично выполняться на микропроцессоре, микроконтроллере, процессоре сигналов или ином подобном средстве.
Показанный на чертеже фрагмент предназначен для управления частью системы, относящейся к адресу возврата.
Адреса возврата необходимо записывать, например, если исполняемая программа содержит процедуру вызова функции. При вызове функции (например, в случае команды LCALL в микроконтроллере 8051 фирмы Intel) осуществляется следующее:
- в памяти программы осуществляется переход (адресный) к области, в которой хранится программа, для соответствующей функции, которая должна теперь выполняться;
- выполняется соответствующая программа вызванной функции;
- осуществляется возврат в область памяти, откуда был осуществлен переход для выполнения вызванной программы.
- в памяти программы осуществляется переход (адресный) к области, в которой хранится программа, для соответствующей функции, которая должна теперь выполняться;
- выполняется соответствующая программа вызванной функции;
- осуществляется возврат в область памяти, откуда был осуществлен переход для выполнения вызванной программы.
Последний названный адрес, т.е. адрес, с которого должно продолжаться выполнение программы после выполнения вызванной функции программы, представляет собой упомянутый адрес возврата.
Для того чтобы устройство, выполняющее компьютерную программу, знало, куда оно должно осуществить переход после выполнения функции, необходимо промежуточное запоминание адреса возврата.
Следует упомянуть, что вызовы функции не являются единственными событиями, при которых требуется хранение адреса возврата. Хранение адреса возврата требуется, например, при прерываниях (программных прерываниях) или при смене задачи в многозадачной системе. Хранение адреса возврата осуществляется обычно в так называемом стеке или стековом запоминающем устройстве. Подобный стек показан на фиг.1 и обозначен ссылочной позицией 1. Блок логики 2 стека вырабатывает, в том числе, так называемый указатель стека, который указывает на ту частичную область стека 1, которая является следующей для записи или считывания. Стеки как таковые и их работа известны, так что более детальное описание может не приводиться.
В стеке 1 могут храниться не только адреса возврата, но и любые другие данные (содержимое регистров, локальные переменные и т.п.). Представляемые пояснения относятся, однако, по существу исключительным образом к манипулированию адресами возврата.
Если необходимо, как в случае команды LCALL, запомнить в стеке 1 адрес возврата, то это обеспечивается блоком логики 2 стека.
В отличие от обычных систем, в предлагаемой системе загруженный или подлежащий загрузке адрес возврата дополнительно в качестве информации защиты запоминается в еще одном ЗУ. Это ЗУ, называемое далее ЗУ защиты, на фиг.1 обозначено ссылочной позицией 3. Для ЗУ защиты 3 предусмотрен блок логики 4 ЗУ защиты, с помощью которого оно управляется, подобно тому, как это имеет место для стека 1, управляемого блоком логики 2 стека.
ЗУ защиты 3, в противоположность стеку 1, не срабатывает на воздействия, являющиеся внешними для системы, выполняющей данную компьютерную программу. Т. е. записанные в нем данные защищены от целенаправленного манипулирования, во всяком случае, от такого манипулирования, которое могло бы быть реализовано с оправданными затратами.
Блок логики 4 ЗУ защиты, в противоположность блоку логики 2 стека, срабатывает в рассматриваемом примере только в том случае, если адрес возврата должен быть записан или считан. Как вариант, можно также предусмотреть, чтобы блок логики 4 ЗУ защиты срабатывал в ответ и на другие события (помимо внешних команд для процедур записи и считывания).
Если ход выполнения программы достигает момента, когда должен быть осуществлен возврат к ранее запомненному адресу возврата, как в случае, например, команды RET, то требуемый адрес возврата может быть получен соответствующим считыванием стека 1. Перед применением получаемых при этом данных в качестве адреса возврата проверяют, идентичны ли полученные данные адресу возврата, хранящемуся в ЗУ защиты 3 в качестве информации защиты.
Для этого предусмотрен блок сравнения 5, который принимает сопоставляемые друг с другом данные из стека 1 и из ЗУ защиты 3 и осуществляет их сравнение.
Если в процессе сравнения, осуществляемого в блоке сравнения 5, устанавливается, что сопоставляемые друг с другом данные идентичны, то это означает, что получаемые из стека 1 данные соответствуют первоначально записанному адресу возврата и они не подвергались манипуляции и не записывались некорректно или на некорректном месте или соответственно не считывались некорректно или с некорректного места из-за ошибок аппаратных средств или сбоев программного обеспечения. Содержащиеся в стеке 1 данные в соответствии с этим могут квалифицироваться и применяться как верный адрес возврата. Такой вывод возможен потому, что, как упоминалось выше, целенаправленное воздействие на содержимое ЗУ защиты 3 практически невозможно.
Если при сравнении, осуществляемом в блоке сравнения 5, устанавливается, что сопоставляемые данные не идентичны, то это означает, что полученные из стека 1 данные с высокой вероятностью подверглись манипуляции или, вследствие ошибок аппаратных средств или сбоев программного обеспечения, записывались некорректно или на некорректном месте или соответственно считывались некорректно или с некорректного места. Независимо от причины установленной неидентичности, хранящиеся в стеке 1 данные не могут применяться в качестве адреса возврата, так как результатом этого было бы отклонение от предварительно определенного хода выполнения программы. Блок сравнения 5 вырабатывает в этом случае сигнал NMI, который подается на блок NMI-логики 6. Блок NMI-логики 6 осуществляет немедленное прерывание программы, и/или сброс системы, обрабатывающей данную компьютерную программу, и/или выдачу предупредительной сигнализации, и/или стирание данных, относящихся к защите.
Блок сравнения 5 в рассматриваемом примере активизируется командами, которые, как, например, команда RET, приводят к считыванию из стека 1 данных, которые должны интерпретироваться как адрес возврата. В любые другие моменты времени блок сравнения остается в неактивном состоянии.
Посредством описанных мер можно обеспечить то, что подлежащая исполнению программа может исполняться только в том случае, когда не обнаруживается ошибка в адресе возврата.
Пример, описанный со ссылками на фиг.1, может рассматриваться как практическая реализация защиты применения адреса возврата, запрашиваемого при необходимости.
Не является непременно требуемым, чтобы информация защиты, предусмотренная для соответствующих адресов возврата, представляла собой собственно адреса возврата. Как вариант, может быть предусмотрено, что в качестве информации защиты применяются только выбранные части адреса возврата или данные, представляющие или характеризующие адрес возврата любым иным образом. Блок сравнения 5 в таких случаях, естественно, был бы заменен устройством сопоставления данных, измененным соответственно конкретным условиям.
Альтернативный вариант осуществления процедуры контроля хода выполнения программ описан ниже на примере защиты от перезаписи адреса возврата, иллюстрируемой с помощью фиг. 2.
На фиг. 2 показано ЗУ, которое подразделено на первую область ЗУ в форме стека 11а и вторую область ЗУ в форме ЗУ защиты 11b.
Стек 11a соответствует показанному на фиг. 1 стеку 1. ЗУ защиты 11b примерно соответствует показанному на фиг. 1 ЗУ защиты 3; во всяком случае ЗУ защиты 11b записывается другой информацией защиты, отличной от используемой в ЗУ защиты 3.
Как и в случае ЗУ защиты 3, ЗУ защиты 11b не реагирует на воздействия вне устройства, исполняющего контролируемую компьютерную программу. Т.е. в данном варианте контроля хода выполнения программы невозможно манипулировать информацией, хранящейся в ЗУ защиты, по меньшей мере с обоснованными затратами
Информация защиты, хранящаяся в ЗУ защиты 11b, состоит из бита защиты записи, который устанавливается на "1", если содержимое соответствующей области стека не может быть перезаписано, и устанавливается на "0", если содержимое соответствующей области стека может перезаписываться
Если, как в случае команды LCALL, в стек 11а надо записать адрес возврата, то это обеспечивается обычным образом.
Информация защиты, хранящаяся в ЗУ защиты 11b, состоит из бита защиты записи, который устанавливается на "1", если содержимое соответствующей области стека не может быть перезаписано, и устанавливается на "0", если содержимое соответствующей области стека может перезаписываться
Если, как в случае команды LCALL, в стек 11а надо записать адрес возврата, то это обеспечивается обычным образом.
В дополнение к этому, в область ЗУ защиты 11b, поставленную в соответствие области стека, в которой записан адрес возврата, записывается "1", чтобы тем самым обозначить, что соответствующая область стека не может быть перезаписана.
В рассматриваемом примере стек 11а подразделен на области, охватывающие 8 битов, причем каждой 8-битовой области поставлен в соответствие бит защиты записи, записанный в 3У защиты 11b. Если исходят из того, что работают с 16-битовыми адресами, то для хранения адреса возврата требуются две области стека
Согласно показанному на фиг. 2, в стеке 11а запомнен адрес возврата. Адрес возврата состоит из части старших восьми битов (РСН) и из части младших восьми битов (PCL). Как для области стека, содержащей биты РСН, так и для области стека, содержащей биты PCL, поставлена в соответствие "1" в качестве информации защиты или бита защиты записи
Соответствующая информация защиты или биты защиты записи устанавливаются в "0", когда данные, хранящиеся в соответствующей области стека, применяются в качестве адреса возврата
При каждой попытке записать данные в стек (перезаписать хранящиеся там данные) информация защиты (бит защиты записи), соответствующая области стека, которую стремятся перезаписать, оценивается, чтобы установить, разрешена ли запись стека на данном месте.
Согласно показанному на фиг. 2, в стеке 11а запомнен адрес возврата. Адрес возврата состоит из части старших восьми битов (РСН) и из части младших восьми битов (PCL). Как для области стека, содержащей биты РСН, так и для области стека, содержащей биты PCL, поставлена в соответствие "1" в качестве информации защиты или бита защиты записи
Соответствующая информация защиты или биты защиты записи устанавливаются в "0", когда данные, хранящиеся в соответствующей области стека, применяются в качестве адреса возврата
При каждой попытке записать данные в стек (перезаписать хранящиеся там данные) информация защиты (бит защиты записи), соответствующая области стека, которую стремятся перезаписать, оценивается, чтобы установить, разрешена ли запись стека на данном месте.
Если соответствующая информация защиты или соответствующий бит защиты имеет значение "1", то запись в стек на данном месте не разрешена; и попытка записи квалифицируется как попытка манипуляции записанными данными или сбой аппаратных средств или программного обеспечения. Если соответствующая информация защиты или соответствующий бит защиты имеет значение "0", то запись в стек на данном месте разрешена.
Решение о допустимости записи определенной области стека проверяется с помощью схемы проверки защиты записи, которая в рассматриваемом примере реализована с помощью схемы И 12. На схему И 12 в качестве входных сигналов подаются бит защиты записи, соответствующий записываемой области стека, и сигнал "запись_стека", указывающий на попытку записи, причем сигнал "запись_ стека" может принимать значение "1", если имеет место попытка записи, и значение "0" при отсутствии попытки записи. Выходной сигнал "действительная_ запись" схемы И 12 показывает, разрешена ли преднамеренная запись соответствующей области стека ("действительная_запись" = "0") или она не разрешена ("действительная_запись" = "0"). Выходной сигнал "действительная_запись" схемы И 12 может применяться в качестве выходного сигнала NMI блока сравнения 5 по фиг. 1 для того, чтобы программу немедленно прервать, и/или осуществить сброс системы, на которой выполняется программа, и/или выработать предупредительный сигнал, и/или стереть данные, относящиеся к защите.
Дополнительно к защите перезаписи адреса возврата, в систему по фиг. 2 может быть введена защита применения адреса возврата, модифицированная по сравнению с выполнением по фиг. 1. Этот дополнительный механизм защиты состоит в том, что данные, считанные из стека, перед их применением в качестве адреса возврата проверяются на тот предмет, представляют ли они вообще адрес возврата. Это может предусматриваться для информации защиты или соответственно бита защиты записи, относящегося к соответствующей области стека. Если информация защиты или соответственно бит защиты записи, относящийся к считываемой области стека, установлен на "1" то данные, хранящиеся в соответствующей области стека, представляют собой адрес возврата.
Предпосылкой для этого является, естественно, то, что информация защиты или соответственно биты защиты записи для данных, представляющих адрес возврата, например, в связи с командой CALL или иными записываемыми в стек 11а данными, устанавливаются на "1".
Данный дополнительный механизм защиты реализуется в соответствии с показанным на фиг. 2, с помощью схемы И 13. На схему И 13 в качестве входных сигналов подаются бит защиты записи, соответствующий записываемой области стека, и сигнал "считывание_стека", указывающий на цель применения считываемых данных, причем сигнал "считывание_стека" может принимать значение "1", если, как, например, в случае команды RET, предусматривается применение адреса возврата, и сигнал "считывание_стека" может принимать значение "0" при применении с другой целью. Выходной сигнал "действительное_считывание" схемы И 13 показывает, разрешено ли применение затребованных данных в качестве адреса возврата ("действительное_ считывание" = "1") или оно не разрешено ("действительное_ считывание" = "0"). Если при затребовании адреса возврата имеет место случай, когда применение запрошенных из стека 11а данных в качестве адреса возврата посредством сигнала "действительное_считывание" = "0" квалифицировано как неразрешенное, то это может интерпретироваться как попытка манипуляции или сбой аппаратных средств или программного обеспечения и являться стимулом для применения соответствующих мер защиты. Эти меры защиты могут предусматривать немедленное прерывание выполнения программы, и/или сброс системы, на которой выполняется программа, и/или выработку предупредительного сигнала, и/или стирание данных, относящихся к защите.
Согласно вышеприведенному описанию, информация защиты, защищенная от внешнего доступа, состоит из одного бита защиты записи. Само собой разумеется, что вместо этого может применяться код, состоящий из любого количества битов с любым значением, с помощью которого не только адрес возврата, но и любые другие защищаемые данные подвергаются особой обработке для их защиты от противоправных манипуляций и ошибок.
ЗУ защиты, в котором хранится различная информация защиты, как уже упоминалось выше, является запоминающим устройством, не доступным извне. Оно предпочтительно встраивается в устройство, на котором выполняется контролируемая компьютерная программа, т.е., как правило, в микропроцессор, в микроконтроллер или процессор сигналов, где оно особенно хорошо защищено от доступа извне. Реализация недоступного извне запоминающего устройства в составе микропроцессора, микроконтроллера или процессора сигналов (например, в форме скрытого или теневого стека) относительно проста. Для этого необходима только соответствующая модификация ядра программы.
Использование вышеописанного способа не требует существенных изменений в аппаратных средствах или в программном обеспечении. В частности, стек может применяться, как обычно.
Таким образом, создан способ контроля выполнения компьютерной программы в соответствии с ее назначением, с помощью которого простым путем и без изменения программных средств можно исключить возможность целенаправленного противоправного манипулирования ходом выполнения программы, а также частично исключить ошибки аппаратных средств и программного обеспечения.
Claims (10)
1. Способ управления выполнением компьютерных программ в соответствии с их назначением, заключающийся в том, что обеспечивают запоминающее устройство (ЗУ) защиты, причем в качестве ЗУ защиты используют ЗУ, которое недоступно вне системы, исполняющей контролируемую компьютерную программу, и препятствуют перезаписи адресов возврата, сохраненных для последующего использования, и препятствуют использованию ошибочно запомненных адресов возврата и ошибочно перезаписанных адресов возврата в качестве адреса возврата путем защиты адресов возврата от перезаписи и от использования посредством оценки информации защиты, которая генерируется при запоминании адресов возврата, и запоминания информации защиты в ЗУ защиты.
2. Способ по п.1, отличающийся тем, что в качестве ЗУ защиты используют ЗУ, имеющееся в одном из средств, предусмотренных для выполнения упомянутой компьютерной программы, выбранном из группы, включающей микропроцессоры, микроконтроллеры или процессоры сигналов.
3. Способ по п.1, отличающийся тем, что в качестве информации защиты используют собственно адрес возврата или представляющие его данные.
4. Способ по п.3, отличающийся тем, что сравнивают сохраненные данные с информацией защиты и разрешают использование сохраненных данных в качестве адреса возврата лишь в том случае, если устанавливается, что информация защиты представляет сохраненные данные.
5. Способ по п.4, отличающийся тем, что в том случае, если при запросе данных, представляющих адрес возврата, установлено, что информация защиты не представляет данные, полученные в ответ на запрос, то выполняют по меньшей мере одну из следующих операций: немедленное прерывание выполнения программы, сброс системы, выполняющей компьютерную программу, выработку предупредительной сигнализации и стирание данных, связанных с защитой.
6. Способ по п.1, отличающийся тем, что в качестве информации защиты, сохраняемой в ЗУ защиты, используют идентификаторы защиты записи, указывающие на защиту записи.
7. Способ по п.6, отличающийся тем, что запрещают перезапись областей памяти, идентифицированных идентификаторами защиты записи в качестве защищенных от записи.
8. Способ по п.7, отличающийся тем, что если при попытке перезаписи области памяти устанавливается, что соответствующая информация защиты записи защищена от записи, то выполняют по меньшей мере одну из следующих операций: немедленное прерывание выполнения программы, сброс системы, выполняющей компьютерную программу, выработку предупредительной сигнализации и стирание данных, связанных с защитой.
9. Способ по п.6, отличающийся тем, что включает разрешение проверки информации защиты и использования сохраненных данных в качестве адреса возврата, только если установлено, что информация защиты указывает на защиту записи, перед использованием сохраненных данных в качестве адреса возврата.
10. Способ по п.9, отличающийся тем, что если при запросе данных, представляющих адрес возврата, установлено, что информация защиты не указывает на защиту записи, то выполняют по меньшей мере одну из следующих операций: немедленное прерывание выполнения компьютерной программы, сброс системы, выполняющей компьютерную программу, выработку предупредительной сигнализации и стирание данных, связанных с защитой.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19701166.7 | 1997-01-15 | ||
DE19701166A DE19701166A1 (de) | 1997-01-15 | 1997-01-15 | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen |
Publications (2)
Publication Number | Publication Date |
---|---|
RU99118013A RU99118013A (ru) | 2001-08-27 |
RU2220443C2 true RU2220443C2 (ru) | 2003-12-27 |
Family
ID=7817440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU99118013/09A RU2220443C2 (ru) | 1997-01-15 | 1998-01-15 | Способ контроля выполнения компьютерных программ в соответствии с их назначением |
Country Status (12)
Country | Link |
---|---|
US (1) | US6202176B1 (ru) |
EP (1) | EP0951673B1 (ru) |
JP (1) | JP2001511271A (ru) |
KR (1) | KR20000070127A (ru) |
CN (1) | CN1248110C (ru) |
AT (1) | ATE200358T1 (ru) |
BR (1) | BR9806770A (ru) |
DE (2) | DE19701166A1 (ru) |
ES (1) | ES2156029T3 (ru) |
RU (1) | RU2220443C2 (ru) |
UA (1) | UA55438C2 (ru) |
WO (1) | WO1998032072A1 (ru) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352713B2 (en) | 2006-08-09 | 2013-01-08 | Qualcomm Incorporated | Debug circuit comparing processor instruction set operating mode |
RU2575985C2 (ru) * | 2009-04-01 | 2016-02-27 | Моторола Мобилити, Инк. | Способ и устройство для проверки исполняемой программы с использованием модели |
RU2591020C1 (ru) * | 2015-06-01 | 2016-07-10 | Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") | Способ контроля хода выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы |
RU2628163C2 (ru) * | 2013-06-23 | 2017-08-15 | Интел Корпорейшн | Системы и способы проверки адреса возврата процедуры |
RU2697948C1 (ru) * | 2018-04-19 | 2019-08-21 | Акционерное общество "Лаборатория Касперского" | Система и способ выявления уязвимостей с использованием перехвата вызовов функций |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19944991B4 (de) | 1999-09-20 | 2004-04-29 | Giesecke & Devrient Gmbh | Verfahren zur Sicherung eines Programmablaufs |
DE10122505A1 (de) * | 2001-05-10 | 2002-11-14 | Giesecke & Devrient Gmbh | Verfahren zum Schützen eines Rechners gegen Manipulation von Registerinhalten und Rechner zum Durchführen des Verfahrens |
US7853803B2 (en) * | 2001-09-28 | 2010-12-14 | Verizon Corporate Services Group Inc. | System and method for thwarting buffer overflow attacks using encrypted process pointers |
JP2004126854A (ja) * | 2002-10-01 | 2004-04-22 | Mitsubishi Electric Corp | 攻撃対策装置 |
WO2005020069A1 (ja) * | 2003-08-25 | 2005-03-03 | Denki Hompo Ltd. | コンピュータシステムのcpu(中央処理装置) |
WO2005024630A1 (ja) * | 2003-09-04 | 2005-03-17 | Science Park Corporation | 不正コード実行の防止方法および防止プログラム |
US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
US7971255B1 (en) * | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
US7594269B2 (en) * | 2004-10-29 | 2009-09-22 | Intel Corporation | Platform-based identification of host software circumvention |
US20090119492A1 (en) * | 2005-10-26 | 2009-05-07 | David James Seal | Data Processing Apparatus and Method for Handling Procedure Call Instructions |
US7774761B2 (en) * | 2005-12-27 | 2010-08-10 | International Business Machines Corporation | Use of memory watch points and a debugger to improve analysis of runtime memory access errors |
US20070174571A1 (en) * | 2006-01-25 | 2007-07-26 | Safenet, Inc. | Binding a protected application program to shell code |
US20080127118A1 (en) * | 2006-10-02 | 2008-05-29 | Bulent Kasman | Method and system for dynamic patching of software |
US20090187748A1 (en) * | 2008-01-22 | 2009-07-23 | Scott Krig | Method and system for detecting stack alteration |
DE102009005764A1 (de) | 2009-01-23 | 2010-07-29 | Giesecke & Devrient Gmbh | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Unterprogramms |
CN102053839A (zh) * | 2010-12-31 | 2011-05-11 | 山东中创软件商用中间件股份有限公司 | 监控探针生成方法和装置 |
FR2977694A1 (fr) | 2011-07-08 | 2013-01-11 | St Microelectronics Rousset | Microprocesseur protege contre un debordement de pile |
US9213828B2 (en) * | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
JP2015011436A (ja) * | 2013-06-27 | 2015-01-19 | 株式会社デンソー | プロセッサ |
US20160381050A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
WO2017138797A1 (ko) * | 2016-02-12 | 2017-08-17 | 한양대학교 산학협력단 | 시큐어 시스템 온 칩 |
US10778679B2 (en) | 2016-02-12 | 2020-09-15 | Industry-University Cooperation Foundation Hanyang University | Secure semiconductor chip and operating method thereof |
JP6489050B2 (ja) * | 2016-03-24 | 2019-03-27 | 株式会社オートネットワーク技術研究所 | 情報処理装置及び情報処理システム |
US9904485B2 (en) * | 2016-03-31 | 2018-02-27 | Intel Corporation | Secure memory controller |
US10613864B2 (en) * | 2018-03-16 | 2020-04-07 | Texas Instruments Incorporated | Processor with hardware supported memory buffer overflow detection |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4241396A (en) * | 1978-10-23 | 1980-12-23 | International Business Machines Corporation | Tagged pointer handling apparatus |
JPS5568000A (en) * | 1978-11-13 | 1980-05-22 | Ibm | Maintenance and protection of control storage capable of writing |
US4296404A (en) * | 1979-10-18 | 1981-10-20 | Engineered Systems, Inc. | Remote verification lockout system |
US5408642A (en) * | 1991-05-24 | 1995-04-18 | Symantec Corporation | Method for recovery of a computer program infected by a computer virus |
US5274817A (en) * | 1991-12-23 | 1993-12-28 | Caterpillar Inc. | Method for executing subroutine calls |
DE4315732C1 (de) * | 1993-05-11 | 1994-06-01 | Siemens Nixdorf Inf Syst | Verfahren zum authentischen Booten und Testen der Integrität von Software auf PC-Architekturen |
FR2728363A1 (fr) * | 1994-12-20 | 1996-06-21 | Sgs Thomson Microelectronics | Dispositif de protection de l'acces a des mots memoires |
DE19614904A1 (de) * | 1996-04-16 | 1997-10-23 | Philips Patentverwaltung | Verfahren und System zum Freigeben der Ausführung zugelassener Programme |
JP3421526B2 (ja) * | 1997-02-14 | 2003-06-30 | モトローラ株式会社 | デ−タ処理装置 |
-
1997
- 1997-01-15 DE DE19701166A patent/DE19701166A1/de not_active Ceased
-
1998
- 1998-01-15 ES ES98906810T patent/ES2156029T3/es not_active Expired - Lifetime
- 1998-01-15 WO PCT/DE1998/000133 patent/WO1998032072A1/de active IP Right Grant
- 1998-01-15 EP EP98906810A patent/EP0951673B1/de not_active Expired - Lifetime
- 1998-01-15 DE DE59800589T patent/DE59800589D1/de not_active Expired - Fee Related
- 1998-01-15 UA UA99074040A patent/UA55438C2/ru unknown
- 1998-01-15 CN CNB98801856XA patent/CN1248110C/zh not_active Expired - Fee Related
- 1998-01-15 RU RU99118013/09A patent/RU2220443C2/ru not_active IP Right Cessation
- 1998-01-15 AT AT98906810T patent/ATE200358T1/de not_active IP Right Cessation
- 1998-01-15 BR BR9806770-2A patent/BR9806770A/pt not_active IP Right Cessation
- 1998-01-15 JP JP53352198A patent/JP2001511271A/ja not_active Ceased
- 1998-01-15 KR KR1019997006351A patent/KR20000070127A/ko active IP Right Grant
-
1999
- 1999-07-15 US US09/354,132 patent/US6202176B1/en not_active Expired - Lifetime
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352713B2 (en) | 2006-08-09 | 2013-01-08 | Qualcomm Incorporated | Debug circuit comparing processor instruction set operating mode |
RU2575985C2 (ru) * | 2009-04-01 | 2016-02-27 | Моторола Мобилити, Инк. | Способ и устройство для проверки исполняемой программы с использованием модели |
RU2628163C2 (ru) * | 2013-06-23 | 2017-08-15 | Интел Корпорейшн | Системы и способы проверки адреса возврата процедуры |
RU2591020C1 (ru) * | 2015-06-01 | 2016-07-10 | Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") | Способ контроля хода выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы |
RU2697948C1 (ru) * | 2018-04-19 | 2019-08-21 | Акционерное общество "Лаборатория Касперского" | Система и способ выявления уязвимостей с использованием перехвата вызовов функций |
Also Published As
Publication number | Publication date |
---|---|
WO1998032072A1 (de) | 1998-07-23 |
CN1243580A (zh) | 2000-02-02 |
KR20000070127A (ko) | 2000-11-25 |
EP0951673A1 (de) | 1999-10-27 |
UA55438C2 (ru) | 2003-04-15 |
DE59800589D1 (de) | 2001-05-10 |
DE19701166A1 (de) | 1998-07-23 |
CN1248110C (zh) | 2006-03-29 |
ES2156029T3 (es) | 2001-06-01 |
ATE200358T1 (de) | 2001-04-15 |
BR9806770A (pt) | 2000-05-16 |
EP0951673B1 (de) | 2001-04-04 |
JP2001511271A (ja) | 2001-08-07 |
US6202176B1 (en) | 2001-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2220443C2 (ru) | Способ контроля выполнения компьютерных программ в соответствии с их назначением | |
JP4518564B2 (ja) | 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体 | |
JP4925422B2 (ja) | データ処理装置内コンテンツへのアクセス管理 | |
US7421534B2 (en) | Data protection for non-volatile semiconductor memory using block protection flags | |
KR100929870B1 (ko) | 컴퓨터 시스템의 바이오스 보안 유지방법 | |
US20070266214A1 (en) | Computer system having memory protection function | |
US6453397B1 (en) | Single chip microcomputer internally including a flash memory | |
EP0735488B1 (en) | Multi-program execution controlling apparatus | |
JPS6046744B2 (ja) | コンピュ−タ・オペレ−テングシステムの機密保護装置 | |
US20050240701A1 (en) | Interrupt control apparatus | |
JPH10228421A (ja) | メモリアクセス制御回路 | |
JPH09500469A (ja) | メモリカード及びその作動方法 | |
JP2002007214A (ja) | 情報処理装置および不揮発性記憶装置の書き換え制御方法 | |
EP0109504A2 (en) | Protection system for storage and input/output facilities and the like | |
JP2002358237A (ja) | プロセッサのメモリ装置に対する権限のないアクセスを防止する保護回路 | |
JP4734582B2 (ja) | 不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラム | |
JP2002538532A (ja) | Icカードのアプリケーションに対するアクセス保護装置 | |
US8042176B2 (en) | Computer readable medium on which is stored a program for preventing the unauthorized use of program data | |
US4916703A (en) | Handling errors in the C bit of a storage key | |
JPH0242551A (ja) | データ処理方式及び不揮発性半導体記憶装置 | |
KR20020054519A (ko) | 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법. | |
JPH01180656A (ja) | メモリ保護装置 | |
JPH05334195A (ja) | 情報処理装置 | |
MXPA99006559A (en) | Method for monitoring the execution of software programmes as prescribed | |
JPH02293936A (ja) | プログラム保護方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20170116 |