Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

Способы тестирования web-ресурсов на уязвимости. Достоинства и недостатки.

Дмитрий Никипелов, Минск, Belarus

LVEE Winter 2012

Every day world is exposed to new methods of attack on web-resources, and therefore technical testing for vulnerabilities becomes very important. Ways to test for vulnerabilities are reviewed in the presentation, including the analysis of their advantages and disadvantages.

Наиболее простым способом воровства конфиденциальной информации является поиск уязвимостей интернет-ресурсов и, в частности, web-приложений. И пользователи и разработчики понимают необходимость борьбы с техническими уязвимостями. Каковы пути решения и как выбрать оптимальный способ обеспечения безопасности?

Прежде всего необходимо позаботиться о безопасности платформы (хостинга), т.к. если будут выявлены уязвимости в структуре платформы, говорить о безопасности и тестировании приложений не имеет смысла. Следует иметь в виду, что некоторые хостинг-провайдеры имеют в ассортименте услуг предоставление защищенной базы для размещения приложений (например, технология “защищенный хостинг” от Hoster.by). Подобные технологии предполагают не только первичную подготовку хостинга, но включают в себя и сервисы по тестированию и анализу уязвимостей размещенных ресурсов.

Если говорить непосредственно о тестировании приложений, имеет смысл выделить следующие способы тестирования:

  • принцип “белого ящика” – тестировщику заранее известно все, включая исходный код. В этом случае проводятся проверки исходного кода на наличие потенциально опасного кодирования – статически по сигнатурам и динамически на уровне разработчиков (когда модули подвергаются тестированию на ввод некорректных данных). Для открытого ПО этот метод весьма актуален и позволяет выявить большое количество уязвимостей. Недостатком является статичность метода – при отсутствии сигнатуры в базе проверка не будет иметь эффекта. Так же при использовании сложного синтаксиса потенциальная уязвимость может быть просто не замечена. Данный метод эффективен для выявления ошибок обработки данных, но не позволяет взглянуть на ресурс глазами злоумышленника. Такое тестирование проводится средствами среды разработки или модулями анализа кода – например RATS, Yasca (open source).
  • принцип “серого ящика” – тестеру предоставляются все полномочия кроме непосредственного доступа к серверу. Проверки происходят на предмет повышения полномочий, выявления ошибок обработки данных, реакции на некорректные данные. Данный способ позволяет оценить корректность работы ресурса при вводе разных исходных данных, но, как и предыдущий метод, не позволяет инсценировать атаку на ресурс. Примером свободного инструмента, реализующего данный принцип, можно считать Whisker/libwhisker.
  • принцип “черного ящика” – тестировщик иммитирует действия потенциального злоумышленника любыми доступными ему способами. При таком способе тестирования проверяется как наличие уязвимостей приложения, так и действия персонала по противодействию атаке и реагированию на инцидент. При проведении подобного тестирования действиям персонала необходимо уделять особое внимание, так как в некоторых случаях способность адекватно реагировать на инцидент имеет решающее значение. Недостатком данного метода является то, что тестер должен иметь весьма высокую квалификацию для достижения эффективных результатов, а тестирование занимает достаточно продолжительное время. В какой-то степени эти недостатки можно компенсировать способами, представленными ниже. Для автоматизации подобного тестирования можно применить мощный open source инструмент Nikto.
  • Honey pot (бочонок с медом) – так называют web-ресурс, не несущий никакого практического смысла, но вокруг которого раздута шумиха о его важности и значимости. Реально предназначен для сбора информации о возможных средствах и сценариях осуществления атак. Фактически злоумышленники и являются теми самыми тестерами, причем их количество и квалификация напрямую зависит от того пиара, который создан вокруг web-ресурса. Опыт показывает, что такой способ является весьма эффективным при создании систем противодействия вторжениям и тестировании новых ресурсов.
  • Сбор данных с работающей системы – метод, при реализации которого осуществляется не технический анализ уязвимостей, а сбор данных на блогах и социальных сетях о реализованных или готовящихся атаках. В данном способе самое важное – это быстро собирать информацию и оперативно реагировать на возникающие ситуации. Способ очень эффективен для игровых ресурсов, где основной целью атак является не нарушение работоспособности ресурса, а получение привилегий во время игры (игровые деньги, ресурсы и т.д.). Наряду с вышеперечисленными способами тестирования позволяет добиться хороших результатов. Недостатком данного метода можно считать то, что он не позволяет выявлять уязвимости до того, как ими воспользовались злоумышленники.
В качестве вывода следует отметить, что только комплексный системный подход позволяет добиваться требуемого уровня безопасности интернет-ресурсов. Причем это должно быть не разовым мероприятием, а осуществляться как периодическая спланированная деятельность, требующая согласованной работы разных специалистов.

Лицензия Creative Commons
Текст тезисов доступен под лицензией Creative Commons Attribution-ShareAlike 3.0.

Presentation