англійськафранцузькаіспанська

Ad


Значок OnWorks

flawfinder - онлайн у хмарі

Запустіть flawfinder у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда flawfinder, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


flawfinder - лексично знаходить потенційні недоліки безпеки («хіти») у вихідному коді

СИНТАКСИС


дефектоскоп [--допомога|-h] [-- версія] [--ліструли]
[--allowlink] [--followdotdir] [--nolink]
[--patch=ім'я файлу|-P ім'я файлу]
[--входи|-I] [ --minlevel=X | -m X ] [--хибно позитивний|-F]
[-- ніколи не ігнорувати|-n]
[--регулярний вираз=ПАТЕРН | -e ПАТЕРН]
[--контекст|-c] [--стовпці|-C] [--лише дані|-D] [--html|-H] [-- негайно|-i]
[--однорядкова|-S] [--час пропуску] [--спокійно|-Q]
[--loadhitlist=F] [--savehitlist=F] [--diffhitlist=F]
[--] [ джерело код файл or джерело корінь каталог ]+

ОПИС


Flawfinder здійснює пошук у вихідному коді C/C++, шукаючи потенційні недоліки безпеки. До
запустіть flawfinder, просто надайте flawfinder список каталогів або файлів. Для кожного каталогу
враховуючи всі файли, які мають розширення назв файлів C/C++ у цьому каталозі (і його
підкаталоги, рекурсивно) буде розглянуто. Таким чином, для більшості проектів просто дайте
flawfinder ім'я найвищого каталогу вихідного коду (використовуйте ``.'' для поточного
каталог), і flawfinder перевірить весь вихідний код проекту на C/C++. Якщо ви
тільки хочу мати зміни переглянуто, збережіть уніфіковану відмінність цих змін (створену GNU
"diff -u" або "svn diff" або "git diff") у файлі виправлення та використовуйте параметр --patch (-P).

Flawfinder створить список ``звернень'' (потенційних недоліків безпеки), відсортований за ризиком; в
найризикованіші звернення показуються першими. Рівень ризику вказується у квадратних дужках і змінюється
від 0, дуже маленький ризик, до 5, великий ризик. Цей рівень ризику залежить не тільки від
функції, але на значеннях параметрів функції. Наприклад, постійний
рядки часто менш ризиковані, ніж повнозмінні рядки в багатьох контекстах, і в таких
контексти, у яких звернення буде мати нижчий рівень ризику. Flawfinder знає про gettext (звичайний
бібліотека для інтернаціоналізованих програм) і розглядатиме постійні рядки, через які проходять
gettext так, ніби це постійні рядки; це зменшує кількість помилкових звернень
інтернаціоналізовані програми. Flawfinder зробить те ж саме з _T() і
_TEXT(), поширені макроси Microsoft для роботи з інтернаціоналізованими програмами. Відхильник
правильно ігнорує більшість тексту всередині коментарів і рядків. Зазвичай дефектоскоп показує все
звернення з рівнем ризику принаймні 1, але ви можете використовувати параметр --minlevel для відображення лише
удари з більш високим рівнем ризику, якщо хочете. Описи хітів також відзначають відповідні загальні
Ідентифікатор(и) перерахування слабких місць (CWE) в дужках, як описано нижче. Відхильник
є офіційно CWE-сумісним.

Не кожне звернення насправді є вразливістю безпеки, і не кожна вразливість безпеки
обов'язково знайдено. Тим не менш, дефектоскоп може допомогти у пошуку та видаленні
вразливості безпеки. Поширеним способом використання flawfinder є спочатку застосувати flawfinder
набір вихідного коду та вивчити елементи з найвищим ризиком. Потім використовуйте --inputs для перевірки
місця введення та перевірте, чи є лише законні та безпечні значення введення
приймається від ненадійних користувачів.

Після того, як ви пройшли аудит програми, ви можете позначити рядки вихідного коду, які насправді є нормальними, але
створювати помилкові попередження, щоб дефектоскоп перестав скаржитися на них. Щоб позначити а
Щоб ці попередження були придушені, поставте коментар у спеціальному форматі
той самий рядок (після вихідного коду) або сам по собі в попередньому рядку. Коментар
має мати один із двох наступних форматів:

· // Flawfinder: ігнорувати

· /* Flawfinder: ігнорувати */

З метою сумісності ви можете замінити "Flawfinder:" на "ITS4:" або "RATS:" у цих
коментарі спеціального формату. Оскільки можливо, що такі рядки є неправильними, ви можете використовувати
параметр --neverignore, який змушує flawfinder ніколи не ігнорувати жодного рядка незважаючи ні на що
директиви коментарів говорять (що більш заплутано, --neverignore ігнорує ігнорування).

Flawfinder використовує внутрішню базу даних під назвою ``набір правил''; набір правил ідентифікує
функції, які є поширеними причинами недоліків безпеки. Стандартний набір правил включає великий
кількість різних потенційних проблем, включаючи обидві загальні проблеми, які можуть вплинути на будь-яку
Програма C/C++, а також ряд специфічних функцій, подібних до Unix і Windows
особливо проблематично. Параметр --listrules повідомляє список поточних правил і
їхні рівні ризику дефолту. Як зазначалося вище, кожен потенційний недолік безпеки, знайдений у певному
файл вихідного коду (що відповідає запису в наборі правил) називається ``зверненням'', а набір
Звернення, знайдені під час будь-якого конкретного запуску програми, називаються списком хітів
можна зберегти (за допомогою --savehitlist), перезавантажити для повторного відображення (за допомогою --loadhitlist), і
ви можете показати лише звернення, які відрізняються від іншого запуску (за допомогою --diffhitlist).

