Лаборатория Касперского патентует передовую технологию сравнения файлов

Лаборатория Касперского патентует передовую технологию сравнения файлов

«Лабораторией Касперского» получен патент на эффективный метод точного сравнения элементов программного обеспечения. Патент №8499167, выданный Бюро по регистрации патентов и торговых марок США, описывает технику сравнения файлов для выявления вредоносных объектов, модифицированных злоумышленниками с целью затруднить обнаружение защитными программами.

На фоне стремительного роста числа вредоносных программ критически важным фактором становится способность антивирусных компаний быстро и качественно выявлять новые угрозы. Классический метод сравнения неизвестных файлов с коллекцией вредоносных объектов позволяет блокировать огромное количество зловредов, появляющихся каждый день. Однако сам механизм сравнения не идеален. Злоумышленники без особого труда нивелируют эффективность подхода, «засоряя» тело файла различными данными, что меняет его структуру и делает непохожим ни на один из коллекции вредоносных объектов.

Специалисты «Лаборатории Касперского» учли эти особенности, разрабатывая новую технологию сравнения файлов. В основе запатентованной технологии лежит идея о том, что функционал файла можно определить по его содержимому, не запуская сам файл. Строки байт-кода файла содержат информацию о выполнении файла в рамках операционной системы (имена файлов, ключи реестра, интернет-ссылки), что представляет своеобразный «конспект» файла.  Ранее практическая реализация этой идеи сталкивалась с трудностями: какие именно строки файла сравнивать, какие из них сигнализируют о вредоносном функционале объекта и как осуществить поиск за разумное время с минимальными затратами ресурсов.

Запатентованная технология «Лаборатории Касперского» описывает алгоритм автоматического сравнения файлов по строкам для определения схожести их функционала. Содержимое каждого нового файла автоматически анализируется – благодаря набору правил отсеиваются нерелевантные строки, а оставшиеся, дающие понимание о функциональных возможностях, сравниваются с коллекцией вредоносных объектов, проанализированных по такому же принципу. Важным свойством технологии является высокая скорость сравнения «конспекта» файлов с огромной базой вредоносного ПО.

«Практика показывает, что эффективность защитных решений определяется не только способностью распознавать вредоносные объекты, но еще и скоростью работы, минимальным количеством затраченных для этого ресурсов. Совместить оба качества – это вызов для разработчиков, и мы смогли достичь высокого результата. Полученный патент – лучшее тому доказательство», – прокомментировал Алексей Маланов, антивирусный эксперт «Лаборатории Касперского», разработчик запатентованной технологии.

Несмотря на то, что патент получен лишь недавно, эксперты «Лаборатории Касперского» уже продолжительное время применяют технологию для составления образцов новых вредоносных программ.

Критическую уязвимость в ядре Linux x86 не замечали с 2020 года

В ядре Linux обнаружили уязвимость, которая тихо жила в системе несколько лет — и притом в одном из самых чувствительных мест. Речь идёт о механизме обработки page fault на архитектуре x86, то есть о коде, который срабатывает каждый раз, когда процессор фиксирует некорректный доступ к памяти.

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

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

На уязвимость обратил внимание инженер Intel Седрик Син (Cedric Xing), внимательно изучавший код обработки исключений. Как выяснилось, логика в функции do_page_fault() опиралась на устаревшее и, по сути, ошибочное допущение.

В комментариях прямо говорилось, что отследить состояние прерываний на всех возможных ветках выполнения почти невозможно — и разработчики много лет балансировали между «комбинаторным кошмаром» из патчей и попытками аккуратно чинить отдельные случаи.

Но проблема оказалась глубже. Код смешивал два разных понятия — адрес (пользовательский или ядерный) и контекст выполнения. Обычно они совпадают, но не всегда.

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

Особенно показательной оказалась ветка __bad_area_nosemaphore(), где предпринимается попытка «восстановить правильное состояние», но на деле это происходило не всегда и не одинаково. В результате возникала асимметрия: в зависимости от пути выполнения система могла оказаться в неожиданном состоянии.

В итоге разработчики пришли к простому, но радикальному выводу: латать отдельные ветки бессмысленно. Вместо этого было принято решение гарантированно и безусловно отключать прерывания в одном конкретном месте — прямо перед возвратом управления в низкоуровневый обработчик page fault. Без условий, без проверок, без попыток «угадать» контекст.

Патчи уже вошли в ветку Linux 6.19, а также планируются к бэкпорту в поддерживаемые стабильные версии. Фактически оно устраняет дефект, появившийся ещё во времена Linux 5.8.

RSS: Новости на портале Anti-Malware.ru