В LLVM/Clang добавлена техника защиты стека SafeStack

В LLVM/Clang добавлена техника защиты стека SafeStack

В компилятор Clang добавлен код подсистемы SafeStack, предназначенной для защиты от типовых ошибок, вызванных повреждением памяти в результате работы со стеком и являющихся причиной большого числа эксплуатируемых уязвимостей (например, в 2014 году в Firefox было выявлено 55 подобных уязвимостей).

SafeStack позволяет предотвратить получение контроля над помещёнными в стек указателями в программах на C/C++ через сохранение указателей (адреса возврата, указатели на функции и т.п.) в отдельной изолированной области памяти, доступ к которой производится только с использованием специальных проверок корректности обращения к памяти. Таким образом, стек приложения разделяется на две части - защищённый стек для хранения указателей, адресов из регистров и локальных переменных, и незащищённый стек, в котором сохраняется всё остальное. В защищённый стек данные добавляются только после статической проверки и доступ к ним ограничен, что существенно усложняет организацию получения контроля над выполнением кода в результате совершения атак, пишет opennet.ru.

Накладные расходы от реализуемых в SafeStack дополнительных проверок несущественны и составляют 0.01-0.05%, что существенно меньше, чем при использовании методов на основе добавления меток в стек (stack cookies). Более того, в некоторых случаях наблюдается даже ускорение работы программы за счёт более эффективного использования кэша. Метод защиты отмечен как стабильный и уже опробованный при сборке Chromium, базовой системы FreeBSD и более 100 пакетов. Для включения SafeStack в clang добавлены новые опции "-fsafe-stack" и "-fno-safe-stack" (по умолчанию новый режим отключен), для отключения режима для отдельных функций реализован атрибут no_safe_stack. 

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

Протекторы скрывают около 40% уязвимостей в Android-приложениях

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

Android остаётся самой распространённой мобильной платформой в мире — ей пользуются около 75% рынка, по данным Statcounter.

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

В исследуемых приложениях специалисты обнаружили более 50 потенциальных уязвимостей разного уровня риска. После применения протектора количество обнаруживаемых ошибок снизилось примерно на 40%.

Наиболее заметное уменьшение пришлось на уязвимости высокого уровня риска — минус 67%. Уязвимостей со средним уровнем риска стало меньше на четверть, а дефектов, которые могли косвенно повлиять на безопасность, — почти на 80%.

Результат оказался разным для разных категорий приложений. Лидером по снижению числа видимых уязвимостей стали сервисы доставки еды — минус 46%. Далее идут приложения для путешествий и транспорта, а также маркетплейсы — по 38%. Примерно треть уязвимостей удалось скрыть в приложениях из сфер развлечений, телекоммуникаций, финансов и платежей.

Интересный эффект наблюдался и в области скрытия защитных техник. После применения протектора количество «видимых» мер безопасности, которые можно обнаружить с помощью сканера, сократилось на 67%. Это означает, что защитные механизмы стало сложнее распознать, а значит — сложнее заранее подготовить способы их обхода.

Также уменьшилось количество обнаруживаемых ключей доступа, токенов и других чувствительных данных — в среднем на 71%. Максимальный эффект наблюдался у приложений категории «Инструменты и утилиты».

По результатам анализа, использование техник защиты от запуска в виртуальных машинах оказалось скрыто в 98% случаев. Механизмы защиты от отладки — в 91%.

Для обфускации и защит от дизассемблирования снижение заметности было менее выраженным, на 32% и 21% соответственно.

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

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

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