Flawfinder – це простий інструмент, який дає деякі основні плюси і мінуси. Працює дефектоскоп
шляхом простої лексичної лексики (пропуску коментарів і правильної лексики рядків),
пошук збігів маркерів з базою даних (зокрема, для пошуку викликів функцій).
Таким чином, Flawfinder подібний до RATS і ITS4, які також використовують просту лексичну токенізацію.
Потім Flawfinder вивчає текст параметрів функції, щоб оцінити ризик. На відміну від
такі інструменти, як splint, прапорці попередження gcc і clang, flawfinder НЕ використовувати або мати
доступ до інформації про контрольний потік, потік даних або типи даних під час пошуку
потенційні вразливості або оцінка рівня ризику. Таким чином, дефектошукач буде
обов'язково дає багато помилкових спрацьовувань щодо вразливостей і не повідомляє про багато
вразливості. З іншого боку, flawfinder може знайти вразливості в програмах, які
не може бути побудований або не може бути пов'язаний. Він часто може працювати з програмами, які навіть не можуть бути
зібрано (принаймні за допомогою інструментів рецензента). Flawfinder також не так бентежить
макровизначення та інші дивацтва, з якими мають проблеми більш складні інструменти.
Flawfinder також може бути корисним як простий вступ до інструментів статичного аналізу
загалом, оскільки його легко почати використовувати і легко зрозуміти.

Будь-яке ім’я файлу, вказане в командному рядку, буде перевірено (навіть якщо воно не має звичайного
розширення імені файлу C/C++); таким чином ви можете змусити flawfinder перевіряти будь-які конкретні файли
бажання. Під час рекурсивного пошуку в каталогах flawfinder тільки відкриває та перевіряє
звичайні файли, які мають розширення назв файлів C/C++. Flawfinder припускає, що файли є
файли C/C++, якщо вони мають розширення ".c", ".h", ".ec", ".ecp", ".pgc", ".C", ".cpp",
".CPP", ".cxx", ".cc", ".CC", ".pcc", ".hpp" або ".H". Ім’я файлу ``-'' означає
стандартний вхід. Щоб уникнути проблем із безпекою, спеціальні файли (наприклад, спеціальні файли пристрою
та іменовані канали) завжди пропускаються, а символічні посилання за замовчуванням пропускаються (the
Параметр --allowlink слідує за символічними посиланнями).

Після списку звернень наводиться короткий підсумок результатів (використовуйте -D, щоб видалити це
інформація). Він покаже кількість звернень, проаналізованих рядків (як повідомляє wc -l) і
проаналізовані фізичні вихідні рядки коду (SLOC). Фізичний SLOC є непустим, не-
рядок коментаря. Потім він покаже кількість звернень на кожному рівні; зауважте, що буде
ніколи не бути хітом на рівні нижче мінімального рівня (1 за замовчуванням). Таким чином, "[0] 0 [1] 9"
означає, що на рівні 0 було зареєстровано 0 звернень, а на рівні 1 – 9 звернень
повідомили. Далі буде показано кількість звернень на заданому рівні або більше (тому рівень 3+
має суму кількості попадань на рівні 3, 4 і 5). Таким чином, запис "[0+] 37"
показує, що на рівні 0 або вище було 37 звернень (запис 0+ завжди буде однаковим
як число "хітів" вище). Далі показано врахування за KSLOC; це кожен із «рівень або
вище" значення, помножені на 1000 і поділені на фізичний SLOC. Якби символічні посилання були
пропущено, повідомляється їх кількість. Якщо звернення було придушено (з використанням "ігнорувати"
директиви в коментарях до вихідного коду, як описано вище), повідомляється придушене число.
Відображається мінімальний рівень ризику, який потрібно включити у звіт; за замовчуванням це 1
(використовуйте --minlevel, щоб змінити це). Резюме закінчується важливими нагадуваннями: не кожен звернення
це обов'язково вразливість безпеки, і можуть існувати інші вразливості безпеки
не повідомляється інструментом.

Flawfinder випускається під ліцензією GNU GPL версії 2 або новішої (GPLv2+).

Flawfinder працює подібно до іншої програми, ITS4, яка не є повністю відкритим вихідним кодом
програмне забезпечення (як визначено у визначенні з відкритим вихідним кодом), ні безкоштовне програмне забезпечення (як визначено в
Фонд вільного програмного забезпечення). Автор Flawfinder ніколи не бачив вихідний код ITS4.

КОРОТКИЙ Підручник


Ось короткий приклад того, як можна використовувати flawfinder. Уявіть, що у вас є C/C++
вихідний код для програми xyzzy (яку ви, можливо, написали або не написали), і
ви шукаєте вразливості безпеки (тоб ви можете виправити їх перед клієнтами
зіткнутися з вразливими місцями). Для цього підручника я припускаю, що ви використовуєте Unix-
як система, така як Linux, OpenBSD або MacOS X.

Якщо вихідний код знаходиться в підкаталозі з ім’ям xyzzy, ви, ймовірно, почнете з відкриття a
текстове вікно та використовуючи налаштування за замовчуванням у flawfinder, щоб проаналізувати програму та звітувати a
пріоритетний список потенційних уразливостей безпеки ("менше" просто гарантує, що
результати залишаються на екрані):
дефектоскоп xyzzy | менше

На цьому етапі ви побачите велику кількість записів. Кожен запис має назву файлу, a
двокрапка, номер рядка, рівень ризику в дужках (де 5 є найбільш ризикованим), категорія,
ім'я функції та опис того, чому дефектоскоп вважає рядок a
вразливість. Flawfinder зазвичай сортує за рівнем ризику, показуючи першими найбільш ризиковані елементи;
якщо у вас обмежений час, мабуть, краще почати працювати над найбільш ризикованими пунктами та
продовжуйте, поки не закінчиться час. Якщо ви хочете обмежити відображення ризиками лише за допомогою a
певний рівень ризику або вище, використовуйте параметр --minlevel. Якщо ви отримуєте
надзвичайна кількість помилкових результатів, тому що імена змінних виглядають небезпечними
імена функцій, використовуйте параметр -F, щоб видалити звіти про них. Якщо ти не розумієш
повідомлення про помилку, дивіться такі документи, як писемність Безпечний програми та цінності Linux та
Юнекс HOWTOhttp://www.dwheeler.com/secure-programs⟩ в http://www.dwheeler.com/secure-
програми, що надає більше інформації про написання безпечних програм.

