Система для определения программных закладок

 

Полезная модель относится к компьютерным системам и более конкретно к системам автоматического составления описания и кластеризации различных, в том числе и вредоносных объектов и предназначена для автоматического составления описания объектов на естественном языке в удобном для восприятия формате, а также для обнаружения новых или потенциальных вредоносных объектов. Технический результат состоит в упрощении структуры системы с повышением точности определения программных закладок. Блок-схема системы приведена на фиг.1, где изображены устройство 1 контроля и управления, блок 2 лексического анализа, блок 3 памяти словаря лексем, блок 4 памяти распознанных лексем, блок 5 буферной памяти, блок 6 сигнатурного анализа, блок 7 памяти распознанных сигнатур, блок 8 памяти базы сигнатур, блок 9 синтаксического анализа, блок 10 памяти дерева иерархической структуры программы - хранит иерархическую структуру программы, построенную на основе анализа ее структуры при синтаксическом анализе, блок 11 памяти базы правил синтаксического анализа - приоритетов дефектов кода, блок 12 регистрации нарушений - подготовки отчетов о найденных нарушениях, блок 13 определения нарушений, коммутатор 14, блок 15 формирования строки символов.

12 ил.

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

Известно устройство для сигнатурного анализа (патент РФ 28263 на полезную модель, кл. G06К 9/00, опубл.2003 г), содержащее блок управления, анализатор, формирователь сигнатур, блок памяти.

Известное устройство имеет ограниченные функциональные возможности.

Известна система для определения вредоносных объектов программ (патент РФ 91213 на полезную модель, кл. G11B 13/00, опубл.2010 г), содержащая блок управления, анализатор, блоки памяти характеристик объектов и обработанных объектов.

Известная система имеет излишнее оборудование и сложный алгоритм работы.

Известна система контроля и диагностики (заявка РФ 2003111456 на изобретение, кл. G05B 23/02, опубл.2004 г), содержащая блок контроля и управления, выход которого и вход системы соединены с входами блока коммутации, выход которого соединен с входом блока лексического анализа, блок сигнатурного анализа.

Известная система выполнена с излишним оборудованием.

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

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

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

Структура и работа системы поясняется фигурами 1-12.

Блок-схема системы приведена на фиг.1, на фиг.2 приведена блок-схема алгоритма работы блока лексического анализа, на фиг.3 приведена блок-схема алгоритма работы блока синтаксического анализа, на фиг.4 приведена блок-схема алгоритма работы блока сигнатурного анализа, на фиг.5 приведена блок-схема алгоритма работы блока определения нарушений, на фиг.6 приведен пример исходного текста абстрактного языка программирования, на фиг.7 приведен пример определений лексем в блоке памяти словаря лексем, на фиг.8 приведен пример содержимого последовательности распознанных лексем в блоке памяти лексем, на фиг.9 приведен пример правил синтаксического анализа в блоке памяти базы правил синтаксического анализа, на фиг.10 приведен пример паттернов сигнатурного анализа в блоке памяти базы сигнатур, на фиг.11 приведены примеры правил определения нарушений в блоке определения нарушений, на фиг.12 приведен пример дерева структурной декомпозиции программы на выходе блока памяти иерархической структуры программы, построенной на основе анализа ее структуры при синтаксическом анализе в блоке синтаксического анализа.

Система для определения программных закладок на фиг.1 содержит устройство 1 контроля и управления, блок 2 лексического анализа, блок 3 памяти словаря лексем, блок 4 памяти распознанных лексем хранит последовательность распознанных (найденных) лексем (элементов грамматики языка программирования, распознанных во входных исходных кодах программы), блок 5 буферной памяти, блок 6 сигнатурного анализа, блок 7 памяти распознанных сигнатур - хранит информацию о распознанной сигнатуре) найденном фрагменте сигнатуры, сработавшем правиле поиска сигнатуры и ее местонахождение в исходных кодах программы, блок 8 памяти базы сигнатур, блок 9 синтаксического анализа, блок 10 памяти дерева иерархической структуры программы - хранит дерево иерархической структуры программы, построенной на основе анализа ее структуры при синтаксическом анализе, блок 11 памяти базы правил синтаксического анализа - приоритетов дефектов кода, блок 12 регистрации нарушений - подготовки отчетов о найденных нарушениях, блок 13 определения нарушений, коммутатор 14, блок 15 формирования строки символов.

