Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обзор утилит для безопасной разработки




 

Утилиты для безопасной разработки:

BinScope Binary Analyzer

Недаром мы уделяем много времени обходу защит DEP и ASLR. Это действительно серьезный барьер для создателей сплойтов, который кардинальным образом влияет на возможность эксплуатации найденной уязвимости. Чтобы понимать, что представляют собой требования SDL, вот в качестве примера одно из них: «Любое приложение должно быть в обязательном порядке защищено как DEP, так и ASLR». Для этого исходник должен быть собран соответственно с флагами /NXCOMPAT и /DYNAMICBASE. Но это лишь одно из требований, а с помощью анализатора Binscope SDL можно выяснить, использует ли приложение все рекомендации и требования SDL. Программа проверяет, были ли установлены требуемые правилами SDL флаги компилятора/сборщика, использовались ли самые последние версии инструментария и так далее. Помимо этого Binscope сообщает об использовании опасных конструкций, который являются запрещенными или нежелательными (к примеру, использование указателей на глобальные функции).

AppVerifier

Application Verifier — это тоже анализатор, но предназначен для динамического исследования native-кода и обнаружения программерских ошибок, которые сложно отловить во время обычной процедуры тестирования приложения. Динамический подход подразумевает, что программа анализируется прямо во время ее выполнения (это называется runtime-тестированием). AppVerif отслеживает работу программы и проверяет, не выполняет ли оно действий, опасных с точки зрения безопасности. Например, если исследуемое приложение создаст объект без дескриптора безопасности или небезопасным образом передает параметры в API, то выдается предупреждение.

Attack Surface Analyzer Beta

Определение поверхности атаки — задачка для Attack Surface Analyzer. Это один из самых последних инструментов из лаборатории Microsoft, о котором я рассказывал в «Колонке редактора» прошлого номера. Анализатор позволяет отследить изменения в системе, произошедшие в результате каких-то определенных действий. Например, сделав snapshot’ы до и после установки исследуемого приложения и сравнив их, можно определить все произошедшие изменения: появление новых файлов, ключей реестра, сервисов, ActiveX-компонентов, открытых портов, изменения в ACL-списках и так далее.

Code Analysis for C/C++

Автоматизированное исследование исходных кодов на наличие признаков уязвимостей называется статическим тестированием. В свою очередь, Code Analysis for C/C++ является стандартным статическим анализатором кода и по умолчанию входит в состав некоторых редакций Visual Studio. Продуманные механизмы позволяют автоматизировать поиск в native-коде утечек памяти, неотловленных исключений, проблем с быстродействием и, конечно же, уязвимостей в области безопасности.

Microsoft Code Analysis Tool.NET (CAT.NET)

Это тоже утилита для статического анализа, но упоминание.NET в названии программы неслучайно: она производит анализ управляемого кода (C#, Visual Basic.NET, J#). Основная специализация — веб-приложения. CAT.NET выявляет слабые места, которые могут быть впоследствии эксплуатированы через такие векторы атак как Cross-Site Scripting (XSS), SQL Injection и XPath Injection. До публичного релиза это был исключительно внутренний инструмент в компании Microsoft.

FxCop

Это тоже статический анализатор управляемого кода. По сути, он проверяет сборки.NET на соответствие рекомендациям по проектированию библиотек.NET Framework. Правда, он тестирует не исходник, а компилированный объектный код. FxCop использует разбор CIL (промежуточный язык, разработанный Microsoft для платформы.NET) и анализ графа вызовов для проверки сборок на наличие более чем двухсот различных дефектов.

Anti-Cross Site Scripting (Anti-XSS) Library

Многие из уязвимостей можно заранее предупредить, если предложить разработчикам соответствующие инструменты. К примеру, Anti-XSS разработана специально для того, чтобы уменьшить вероятность осуществления XSS-атак на веб-приложения. Важно, что решение включает в себя что-то вроде WAF (файрвол для веб-приложения) — так называемый Security Runtime Engine (SRE). Это движок, запущенный в виде HTTP-модуля, который обеспечивает дополнительный уровень защиты для веб-приложения без необходимости перекомпилирования.

SiteLock ATL Template

Библиотека SiteLock Active Template не поможет избавиться от оставленных в коде багов, зато на порядок снизит риск их эксплуатации. Дело в том, что с помощью ATL можно ограничить запуск ActiveX-компонентов, используя заранее определенный список доменных имен и зон безопасности. Можно сделать так, чтобы ActiveX-компонент выполнялся только в интранете (то есть в локальной сети), но не работал на страничках в интернете. Ограничивая возможности по эксплуатации уязвимостей, мы заметно снижаем поверхность возможной атаки.

banned.h

Если говорить о разработке на C/C++, то особый риск в коде представляют команды, позволяющие выполнить buffer overflow и другие похожие типы атак. Таких команд очень много: функции для работы со строками (xstrcpy(), strcat(), gets(), sprintf(), printf(), snprintf(), syslog()), системные команды (access(), chown(), chgrp(), chmod(), tmpfile(), tmpnam(), tempnam(), mktemp()), а также команды системных вызовов (exec(), system(), popen()). Вручную исследовать весь код (особенно если он состоит из нескольких тысяч строк) довольно утомительно. Это проверяют статические анализаторы, но есть еще один вариант — использовать специальный заголовочный файл, который не допустит использования функций, давно не рекомендуемых к использованию (и, естественно, запрещенных SDL).

SDL Threat Modeling Tool

Важной частью проектирования будущего программного продукта является моделирование угроз. Результатом моделирования является схема основных элементов будущей системы и обозначенные на ней границы доверия. Так вот SDL Threat Modeling Tool позволяет экспертам в области, не связанной с безопасностью, создавать и анализировать модели угроз. Используя полученные диаграммы, можно распознать возможную опасность и выполнить ее смягчение. SDL Threat Modeling Tool сама предлагает подсказки во время построения диаграмм и указывает на возможные просчеты.

SDL Process Template

Для Visual Studio (что неудивительно) доступен специальный шаблон, который автоматически интегрирует политику, процесс и средства, связанные с руководством по процессу Microsoft SDL непосредственно в среду разработки. Таким образом, создавая проект на основе этого шаблона, придется выполнять все условия SDL. И это очень правильно.

MiniFuzz File Fuzzer

Согласно SDL, в качестве одного из обязательных этапов проверки приложения (на стадии верификации) должен использоваться фаззинг, то есть тестирование случайными входными данными. Minifuzz File Fuzzer — основное средство нечеткого тестирования, разработанное для упрощения поиска проблем, которые могут привести к уязвимости системы безопасности в коде обработки файлов. Тулза генерирует различные варианты содержания файла и «скармливает» его приложению, пытаясь выявить необрабатываемые исключения.

SDL Regex Fuzzer

Средство нечеткого тестирования регулярных выражений (Regex) — это еще один фаззер, который опубликовала Microsoft. SDL Regex Fuzzer позволяет выполнять проверку регулярных выражений на наличие потенциальных уязвимостей типа «отказ в обслуживании». Это неспроста. Регулярные выражения (особенно в нагруженных участках кода) нужно использовать очень аккуратно. Регулярные выражения, содержащие паттерны, которые выполняются за экспоненциальное время (например, повторение фрагментов, которые сами являются повторяющимися), могут быть использованы злоумышленниками для осуществления DoS-атаки. Фаззер, в свою очередь, позволяет прямо во время разработки выявить возможные уязвимости в регекспах.





Поделиться с друзьями:


Дата добавления: 2016-10-22; Мы поможем в написании ваших работ!; просмотров: 848 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2457 - | 2338 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.