Як тільки ви визначите проблему та зрозумієте її, ви зможете її виправити. Іноді ви можете
хочете повторити аналіз, оскільки номери рядків зміняться та щоб переконатися, що
що новий код ще не містить іншої уразливості.

Якщо ви визначили, що деяка лінія насправді не є проблемою, і впевнені в цьому, ви можете
вставте прямо перед або в образливому рядку коментар, що подобається
/* Flawfinder: ігнорувати */
щоб вони не відображалися у виводі.

Після того як ви це зробите, вам слід повернутися назад і знайти вхідні дані програми, щоб зробити
переконайтеся, що програма сильно фільтрує будь-які ненадійні введення. Flawfinder може
визначити багато вхідних даних програми за допомогою параметра --inputs, наприклад:
flawfinder --вводить xyzzy

Flawfinder може добре інтегруватися з текстовими редакторами та інтегрованими середовищами розробки;
дивіться приклади для отримання додаткової інформації.

У Flawfinder є багато інших опцій, у тому числі для створення HTML-версій
вихід (корисно для красивіших дисплеїв). Наступний розділ докладніше описує ці параметри
детально.

ВАРІАНТИ


У Flawfinder є ряд опцій, які можна згрупувати в параметри, які керують власними
документації, виберіть вхідні дані, виберіть, які звернення відображати, виберіть вихідний формат,
і виконувати керування списками звернень. Flawfinder підтримує стандартний синтаксис, визначений у файлі
POSIX (Випуск 7, видання 2013 р.) розділ «Умови утиліти». Він також підтримує GNU
довгі варіанти (варіанти форми з подвійним тире --варіант), як визначено в GNU C бібліотека
Посилання Мануал ``Умови синтаксису аргументів програми'' та GNU Кодування Стандарти
``Стандарти для інтерфейсів командного рядка''. Довгі аргументи параметрів можна надати як
``--name=value'' або ``-name value''. До деяких параметрів можна отримати доступ лише за допомогою параметра more
читабельні угоди про довгі опції GNU; загальні варіанти також підтримуються старими
однобуквенний варіант конвенції.

документація
--допомога

-h Показати інформацію про використання (довідку).

-- версія Показує (лише) номер версії та виходить.

--ліструли Перелічіть терміни (токени), які викликають подальшу перевірку, їх ризик дефолту
рівень і попередження за замовчуванням (включаючи ідентифікатор(и) CWE), якщо
застосовно), усі розділені табуляторами. Терміни – це в першу чергу назви потенційно-
небезпечні функції. Зауважте, що для деяких повідомляється рівень ризику та попередження
конкретний код може відрізнятися від коду за замовчуванням, залежно від терміну
використаний. Комбінуйте з -D, якщо вам не потрібен звичайний заголовок. Відхильник
версія 1.29 змінила роздільник з пробілів на табуляції та додала значення за замовчуванням
поле попередження.

вибирає вхід дані
--allowlink Дозволити використання символічних посилань; зазвичай символічні посилання пропускаються. Не треба
використовуйте цю опцію, якщо ви аналізуєте код іншими; нападники могли зробити багато
речі, які можуть викликати проблеми для аналізу, якщо цей параметр увімкнено. Для
Наприклад, зловмисник може вставити символічні посилання на такі файли, як / etc / passwd
(витік інформації про файл) або створити круговий цикл, який би
спричинити запуск flawfinder ``назавжди''. Ще одна проблема з увімкненням цього
Опція полягає в тому, що якщо на один і той же файл посилається кілька разів за допомогою символічного
посилання, він буде проаналізовано кілька разів (і, таким чином, повідомлено кілька разів).
Зауважте, що flawfinder вже містить певний захист від символічних посилань
до спеціальних типів файлів, таких як типи файлів пристрою (наприклад, /dev/zero або
C:\mystuff\com1). Зауважте, що для flawfinder версії 1.01 і раніше це було
за замовчуванням.

--followdotdir
Введіть каталоги, імена яких починаються з ".". Зазвичай такі каталоги є
ігноруються, оскільки зазвичай вони містять приватні дані контролю версій (наприклад
.git/ або .svn/), конфігурації тощо.

--nolink Проігноровано. Історично це відключалося після символічних посилань; цю поведінку
тепер є типовим.

--patch=патч-файл

-P патч-файл
Перевірте вибрані файли або каталоги, але повідомляйте лише про звернення в рядках, які
додаються або змінюються даним файлом виправлення. Файл виправлення має бути у форматі a
визнаний уніфікований формат diff (наприклад, вихід GNU "diff -u old new",
"svn diff" або "git diff [commit]"). Flawfinder припускає, що патч має
вже застосовано до файлів. Файл виправлення також може містити зміни до
невідповідні файли (вони просто ігноруватимуться). Номери рядків, наведені в
файли виправлення використовуються для визначення рядків, які були змінені
змінив файли після створення файлу виправлення, повторно згенеруйте файл виправлення
спочатку. Зверніть увагу, що імена нових файлів наведено у файлі виправлення
має точно збігатися, включаючи верхній/нижній регістр, префікс шляху та каталог
роздільник (\ проти /). Приймається лише уніфікований формат diff (GNU diff, svn
diff, а вихід git diff в порядку); якщо у вас інший формат, знову
спочатку відновіть його. Тільки звернення, які відбуваються в результуючих змінених рядках, або
безпосередньо над і під ними, повідомляється. Цей варіант має на увазі
-- ніколи не ігнорувати.

