Інструменти з відкритим вихідним кодом для аналізу коду

11 квітня 2023 1 хвилина Автор: Endpool

Динамічний або статичний аналіз коду?

Для перевірки якості програмного забезпечення доводиться застосовувати багато різних інструментів. Зокрема, до них належать інструменти статичного та динамічного аналізу. У цій статті ми спробуємо розібратися, чому однієї методології, чи то статичний, чи то динамічний аналіз, може виявитися недостатньо для проведення комплексного аналізу програм і чому краще спільно використовувати ці два підходи. Статичний аналіз коду – це процес виявлення помилок і недоліків у вихідному коді програм. Для його виконання не потрібно запускати програму, весь аналіз буде виконано на наявній кодовій базі. Найближча аналогія, яку можна провести зі статичним аналізом коду, це так званий процес code review, тільки автоматизований (який виконує програма-робот). Зазначимо, що використання статичного аналізу коду не обмежується лише виявленням помилок у програмі. Деякі статичні аналізатори дають змогу перевіряти, чи відповідає вихідний код прийнятому в компанії стандарту оформлення коду.

Динамічний аналіз коду – це спосіб аналізу програми безпосередньо під час її виконання. Аналіз виконується за допомогою набору даних, які подаються на вхід досліджуваній програмі. Тому ефективність аналізу безпосередньо залежить від якості та кількості вхідних даних для тестування. Саме від них залежить повнота покриття коду, яка буде отримана за результатами тестування. Динамічне тестування найбільш важливе в тих галузях, де головним критерієм є надійність програми, час відгуку або споживані ресурси. Це може бути, наприклад, система реального часу, що керує відповідальною ділянкою виробництва, або сервер бази даних. У таких областях будь-яка допущена помилка може виявитися критичною.

TABBY

TABBY – це інструмент статичного аналізу коду для мови Java.

Натиснути тут

Gosec

Перевіряє вихідний код на наявність проблем з безпекою шляхом сканування Go AST.

Натиснути тут

Kunlun-Mirror

Інструмент статичного сканування який підтримує  PHP, JavaScript, і т.д.

Натиснути тут

Phptrace

Інструмент трасування та усунення несправностей для сценаріїв PHP.

Натиснути тут

Nodejsscan

Статичний сканер коду безпеки (SAST) для програм Node.js на основі libsast і semgrep.

Натиснути тут

Python

Статичний сканер коду безпеки для програм Python.

Натиснути тут

PHP-Reaper

Інструмент PHP для сканування коду ADOdb для ін’єкцій SQL.

Натиснути тут

Phortress

Статичний аналізатор коду PHP для пошуку потенційних уразливостей.

Натиснути тут

Hades

Hades – система виявлення статичних уразливостей у коді.

Натиснути тут

Overview

Bandit – це інструмент який  призначений для  швидкого пошуку поширених проблем безпеки в Python-коді.

Натиснути тут

Goreporter

Інструмент на мові Golang, який виконує статичний аналіз, модульне тестування, перегляд коду та генерує звіт про якість коду.

Натиснути тут

Codemillx

codemillx – це помічник CodeQL, який витягує коментарі з коду і може генерувати модулі бібліотеки codeql qll.

Натиснути тут

Python Taint

Статичний аналіз веб-додатків Python на основі теоретичних основ (графі потоку керування, фіксована точка, аналіз потоку даних)

Натиснути тут

GoKart

GoKart – це інструмент статичного аналізу для Go, який знаходить уразливості, використовуючи SSA  форму вихідного коду Go.

Натиснути тут

Cobra

Cobra – це інструмент аудиту безпеки вихідного коду, який підтримує виявлення  проблем безпеки у вихідному коді широкого спектру мов розробки.

Натиснути тут

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.