Блок 1 может быть выполнен на микропроцессоре Atmel ATmega1280-16AU TQFP100, блоки 2, 6, 9, 13 могут быть выполнены на микропроцессорах типа Mitsubishi M30201F6FP.

Система работает следующим образом.

Анализируемая программа через коммутатор 14 транслируется в блок 2 и через блок 15 в блок 6. В блоке 2 осуществляется сортировка составляющих лексем программы на основе данных из блока 3. Результаты сортировки распознанные лексемы фиксируются в блоке 4. В блоке 15 формируется строка символов для сравнения с сигнатурами блока 8. В блоке 6 осуществляется последовательное или параллельное сравнение сформированной строки с сигнатурами из блока 8 и найденные распознанные сигнатуры фиксируются в блоке 7. Результаты сортировки из блока 4 через блок 5 передаются в блок 9. В блоке 9 на основе правил из блока 11 выявляются возможные ситуации, формируется дерево иерархической структуры разобранной программы и фиксируется в блоке 10. Из блоков 7 и 10 выявленные параметры поступают в блок 13, в котором сравниваются по содержимому и по занимаемому уровню. При регистрации совпадающей ситуации осуществляется перемножение коэффициента значимости распознанной сигнатуры и номера уровня распознанной лексемы. Результаты определяются в блоке 13. Из блока 13 данные сравниваются с пороговой установкой в блоке 12. В случае превышения порога регистрируется наличие программной закладки (нарушение в программе).

Рассмотрим работу системы на входных условиях сквозного примера. Пример исходного текста для анализа абстрактного языка программирования следующего вида приведен на Фиг.6. А в блоке 3 заданы следующие определения лексем (для наглядности зададим их в виде текстовых описаний, а не как регулярные выражения и исключим из них разделители конструкций), приведенные на фиг.7. Задача - найти в исходном тексте потенциально опасные участки кода: уязвимости и программные закладки.

На выходе блока 2 в блоке 4 фиксируется и через блок 5 передается в блок 9 пример содержимого выходной цепочки лексем поступившей на вход синтаксического анализатора (Фиг.8).

Блок 11 содержит набор правил синтаксического анализа (фиг.9) для построения дерева в блоке 9.

Блок 7 содержит следующее содержимое базы распознанных сигнатур - пример паттернов сигнатурного анализа (фиг.10).

Блок 13 выполняет действия, включающие примеры правил определения нарушений (фиг.11).

На фиг.12 приведен пример дерева структурной декомпозиции программы на выходе блока 10 памяти дерева иерархической структуры программы, построенной на основе анализа ее структуры при синтаксическом анализе в блоке 9 синтаксического анализа.

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

Блок 6 сигнатурного анализа в 5-м и 6-м символах входной последовательности на основе базы сигнатур обнаружит потенциально опасную конструкцию (ПОК) 1 с угрозой 7 (сработает «Сигнатура 2») и сформирует распознанные сигнатуры в блоке 7 (фиг.10).

Блок 13

а) определит, что найденная ПОК 1 относится к узлу дерева FB (фиг.12) по ее координатам (5-6);

б) определит, что сработало правило для уязвимости 2: в самом

деле, ПОК 1 находится внутри узла «Правило 2»;

в) вычислит итоговый коэффициент уязвимости, умножив степень ее опасности (7) на коэффициент правила по уязвимости (0,8);

г) поскольку итоговый коэффициент (7×0,8=5,6) превышает пороговое значение фильтра (5), то данная информация попадет в отчет;

д) модуль построения отчета выдаст в результирующий файл адрес участка (5-6) предполагаемой уязвимости 2.

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

В процессе работы со средством и последующим рецензированием кода экспертами были успешно выявлены программные закладки (в основном -hard-coded password) и уязвимости (по большей части связанные с переполнениями буфера).

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

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



 

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

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

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