вибирає число переглядів до дисплей
--входи

-I Показувати лише функції, які отримують дані поза програмою; це також встановлює
minlevel до 0.

--minlevel=X

-m X Установіть мінімальний рівень ризику X для включення до списку звернень. Це може бути від 0 (`` ні
ризик'') до 5 (``максимальний ризик''); за замовчуванням 1.

--хибно позитивний

-F Не включайте звернення, які можуть бути хибними. Наразі це означає
що назви функцій ігноруються, якщо за ними не слід "(", і це
оголошення символьних масивів не зазначаються. Таким чином, якщо ви використовуєте змінну
скрізь іменований «доступ», це усуне посилання на це звичайне
змінний. Це не за замовчуванням, оскільки це також підвищує ймовірність
пропущені важливі удари; зокрема, назви функцій у реченнях #define та викликах
покажчики на функції будуть пропущені.

-- ніколи не ігнорувати

-n Ніколи не ігноруйте проблеми безпеки, навіть якщо в них є директива ``ignore'' в a
коментар.

--regexp=ПАТЕРН

-e ПАТЕРН
Звітувати лише про звернення з текстом, який відповідає шаблону регулярного виразу PATTERN.
Наприклад, щоб повідомляти лише про звернення, що містять текст "CWE-120", використовуйте ``--регулярний вираз
CWE-120''. Ці назви прапорів параметрів такі ж, як і grep.

вибирає Вихід сформований
--стовпці

-C Показати номер стовпця (а також ім’я файлу та номер рядка) кожного звернення;
це показано після номера рядка шляхом додавання двокрапки та номера стовпця
рядок (першим символом рядка є стовпець № 1). Це корисно
для редакторів, які можуть переходити до певних стовпців, або для інтеграції з іншими
інструменти (наприклад, для подальшої фільтрації помилкових результатів).

--контекст

-c Показати контекст, тобто рядок, що має недолік «хіт»/потенційний. За замовчуванням
рядок відображається відразу після попередження.

--лише дані

-D Не відображати верхній і нижній колонтитул. Використовуйте це разом із --quiet, щоб просто бачити
самі дані.

--html

-H Відформатуйте вихід у форматі HTML замість простого тексту.

-- негайно

-i Негайно відображайте хіти (не чекайте до кінця).

--однорядкова

-S Відображати як один рядок тексту для кожного звернення. Корисно для взаємодії
з інструментами компіляції.

--час пропуску Пропустіть інформацію про час. Це корисно для регресійних тестів flawfinder
сам по собі, щоб результат не змінювався залежно від тривалості аналізу
бере.

--спокійно

-Q Не відображайте інформацію про стан (тобто, які файли перевіряються).
аналіз триває.

Список хітів управління
--savehitlist=F
Збережіть всі отримані звернення ("список звернень") у F.

--loadhitlist=F
Завантажте список хітів із F замість аналізу вихідних програм. Попередження: робити НЕ
завантажувати списки звернень з ненадійних джерел (з міркувань безпеки).

--diffhitlist=F
Показувати лише звернення (завантажені чи проаналізовані) не у F. Імовірно, F було створено
раніше використовував --savehitlist. Попередження: робити НЕ відрізняти списки вражень від ненадійних
джерела (з міркувань безпеки). Якщо параметр --loadhitlist не надано,
це покаже звернення в проаналізованих файлах вихідного коду, яких не було
раніше збережений у F. Якщо використовується разом із --loadhitlist, це покаже
попадання в завантажений список звернень, а не в F. Алгоритм різниці полягає в тому
консервативний; звернення вважаються `` однаковими'', лише якщо вони однакові
ім'я файлу, номер рядка, положення стовпця, назва функції та рівень ризику.

ПРИКЛАДИ


Ось різні приклади того, як викликати flawfinder. Перші приклади показують різне
прості параметри командного рядка. Flawfinder розроблений для роботи з текстовими редакторами та
інтегровані середовища розробки, тому наступні розділи показують, як інтегрувати flawfinder
у vim та emacs.

простий командного рядка опції
дефектоскоп /usr/src/linux-3.16
Перевірте всі файли C/C++ в каталозі /usr/src/linux-3.16 і всі його
підкаталоги (рекурсивно), звіти про всі знайдені звернення. За замовчуванням
flawfinder пропустить символічні посилання та каталоги з іменами, які починаються з
період.

дефектоскоп --minlevel=4 .
Перевірте всі файли C/C++ у поточному каталозі та його підкаталогах
(рекурсивно); повідомляють лише про вразливості рівня 4 і вище (два найвищих
рівні ризику).

дефектоскоп --входи mydir
Перевірте всі файли C/C++ у mydir та його підкаталогах (рекурсивно), і
функції звіту, які беруть вхідні дані (щоб ви могли переконатися, що вони фільтрують
вводить належним чином).

дефектоскоп -- ніколи не ігнорувати mydir
Перевірте всі файли C/C++ у каталозі mydir та його підкаталогах,
включаючи навіть звернення, позначені для ігнорування в коментарях коду.

дефектоскоп -QD mydir
Перевірте mydir і повідомте лише фактичні результати (видаляючи заголовок і
нижній колонтитул виводу). Ця форма корисна, якщо вихід буде переданий
інші інструменти для подальшого аналізу. -C (--стовпці) і -S (--однорядковий)
Параметри також можуть бути корисними, якщо ви передаєте дані в інші інструменти.

дефектоскоп -QDSC mydir
Перегляньте mydir, повідомляючи лише фактичні результати (без верхнього або нижнього колонтитула). Кожен
звернення повідомляється в одному рядку, а номери стовпців повідомляються. Це може бути а
корисна команда, якщо ви передаєте вихідні дані з flawfinder іншим інструментам.

