20 ноября, 2013
Против лома есть приём.
Бабах!! Ещё одна торпеда, пущенная кибер-негодяями в офисное пространство Микрософт увязла в нашей цепкой защите.
А именно: недавно была обнаружена вроде обычная себе атака — при открытии документов Word незаметно для пользователя в систему внедрялся вредоносный код. Вряд ли это событие добралось до заголовков, кабы не одно обстоятельство: это была атака класса «зеродей» – использовалась ранее неизвестная уязвимость в MS Office, для которой нет «заплатки», при этом большинство антивирусов тоже в упор не видели угрозу. А мы отработали на «отлично»!
Да! – технология автоматической защиты от эксплойтов (AEP – Automatic Exploit Prevention) вычислила аномальное поведение и проактивно блокировала атаку. Никаких обновлений и ожиданий. Сразу и наповал.
С «зиродеями» можно и нужно бороться. Это самое острие атак кибер-атак – зачем нужен антивирус, который работает исключительно сигнатурами, а от будущих угроз защищает только на бумаге (пусть очень красивой бумаге)? Ну, да, разработка таких технологий требует мозгов и инвестиций. Не каждый вендор первое имеет, а второе может себе это позволить. Это не детект у соседа тырить, ага..
Вообще, мы всегда считали, что в IT-секъюрити нельзя жить сегодняшним днём – нужно постоянно заглядывать за горизонт и предвидеть поворот мысли кибер-негодяев. Потому «проактивка» была у нас на повестке дня с бородатых 90-х – среди прочего мы тогда отличились разработкой эвристика и эмулятора. Технологии оттачивались, прокачивались и изобретались, и вот, где-то 2,5 года назад, фичи для защиты от эксплуатации известных и неизвестных уязвимостей были объединены под зонтиком AEP. И очень вовремя! С его помощью мы впоследствии проактивно накрыли целый зоопарк целевых атак, в том числе Red October, MiniDuke и Icefog.Тогда же случился всплеск нездорового интереса к Java и AEP снова оказался кстати. И одну из первых скрипок здесь играл модуль Java2SW для детекта атак через Java.
О нём сейчас и пойдёт речь.
Программный ландшафт типичного компьютера напоминает лоскутное одеяло с кучей заплаток и не меньшим количеством дыр. После выпуска каждого продукта в нём регулярно находятся уязвимости (чем популярнее продукт, тем чаще и больше) и вендоры их регулярно же латают, выпуская «патчи». Но#1: вендоры выпускают «патчи» не сразу — кое-кто, бывает, ковыряет в носу месяцами. Но#2: большинство пользователей всё равно, пардон, забивает на установку этих «патчей» и продолжают работать на дырявом софте. Зато#1: практически на каждом компьютере есть… антивирус!
Тут на сцену выходит тот самый Java2SW, который в Java домене убивает сразу двух зайцев.
Вообще, с точки зрения безопасности архитектура Java достаточно продвинутая. Каждая программа выполняется в изолированном пространстве (JVM – Java Virtual Machine), под присмотром секюрити-агента. Увы, Java пала жертвой популярности – какой бы защищённой ни была система, рано или поздно (пропорционально популярности) в ней найдутся уязвимости. К этому должен быть готов каждый вендор — своевременно развивать технологии противодействия, скорость реакции и обучать пользователей. У Oracle это как-то не очень получилось. Не получилось настолько не очень, что пользователи начали массово удалять Java с компьютеров даже несмотря на ограничения при просмотре сайтов.
Судите сами: количество обнаруженных уязвимостей в Java в 2010г. – 52, 2011г. – 59, 2012г. – 60, 2013г. – уже 180 (год продолжается!). А число атак на Java росло по вот такой грустной кривой:
Так чем же прекрасен Java2SW и как он спасает от атак на уязвимости в Java?
В дополнение к штатному секюрити-агенту он добавляет в каждую виртуальную машину Java ещё один элемент безопасности. Этот элемент проводит дополнительный, независимый анализ исполняемой Java-программы и прекращает её выполнение в случае обнаружения подозрительных действий.
Сложность реализации этого метода в том, что нам пришлось не «оборачивать» Java, а внедряться непосредственно в платформу. Почему? Потому что снаружи Java как черный ящик – что-то происходит, но непонятно почему. Например, Java запускает некий процесс, но почему она решила его запустить, какие другие действия с этим связаны — неясно. Если же «заглянуть» внутрь то можно узнать что за код сейчас исполняется в Java-машине, какие у него привилегии, каков его источник и т.п. и на основании этого уже делать хорошо обоснованные выводы.
Благодаря своей архитектуре Java обеспечивает кросс-платформенность (Java-программы без модификации могут работать на очень широком спектре операционных систем). Но, с другой стороны, это требует большого объёма серых клеток для разработки защиты – ведь приходится внедряться прямо в саму «кухню» Java-интерпретатора. Немудрено, что далеко не в каждом антивирусе реализован такой подход, а сама технология сейчас стоит в очереди на патент.
Любопытная особенность Java2SW – совместная работа с другими подсистемами защиты от уязвимостей (AEP). При обнаружении нарушений и подозрительных действий модуль передаёт сигнал вместе с его контекстом на уровень System Watcher – компонента, который собирает сведения с других антивирусных сенсоров, видит общую картину и способен принимать наиболее информированные (точные) решения о самых сложных атаках.
Таким образом, даже если происходит атака на секюрити-менеджер Java (ох, как кибер-негодяи любят это делать!), мы всё равно сможем её отследить и блокировать.
Является ли Java2SW панацеей против неизвестных уязвимостей?
Тут важно отметить следующее: Java2SW не детектит «зеродеи» и не выявляет уязвимости. Это не его «сфера интересов» и, как ни странно, от этого его эффективность только выигрывает. Java2SW выявляет эксплойты – аномальное поведение кода, а уж куда эти эксплойты бьют – нам всё равно. Продукт будет защищать не от «дыр» в упоминавшемся выше лоскутном одеяле, а от атак на них. Таким образом, мы абстрагируемся от конкретных уязвимостей и защищаем пользователей более универсальным подходом. Ну а сами «дыры» можно централизованно отслеживать и патчить, например, с помощью systems management.
Каков же практический результат от использования Java2SW?
Во-первых, с высокой долей вероятности мы можем защищать пользователей от неизвестных атак через уязвимости Java. Иными словами – даём запас прочности на время между обнаружением уязвимости и доступностью «патча». Во-вторых, даже если пользователь принадлежит к полку игнорантов и вовремя не устанавливает «патчи», то мы всё равно спасём его от таких атак.
На этом о костылях для современного программного ландшафта всё (на сегодня).