60% всего ПО не соответствует требованиям ИБ

Уж сколько раз твердили миру… что SDLC придуман не просто так и при написании ПО надо учитывать не только классические принципы программирования, но и учитывать вопросы безопасности. Причем с самого начала проекта, чтобы не латать дыры постфактум. На днях компания Veracode опубликовала свой очередной, уже третий отчет «The State of Software Security Report«, описывающий состояние текущего уровня защиты ПО.

Veracode проанализировала 4835 приложений (в прошлом отчете их было 2922) на разных языках программирования — Java, C/C++, .NET, ColdFusion и PHP; разного типа (компоненты, библиотеки, web и иные приложения) и разной формы «собственности» — внутренняя разработка, open source, аутсорсинговое ПО, коммерческое и т.д.

Краткие результаты таковы:

  • 8 из 10 Web-приложений провалили «тест» OWASP Top 10
  • более половины всех приложений имеют просто «никакой» уровень качества защиты ПО
  • CSS остается одной из распространенных проблем
  • большинство разработчиков остро нуждается в тренингах по вопросам ИБ
  • лучше всех защищены финансовые организации
  • даже разработчики средств защиты не следуют правилам безопасного программирования
  • для анализа ПО необходимо использовать и статический и динамический анализ (хотя первый и находит на порядок больше проблем).
Оцените статью
Бизнес без опасности
Есть что добавить? Добавьте!

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

  1. magicandy

    Можно ли где-нибудь протестировать произвольно взятый exe файл по указанной методике или другим методикам (OWASP и др.) в области безопасности?

    Ответить
  2. Анонимный

    С высокой достоверностью — нет. Хороший результат получить тестированием конечного продукта нельзя. Эффективно только применение мер на этапах проектирования и кодирования. Остальное малоэффективно.
    Если практически — можно порыться в ехе-шнике найти ляпы созданные на этапе кодирования а вот заложенные в архитектуру… Это нужно делать на другом уровне абстракции или следить за выполнением в процессе работы — такие методы уже есть…

    Ответить
  3. magicandy

    Тогда как же товарищи из Veracode протестировали продукты, без исходных кодов?

    Ответить
  4. Алексей Лукацкий

    Во-первых, Veracode тестировал во многом исходный код. Они же за это деньги берут 😉

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

    Ответить
  5. Анонимный

    Ну вот попробуйте одну из моих разработок… публичный вариант… Но могу разложить программу по полочкам прямо в процессе работы… запустите например ворд )) http://goo.gl/g24Fs

    Ответить
  6. magicandy

    Спасибо, Евгений!
    А это не тоже самое, что контрольная точка в среде разработки?

    Ответить
  7. Анонимный

    Почти тоже… Только эта утилитка как бы съедает программу и может ее контролировать с точностью до 1 машинной команды, можно код изменять прямо в процессе работы, смотреть что он делает, ограничивать и т.п. В этой версии используется для отлова точек и выдает немного доп. инфы.

    Ответить
  8. Unknown

    Compuware Driver Studio, и все дела 😉

    Ответить
  9. Alexey Sintsov

    Этот комментарий был удален автором.

    Ответить
  10. Alexey Sintsov

    Тестирование без изходных кодов:
    1) Фаззинг
    — генерируем данные по известному формату.
    — по набору семплов создаем тест данные (мутация)

    Циклический запуск ПО с "генерированными" данными. Анализ поведения (падения).

    2) Статический анализ
    — анализ вызова опасных функций
    — анализ дизасм кода, вывление слабостей (аллок, фри, фри ветка. например или аллок, копируем указатель, фри, используем указатель… )

    Комбинации указанных методов, да ещё много как можно =)

    Ответить