дефектоскоп --спокійно --html --контекст mydir > результати.html
Перевірте всі файли C/C++ у каталозі mydir та його підкаталогах, і
створити версію результатів у форматі HTML. Управління вихідним кодом
системи (такі як SourceForge і Savannah) можуть використовувати таку команду.

дефектоскоп --спокійно --savehitlist збережено.хітів *.[ch]
Перевірте всі файли .c і .h у поточному каталозі. Не повідомляйте про
статус обробки та збережіть отриманий список звернень (набір усіх звернень).
файл saved.hits.

дефектоскоп -- diffhitlist збережено.хітів *.[ch]
Перевірте всі файли .c і .h у поточному каталозі та покажіть усі звернення
ще не були у файлі saved.hits. Це можна використовувати, щоб показати лише
"Нові" вразливості в модифікованій програмі, якщо з них створено saved.hits
старіша версія програми, що аналізується.

дефектоскоп --патч recent.patch .
Перевірте поточний каталог рекурсивно, але повідомте лише рядки, які були
змінено або додано до вже застосованого файлу виправлення імені recent.patch.

дефектоскоп --регулярний вираз "CWE-120|CWE-126" src /
Перегляньте каталог SRC рекурсивно, але повідомляти лише про звернення, де CWE-120 або
Застосовується CWE-126.

Викликаючи від натиск
Текстовий редактор vim включає механізм "швидкого виправлення", який добре працює з flawfinder
щоб ви могли легко переглянути попереджувальні повідомлення та перейти до відповідного вихідного коду.

По-перше, вам потрібно викликати flawfinder, щоб створити список звернень, і є два способи
зробити це. Перший спосіб полягає в тому, щоб спочатку запустити flawfinder, а потім (використовуючи його вихід) викликати
vim. Другий спосіб — запустити (або продовжити запуск) vim, а потім викликати flawfinder
(зазвичай зсередини vim).

Для першого способу запустіть flawfinder і збережіть його вихід у якомусь FLAWFILE (скажімо, "flawfile"),
потім викличте vim, використовуючи його параметр -q, наприклад: "vim -q flawfile". Другий спосіб
(запуск flawfinder після запуску vim) можна зробити легіоном способів. Одне з них – закликати
flawfinder за допомогою команди оболонки ":!flawfinder-command > FLAWFILE", а потім за допомогою
команду ":cf FLAWFILE". Інший спосіб - зберегти команду flawfinder у вашому
makefile (як, скажімо, псевдокоманда на зразок "faw"), а потім запустіть ":make faw".

У всіх цих випадках вам потрібна команда для запуску flawfinder. Правдоподібна команда, яка
розміщує кожне звернення в окремому рядку (-S) і видаляє верхні та нижні колонтитули, які можуть заплутати
Це є:

дефектоскоп -SQD .

Тепер ви можете використовувати різні команди редагування для перегляду результатів. Відобразиться команда «:cn».
наступний удар; ":cN" відображає попередній удар, а ":cr" повертає назад до першого влучення.
":copen" відкриє вікно, щоб показати поточний список звернень, який називається "швидке виправлення
window"; ":cclose" закриє вікно швидкого виправлення. Якщо буфер у використаному вікні має
змінено, і помилка знаходиться в іншому файлі, перейти до помилки не вдасться. Ти мусиш
переконайтеся, що вікно містить буфер, який можна залишити, перш ніж спробувати перейти до a
новий файл, скажімо, збереження файлу; це запобігає випадковій втраті даних.

Викликаючи від emacs
Текстовий редактор/операційна система emacs включає "режим grep" і "режим компіляції"
механізми, які добре працюють з flawfinder, що дозволяє легко переглядати попереджувальні повідомлення, стрибати
до відповідного вихідного коду та виправте всі виявлені проблеми.

По-перше, вам потрібно викликати flawfinder, щоб створити список попереджувальних повідомлень. Ви можете використовувати
"grep mode" або "compile mode", щоб створити цей список. Часто «режим grep» більш зручний;
він залишає режим компіляції недоторканим, тому ви можете легко перекомпілювати після внесення змін
щось. Однак, якщо ви хочете перейти до точної позиції стовпця звернення, компілюйте
режим може бути зручнішим, оскільки emacs може використовувати вихідні дані стовпця flawfinder для
безпосередньо перейти до потрібного місця без спеціальної конфігурації.

Щоб скористатися режимом grep, введіть команду "Mx grep", а потім введіть потрібний дефектоскоп
команда. Для використання режиму компіляції введіть команду «Mx compile» та введіть необхідну
команда відшукання недоліків. Це команда мета-ключ, тому вам потрібно буде використовувати мета-ключ для
вашу клавіатуру (зазвичай це клавіша ESC). Як і для всіх команд emacs, вам знадобиться
натисніть RETURN після введення "grep" або "compile". Тому в багатьох системах є режим grep
викликається введенням ESC xgrep RETURN.

Потім вам потрібно ввести команду, видаляючи все, що було раніше, якщо необхідно. А
вірогідна команда:

дефектоскоп -SQDC .

Ця команда перетворює кожен звіт про звернення в один рядок, що набагато простіше для інструментів
ручка. Параметри тихого і лише даних видаляють іншу інформацію про стан, яка не потрібна
використовувати всередині emacs. Кінцевий період означає, що поточний каталог і все
нащадки шукають код C/C++ і аналізують на наявність недоліків.

Після того, як ви запустили flawfinder, ви можете використовувати emacs, щоб переглядати його результати. The
Команда Cx ` (зворотна галочка Control-x) відвідує розташування вихідного коду для наступного попередження
повідомлення. Cu Cx ` (control-u control-x backtick) перезапускається спочатку. Ти можеш
відвідайте джерело будь-якого конкретного повідомлення про помилку, перейшовши до цього повідомлення про звернення в
Буфер *compilation* або *grep* буфер і введіть ключ повернення. (Технічна примітка: в
буфер компіляції, це викликає compile-goto-error.) Ви також можете клацнути мишею-2
кнопку на повідомленні про помилку (вам не потрібно спочатку перемикатися на буфер *компіляції*).

