Классификация методов поиска уязвимостей

Тема в разделе "WASM.RESEARCH", создана пользователем binomus, 3 авг 2008.

  1. binomus

    binomus New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2008
    Сообщения:
    2
    Пытаюсь упорядочить методы поиска уязвимостей.
    Под уязвимостью понимается ошибка программиста в реализации ПО, которая может быть использована для нарушения свойств безопасности компьютерной системы.

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

    Белый ящик:
    1. Анализ исходников (Code Review). Состоит из: Pattern matching, Lexical analysis (Flawfinder, RATS and ITS4), Parsing and AST analysis, Type qualifiers (CQual), Data-flow analysis (SPLINT), Taint Analysis (Dytan),
    2. Property-Based Testing. Из формальных методов. Язык TASPEC.
    Активные: с использоваием constraint solver создание входов для нарушения свойства.
    Пассивные: Purify, Valgrind, AppVerifier, TruScan
    3. Source Code Fault Injection. Тут же Fault Propagation Analysis
    4. Pedigree Analysis
    5. Dynamic Analysis of Source Code
    Что это?
    Есть в "The Concept of Dynamic Analysis" T. Ball describes two analyses:
    Coverage concept analysis
    Frequency spectrum analysis.

    Серый ящик:
    1. SAGE - fuzzer + constraint solver для увеличения покрытия
    2. bugscum - поиск потенциально опасных функций в дизассемблированном листинге

    Черный ящик:
    1. Software Penetration Testing
    2. Fault Injection
    Environment Fault Injection. Modifies environment (memory, libraries, etc.) to produce faults
    Input-based Fault Injection. Изменение корректного ввода.
    3. Fuzzing. Рандомные данные на вход

    Насколько такая структура корректна и что можно еще добавить?