RU2220443C2 - Способ контроля выполнения компьютерных программ в соответствии с их назначением - Google Patents

Способ контроля выполнения компьютерных программ в соответствии с их назначением Download PDF

Info

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
Application number
RU99118013/09A
Other languages
English (en)
Other versions
RU99118013A (ru
Inventor
Михель БАЛЬДИШВАЙЛЕР
Штефан Пфаб
Original Assignee
Сименс Акциенгезелльшафт
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Сименс Акциенгезелльшафт filed Critical Сименс Акциенгезелльшафт
Publication of RU99118013A publication Critical patent/RU99118013A/ru
Application granted granted Critical
Publication of RU2220443C2 publication Critical patent/RU2220443C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2143Clearing 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", чтобы тем самым обозначить, что соответствующая область стека не может быть перезаписана.
В рассматриваемом примере стек 11а подразделен на области, охватывающие 8 битов, причем каждой 8-битовой области поставлен в соответствие бит защиты записи, записанный в 3У защиты 11b. Если исходят из того, что работают с 16-битовыми адресами, то для хранения адреса возврата требуются две области стека
Согласно показанному на фиг. 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, отличающийся тем, что если при запросе данных, представляющих адрес возврата, установлено, что информация защиты не указывает на защиту записи, то выполняют по меньшей мере одну из следующих операций: немедленное прерывание выполнения компьютерной программы, сброс системы, выполняющей компьютерную программу, выработку предупредительной сигнализации и стирание данных, связанных с защитой.
RU99118013/09A 1997-01-15 1998-01-15 Способ контроля выполнения компьютерных программ в соответствии с их назначением RU2220443C2 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 モトローラ株式会社 デ−タ処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
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