Инструменты статического анализа для обеспечения безопасности
Безопасность программного обеспечения больше не является проблемой только для проектировщиков, разработчиков и тестировщиков программного обеспечения. Почти все преступления белых воротничков основаны на компьютерной безопасности, и это важно как для домашних, так и для рабочих компьютеров. Поставщики операционных систем пытаются предоставить защищенную среду. Разработчики пытаются найти уязвимость безопасности на ранних этапах разработки программного обеспечения. Инструменты анализа исходного кода, предназначенные для анализа потока безопасности в исходном коде на этапе разработки в жизненном цикле разработки программного обеспечения (SDLC).
Типы анализа
Инструменты анализа безопасности могут использовать исходный код с использованием статического анализа и двоичное приложение с использованием динамического анализа с использованием запуска данных.
Статический анализ
Инструменты статического анализа используют источник для анализа безопасности программного обеспечения. Когда ошибка обнаруживается на ранних этапах жизненного цикла разработки программного обеспечения, затраты на нее снижаются. Инструменты статического анализа помогают определить уязвимость безопасности на этапе разработки.
Динамический анализ
Динамический анализ основан на выполнении системы с использованием бинарных файлов. Он не требует исходного кода программного обеспечения и часто используется для инструментовки. Динамический анализ может быть более сложным для разработки теста безопасности и может не охватывать весь исходный код.
Процесс статического анализа
Инструменты статического анализа анализируют исходный код без запуска приложения. Он будет охватывать весь путь выполнения исходного кода для поиска уязвимостей. Инструменты статического анализа тесно связаны с точкой зрения разработчика и не поддерживают больше динамических данных. Статический анализ может не решить все проблемы безопасности. Статический анализ кода использовал набор правил для потока безопасности и проверки на основе правил. Инструменты статического анализа также требуют ручной проверки для обнаружения ложных срабатываний.
Сопоставление с образцом
Сопоставление с образцом использует простой инструмент grep для поиска всех вхождений в исходном коде для поиска безопасных и небезопасных операций. Это может быть не очень хорошо для сложного статического анализа.
Базовый лексический анализ
Лексер используется для преобразования исходного кода в поток токенов, и токены сопоставляются с базой данных известных шаблонов уязвимостей.
Анализ потока данных
Анализ потоков данных является традиционным компиляторным методом для решения подобных задач и может быть положен в основу систем обнаружения уязвимостей.
Анализ порчи
Когда данные поступают из ненадежного источника, анализ информирует все места, где используются данные.
Некоторые IDE начали интегрировать инструменты статического анализа. Инструменты могут идентифицировать переполнение буфера, недостатки SQL-инъекций, межсторонние сценарии, ошибки форматирования строки, целочисленные переполнения, переполнение буфера, доступ к массиву за пределами границ, доступ к массиву за пределами границ с отрицательным индексом массива, арифметическое переполнение при выделении массива объекты, переполнение буфера Scanf/getstring и другие потоки безопасности.
Открытый исходный код или бесплатные инструменты
Имя инструмента Описание Языки FindBugs Поиск ошибок в программах Java Java FxCop xCop — это приложение, которое анализирует сборки управляемого кода (код, предназначенный для общеязыковой среды выполнения .NET Framework). .NET PMD MD — это анализатор исходного кода. Он находит неиспользуемые переменные, пустые блоки catch, создание ненужных объектов и т. д. Java, JavaScript, XML, XSL, JSP PREfast PREfast — это инструмент статического анализа, который выявляет дефекты в программах C/C++ в Windows CE 5.0 C/C++ OWASP SWAAT Project WAAT — это инструмент анализа исходного кода веб-приложений с открытым исходным кодом. SWAAT выполняет поиск в исходном коде и анализирует базу данных потенциально опасных строк, указанных в файлах .xml. Java, JSP, ASP .Net и PHP Flawfinder, программа, которая исследует исходный код и сообщает о возможных уязвимостях («недостатках») безопасности, отсортированных по уровню риска C и C++. RIPS RIPS — это статический анализатор исходного кода на наличие уязвимостей в веб-приложениях PHP. . Он был выпущен в течение Месяца безопасности PHP, обнаруживающего XSS, SQLi, раскрытие файлов, LFI / RFI, уязвимости RCE и многое другое.
Коммерческие инструменты
Название инструмента Описание Языки IBM Security AppScan Source Edition IBM Security AppScan Source анализирует исходный код для выявления уязвимостей в системе безопасности при интеграции тестирования безопасности приложений с процессами разработки программного обеспечения. COBOL, Java и .NET java™, ClientSide JavaScript, JSP, ColdFusion, C, C++, .NET (C#, ASP.NET и VB.NET), классический ASP (JavaScript/VBScript), PHP, Perl, VisualBasic 6, PL/SQL, T-SQL и COBOL CodeSecure CodeSecure™ — это платформа для статического анализа исходного кода, которая использует технологии проверки программного обеспечения третьего поколения для выявления уязвимостей веб-приложений на всех этапах разработки. ASP.NET, VB.NET, C#, Java/J2EE, JSP, EJB, PHP, классический ASP и VBScript Продукты HP для обеспечения безопасности предприятий
Центр безопасности программного обеспечения HP Fortify
HP Fortify Software Security Center — это набор тесно интегрированных решений для устранения и предотвращения уязвимостей безопасности в приложениях. Это устраняет риск безопасности программного обеспечения, гарантируя, что все бизнес-программное обеспечение — независимо от того, создано оно для настольных компьютеров, мобильных устройств или облака — заслуживает доверия и соответствует внутренним и внешним требованиям безопасности. обнаружение более 480 типов уязвимостей безопасности программного обеспечения на 20 языках разработки — больше всего в отрасли Безопасность приложений Checkmarx Checkmarx CxSuite® — это мощное решение для анализа исходного кода (SCA), предназначенное для выявления, отслеживания и устранения технических и логических недостатков безопасности с самого начала : исходный код. Java, C# / .NET, PHP, C, C++, Visual Basic 6.0, VB.NET, Flash, APEX, Ruby, Javascript, ASP, Perl, Android, Objective C. Coverity SAVE™ Coverity SAVE интеллектуально тестирует код с глубоким пониманием его поведение, критичность и влияние изменений, чтобы сосредоточить тестирование на областях высокого риска и точно обнаружить дефекты, которые часто трудно обнаружить с помощью традиционного тестирования. C, C++, C# и Java Klocwork Truepath Klocwork Truepath® — это механизм статического анализа, на котором работают инструменты Klocwork. Он точно выявляет критические проблемы с безопасностью и надежностью посредством сложного анализа всего кода C/C++, Java и C#. Статический анализ кода C/C++, Java и C# Parasoft Parasoft Test помогает разработчикам предотвращать и устранять дефекты, используя тысячи правил, настроенных для поиска шаблонов кода, которые приводят к проблемам с надежностью, производительностью и безопасностью. Более 15 лет исследований и разработок ушло на тонкую настройку набора правил Parasoft. С/С++, Java, .NET
Следующая сеть предоставляет больше инструментов для статического анализа кода.
https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
https://www.spinroot.com/static/
https://samate.nist.gov/index.php/Source_Code_Security_Analyzers.html
Вывод
Мы обсудили множество инструментов для статического анализа. В рамках проекта следует рассмотреть возможность использования открытых или бесплатных инструментов, исходя из следующих соображений.
Стоимость: инструменты с открытым исходным кодом могут быть ограничены в будущем. Коммерческие инструменты могут стоить. Но реклама может поддерживать больше вариантов будущего. Проект должен учитывать стоимость приложения.
Гибкость отчетов: инструменты поддерживают несколько форматов отчетов для получения более подробной информации об уязвимости.
Поддержка языков программирования: инструменты с открытым исходным кодом не поддерживают несколько языков программирования и сред. Но коммерческий инструмент может поддерживать несколько языков и сред (Android, Windows, Linux и т. д.).
Хорошая производительность поиска ошибок: инструментам может потребоваться больше времени для поиска уязвимости. Инструменты корпоративного типа могут помочь быстро выявить проблемы по сравнению с автономными приложениями.
Настроить или добавить правила: инструмент поддержки настраивает правила, добавляет или обновляет правила в соответствии с бизнес-требованиями.
Инструменты статического анализа для обеспечения безопасности
Первоначально опубликовано на сайте careerdrill.com 15 августа 2016 г.
Hacker Noon — это то, как хакеры начинают свой день. Мы являемся частью семьи @AMI. Сейчас мы принимаем заявки и рады обсудить возможности рекламы и спонсорства.
Если вам понравилась эта история, мы рекомендуем прочитать наши последние технические истории и актуальные технические истории. До следующего раза, не принимайте реалии мира как должное!