Якщо ви хочете використовувати режим grep для переходу до певних стовпців звернення, вам знадобиться це зробити
спеціально налаштуйте emacs для цього. Для цього змініть змінну emacs "grep-regexp-
alist". Ця змінна повідомляє Emacs, як аналізувати вихід команди "grep", подібно до
змінна "compilation-error-regexp-alist", яка перераховує різні формати помилок компіляції
повідомлення

Викликаючи від Інтегрований розробка Середовища (IDE)
Для (інших) IDE зверніться до набору плагінів вашої IDE.

ЗАГАЛЬНИЙ СЛАБІСТЬ ПЕРЕЛІКУВАННЯ (CWE)


Common Weakness Enumeration (CWE) — це `` офіційний список або словник поширеного програмного забезпечення
слабкі сторони, які можуть виникнути в архітектурі, дизайні, коді або реалізації програмного забезпечення
може призвести до уразливостей безпеки, які можна використати... створених, щоб служити спільною мовою
для опису слабких місць безпеки програмного забезпечення" (http://cwe.mitre.org/about/faq.html). Для
більше інформації про CWEs, див http://cwe.mitre.org.

Flawfinder підтримує CWE та офіційно сумісний із CWE. Зазвичай описи попадання
включити відповідний ідентифікатор Common Weakness Enumeration (CWE) у дужках
відомо, що є відповідним CWE. Наприклад, згадується багато звернень, пов’язаних із буфером
CWE-120, ідентифікатор CWE для "буферної копії без перевірки розміру введення" (він же
``Класичне переповнення буфера''). У деяких випадках може бути зазначено більше одного ідентифікатора CWE.
Звіт HTML також містить гіпертекстові посилання на визначення CWE, розміщені в MITRE. в
таким чином, flawfinder розроблено, щоб відповідати вимогам CWE-Output.

