Rambler's Top100
 
Блоги Рустэм ХАЙРЕТДИНОВ

Стакан, полный на треть

  22 января 2013 Страница персоны
На конференции меня попросили прокомментировать одну цифру. «Статический анализ позволяет выявить не более 30% уязвимостей приложений».

Заявление абсолютно верное, но я бы не стал рассматривать эту фразу как констатацию неполноценности статического анализа, особенно при исследовании бизнес-приложений (а не оборонных или управляющих инфраструктурой, например).

Сначала стоит задаться вопросом «А сколько вообще уязвимостей есть в приложении, сколько из них теоретически можно найти и сколько это будет стоить». То, что есть уязвимости, которые невозможно обнаружить при анализе только исходного кода, никто не оспаривает, но сколько их может быть в коде? Сколько будет стоить обнаружение других уязвимостей, если найти 100% уязвимостей все равно не возможно?

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

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

То есть в модели угроз незлонамеренного создания уязвимостей программистами статический сканер дает приемлемые результаты – обнаруживает ошибки ввода данных (то есть возможности «инъекций» кода), ошибки авторизации и другие распространенные угрозы. Если сегодня вы вообще не анализируете уязвимости самописных приложений, то найти быстро и дешево 30% самых распространенных уязвимостей - отличный результат.

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

Поделиться:

Оставить свой комментарий:

Для комментирования необходимо авторизоваться!

Комментарии по материалу

Данный материал еще не комментировался.