Багато з CWE, про які повідомляє flawfinder, входять до списку 25 найкращих CWE/SANS за 2011 рік.
(http://cwe.mitre.org/top25/). Багато людей захочуть шукати CWE в цьому списку,
наприклад CWE-120 (класичне переповнення буфера), коли дефектошукач відображається на CWE, що більше
загальний, ніж топ-25, він перераховує його як більш загальний: більш конкретний (наприклад,
CWE-119:CWE-120), де більш загальним є фактичне відображення. Якщо flawfinder відповідає більше
конкретна позиція CWE, яка є окремим випадком позиції з топ-25, вона вказана у формі
top-25/more-specific (наприклад, CWE-362/CWE-367), де реальне відображення є більш конкретним
Запис CWE. Якщо один і той же запис відображається з кількома CWE, CWE відокремлюються комами
(це часто трапляється з CWE-20, неправильна перевірка введення). Це спрощує пошук
певні CWEs.

CWE версія 2.7 (випущена 23 червня 2014) була використана для відображення. Поточний CWE
відображення вибирають найбільш специфічний CWE, який може визначити інструмент. Теоретично більшість CWE
захисні елементи (підписи/шаблони, які шукає інструмент) теоретично можуть бути
відображено на CWE-676 (Використання потенційно небезпечної функції), але таке відображення не буде
корисний. Таким чином, більш конкретні відображення віддавали перевагу там, де їх можна було знайти. Відхильник
є інструментом лексичного аналізу; як наслідок, недоцільно бути більш конкретним, ніж
відображення, які наразі реалізовані. Це також означає, що навряд чи знадобиться багато
оновлення валюти карти; він просто не має достатньо інформації, щоб уточнити до a
детальний рівень CWE, на який зазвичай впливають зміни CWE. Список ідентифікаторів CWE
було створено автоматично за допомогою «make show-cwes», тому є впевненість, що цей список
правильно. Будь ласка, повідомте про проблеми з відображенням CWE як про помилки, якщо ви знайдете такі.

Flawfinder може не знайти вразливість, навіть якщо flawfinder охоплює один із цих CWE
слабкості. Тим не менш, flawfinder знаходить уразливості, перелічені CWE, які він охоплює,
і в багатьох випадках він не повідомлятиме рядки без цих уразливостей. Таким чином, як
Необхідний для будь-якого інструменту, який має намір бути сумісним із CWE, flawfinder має коефіцієнт хибності
позитивних результатів менше 100%, а частота помилкових негативних результатів менше 100%. Практично дефектоскоп
завжди повідомляє, коли знаходить відповідність елементу безпеки CWE (підпис/шаблон як
визначено в його базі даних), хоча певні незрозумілі конструкції можуть призвести до його збою (див. ПОМИЛКИ
нижче).

Flawfinder може звітувати про наступні CWE (це CWE, які охоплює flawfinder;
``*'' позначає тих, хто входить у список 25 найкращих CWE/SANS):

· CWE-20: неправильна перевірка введених даних

· CWE-22: Неправильне обмеження назви шляху до каталогу з обмеженим доступом (``Обхід шляху'')

· CWE-78: Неправильна нейтралізація спеціальних елементів, що використовуються в команді ОС (`` Команда ОС
Ін'єкція")*

· CWE-119: Неправильне обмеження операцій у межах буфера пам'яті (a
батьківський елемент CWE-120*, тому це показано як CWE-119:CWE-120)

· CWE-120: копіювання буфера без перевірки розміру введення (``Класичне переповнення буфера'')*

· CWE-126: Буфер перечитаний

· CWE-134: рядок неконтрольованого форматування*

· CWE-190: ціле переповнення або обертання*

· CWE-250: Виконання з непотрібними привілеями

· CWE-327: використання зламаного або ризикованого криптографічного алгоритму*

· CWE-362: одночасне виконання з використанням спільного ресурсу з неправильною синхронізацією
(``Стан гонки'')

· CWE-377: незахищений тимчасовий файл

· CWE-676: Використання потенційно небезпечної функції*

· CWE-732: неправильне призначення дозволу для критичного ресурсу*

· CWE-785: використання функції маніпулювання шляхом без буфера максимального розміру (дочірнє
CWE-120*, тому це показано як CWE-120/CWE-785)

· CWE-807: опора на ненадійні вхідні дані в рішенні щодо безпеки*

· CWE-829: включення функціональних можливостей із ненадійної сфери керування*

Ви можете вибрати певну підмножину CWE для звіту за допомогою параметра ``--regex'' (-e).
Цей параметр приймає регулярний вираз, тому ви можете вибрати кілька CWE, наприклад, ``--регулярний вираз
"CWE-120|CWE-126"''. Якщо ви виберете кілька CWE з ``|'' у командному рядку, ви це зробите
зазвичай потрібно вводити параметри в лапки (оскільки ``|'' є символом вертикальної лінії).
Flawfinder розроблено, щоб відповідати вимогам CWE-Searchable.

Якщо ваша мета — повідомити про підмножину CWE, перерахованих у файлі, цього можна досягти
на Unix-подібній системі з використанням параметра ``--regex'', або ``-e''. Файл має бути в
формат регулярного виразу. Наприклад, `` flawfinder -e $(cat file1)'' буде повідомляти лише
звернення, які відповідають шаблону в ``file1''. Якщо файл1 містив "CWE-120|CWE-126", це
повідомлятиме лише про звернення, які відповідають цим CWE.

Список усіх елементів безпеки CWE (підписи/шаблони, які шукає дефектоскоп)
можна знайти за допомогою параметра ``--listrules''. У кожному рядку вказано маркер підпису
(зазвичай це назва функції), що може призвести до звернення, рівень ризику за замовчуванням та
попередження за замовчуванням (яке включає ідентифікатор CWE за замовчуванням). Для більшості цілей це так
також достатньо, якщо ви хочете побачити, які елементи безпеки CWE співвідносяться з якими CWE або
зворотний. Наприклад, щоб побачити більшість сигнатур (назв функцій), які відображаються
CWE-327, не бачачи рівня ризику за замовчуванням або детального тексту попередження, запустіть ``flawfinder
--ліструли | grep CWE-327 | вирізати -f1''. Ви також можете побачити токени без відображення CWE
таким чином, запустивши ``fawfinder -D --listrules | grep -v CWE-''. Однак поки
--listrules перелічує всі елементи безпеки CWE, він перераховує лише відображення за замовчуванням від CWE
елементів безпеки до ідентифікаторів CWE. Він не включає уточнення, які відображають недоліки
застосовується (наприклад, шляхом вивчення параметрів функції).

Якщо вам потрібно детальне та точне зіставлення між елементами безпеки CWE та CWE
ідентифікаторів, вихідний код flawfinder (входить в дистрибутив) є найкращим місцем
для цієї інформації. Ця детальна інформація в першу чергу цікавить тих небагатьох
люди, які намагаються вдосконалити відображення CWE у flawfinder або уточнити CWE загалом.
Вихідний код документує відображення між елементами безпеки у відповідний CWE
ідентифікатори, і є одним файлом Python. Набір даних ``c_rules'' визначає більшість правил,
з посиланням на функцію, яка може вносити додаткові уточнення. Ви можете шукати
набір даних для імен функцій, щоб побачити, який CWE він генерує за замовчуванням; якщо перший параметр є
не "нормальний", то це назва методу Python, який уточнює, який може вибрати інший
CWE (залежно від додаткової інформації). І навпаки, ви можете шукати ``CWE-номер''
і знайти, які елементи безпеки (підписи або шаблони) посилаються на цей ідентифікатор CWE.
Для більшості людей це набагато більше, ніж їм потрібно; більшість людей просто хочуть відсканувати їх
вихідний код для швидкого пошуку проблем.

БЕЗПЕКА


Суть цього інструменту полягає в тому, щоб допомогти знайти вразливі місця, щоб їх можна було виправити.
Однак розробники та рецензенти повинні знати, як розробити безпечне програмне забезпечення, щоб використовувати це
інструмент, тому що інакше, a задурювати з a інструмент is як і раніше a задурювати. Моя книга на
http://www.dwheeler.com/secure-programs може допомогти.

Цей інструмент повинен бути, щонайбільше, невеликою частиною більшого процесу розробки програмного забезпечення
призначені для усунення або зменшення впливу вразливостей. Розробники та рецензенти
їм потрібно знати, як розробляти безпечне програмне забезпечення, і вони повинні застосовувати ці знання для зменшення
в першу чергу ризики вразливості.

Різні інструменти пошуку вразливостей, як правило, знаходять різні вразливості. Таким чином, ви
найкраще використовувати людський огляд і різноманітні інструменти. Цей інструмент може допомогти знайти деякі
вразливості, але далеко не всі.

Ви завжди повинні аналізувати а скопіювати вихідної програми, що аналізується, а не каталогу
які можуть бути змінені розробником, поки flawfinder виконує аналіз. Це
особливо true, якщо ви не обов’язково довіряєте розробнику аналізованої програми.
Якщо зловмисник має контроль над файлами, поки ви їх аналізуєте, зловмисник може
переміщувати файли або змінювати їх вміст, щоб запобігти виявленню проблеми безпеки
(або створити враження проблеми там, де її немає). Якщо ви турбуєтеся про
шкідливих програмістів, ви все одно повинні це зробити, тому що після аналізу вам доведеться
переконайтеся, що в кінцевому підсумку запущений код є кодом, який ви аналізували. Також не використовуйте
--allowlink у таких випадках; зловмисники можуть створювати шкідливі символічні посилання на файли
за межами їхньої області вихідного коду (наприклад / etc / passwd).

Системи керування вихідним кодом (наприклад, SourceForge і Savannah) безумовно потрапляють до цього
категорія; якщо ви обслуговуєте одну з цих систем, спочатку скопіюйте або розпакуйте файли
окремий каталог (який не може контролювати зловмисник) перед запуском flawfinder або
будь-який інший інструмент аналізу коду.

Зверніть увагу, що flawfinder відкриває лише звичайні файли, каталоги та (якщо потрібно) символічні
посилання; він ніколи не відкриватиме інші види файлів, навіть якщо на них буде створено символічне посилання.
Це протидіє зловмисникам, які вставляють файли незвичайних типів у вихідний код. Однак це
працює лише в тому випадку, якщо файлова система, що аналізується, не може бути змінена зловмисником під час
аналіз, як рекомендовано вище. Цей захист також не працює на платформах Cygwin,
на жаль.

Системи Cygwin (емуляція Unix поверх Windows) мають додаткову проблему, якщо дефектоскоп
використовується для аналізу програм, яким аналітик не може довіряти. Проблема пов'язана з дизайном
недолік у Windows (що він успадковує від MS-DOS). У Windows і MS-DOS певні імена файлів
(наприклад, ``com1'') автоматично розглядаються операційною системою як імена
периферійних пристроїв, і це справедливо, навіть якщо вказано повне ім’я шляху. Так, Windows і MS-DOS
справді спроектовані це погано. Flawfinder справляється з цим, перевіряючи, що таке файлова система
об’єкт є, а потім відкриває лише каталоги та звичайні файли (і символічні посилання, якщо ввімкнено).
На жаль, це не працює на Cygwin; принаймні на деяких версіях Cygwin на деяких
версії Windows, просто спроба визначити, чи є файл типом пристрою, може викликати
програма для зависання. Обхідним рішенням є видалення або перейменування будь-яких назв файлів, які інтерпретуються
як назви пристроїв перед виконанням аналізу. Це так звані "зарезервовані імена".
CON, PRN, AUX, CLOCK$, NUL, COM1-COM9 і LPT1-LPT9, за бажанням слід розширення
(наприклад, ``com1.txt''), у будь-якому каталозі та в будь-якому випадку (Windows не чутливий до регістру).

Do НЕ завантажувати або відрізняти списки звернень із ненадійних джерел. Вони реалізуються за допомогою
Python pickle модуль, і модуль pickle не призначений для захисту від помилкових
або зловмисно створені дані. Збережені списки звернень призначені для подальшого використання ними
користувач, який створив список звернень; в цьому контексті це обмеження не є проблемою.

Використовуйте flawfinder онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

  • 1
    Phaser
    Phaser
    Phaser — це швидке, безкоштовне та веселе відкриття
    вихідний ігровий фреймворк HTML5, який пропонує
    Взаємовідображення WebGL і Canvas
    настільні та мобільні веб-браузери. Ігри
    можна спільно...
    Завантажити Phaser
  • 2
    Двигун ВАССАЛ
    Двигун ВАССАЛ
    VASSAL — ігровий движок для створення
    електронні версії традиційної дошки
    і карткові ігри. Він забезпечує підтримку для
    рендеринг і взаємодія ігрових елементів,
    і ...
    Завантажити VASSAL Engine
  • 3
    OpenPDF - форк iText
    OpenPDF - форк iText
    OpenPDF - це бібліотека Java для створення
    і редагування файлів PDF за допомогою LGPL і
    Ліцензія з відкритим кодом MPL. OpenPDF - це
    LGPL/MPL з відкритим кодом наступник iText,
    має ...
    Завантажте OpenPDF - Fork of iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Система для автоматизації
    Географічні аналізи - це географічні
    Програмне забезпечення інформаційної системи (ГІС) с
    величезні можливості для геоданих
    обробка та ана...
    Завантажити SAGA GIS
  • 5
    Панель інструментів для Java/JTOpen
    Панель інструментів для Java/JTOpen
    IBM Toolbox для Java / JTOpen є a
    бібліотека класів Java, що підтримують
    програмування клієнт/сервер та Інтернет
    моделі до системи під керуванням OS/400,
    i5/OS, o...
    Завантажте Toolbox для Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (або D3 для документів, керованих даними)
    це бібліотека JavaScript, яка дозволяє вам
    створювати динамічні інтерактивні дані
    візуалізації у веб-браузерах. З D3
    ти ...
    Завантажити D3.js
  • Детальніше »

Команди Linux

  • 1
    abidiff
    abidiff
    abidiff - порівняння ABI файлів ELF
    abidiff порівнює двійковий файл програми
    Інтерфейси (ABI) двох спільних бібліотек
    у форматі ELF. Воно випромінює змістовне
    звіт...
    Запустіть abidiff
  • 2
    abidw
    abidw
    abidw - серіалізує ABI ELF
    файл abidw читає спільну бібліотеку в ELF
    форматує та створює представлення XML
    свого ABI до стандартного виводу. The
    випущений ...
    Запустіть abidw
  • 3
    copac2xml
    copac2xml
    bibutils - перетворення бібліографії
    комунальні послуги ...
    Запустіть copac2xml
  • 4
    копт
    копт
    copt - оптимізатор вічка SYSNOPIS:
    файл copt.. ОПИС: copt - це a
    оптимізатор вічко загального призначення. Це
    читає код зі свого стандартного вводу та
    пише...
    Біг копт
  • 5
    gather_stx_titles
    gather_stx_titles
    gather_stx_titles - заголовок збірки
    декларації з документів Stx ...
    Запустіть gather_stx_titles
  • 6
    гатлінг-бенч
    гатлінг-бенч
    bench - http benchmark ...
    Лава для бігу Гатлінга
  • Детальніше »

Ad