Please enable JavaScript.
Coggle requires JavaScript to display documents.
Надёжность ПО и уязвимости - Coggle Diagram
Надёжность ПО и уязвимости
Классификация ошибок по критерии форма проявления
Ошибки управления
Ошибки в выполнении арифметических операций и стандартных функций
Ошибки переполнения
Ошибки ввода-вывода
Ошибки, приводящие к прекращению решения функциональных задач либо к искажениям результатов, выдаваемых управляющим алгоритмом
Уязвимости ПО
Переполнение буфера (Buffer Overflow)
Меры защиты
Stack Canaries
ASLR (Address Space Layout Randomization)
DEP (Data Execution Prevention)
SQL-инъекция
Виды атак с помощью SQL-инъекции
Извлечение данных: Чтение базовых или конфиденциальных данных.
бход аутентификации: Вход без правильного пароля.
Изменение данных: Вставка, обновление или удаление записей.
Получение доступа к серверу: Через выполненные команды ОС (если база данных поддерживает).
Удаление базы данных: Команды типа DROP TABLE.
Межсайтовый скриптинг (Cross-Site Scripting, XSS)
Виды XSS
Stored XSS (хранимый)
Reflected XSS (отражённый)
DOM-based XSS
Межсайтовая подделка запросов (Cross-Site Request Forgery, CSRF)
Защита от CSRF
Использование CSRF-токенов
Проверка HTTP-заголовка Referer или Origin
Методы HTTP
SameSite Cookies
Двойное подтверждение
Ошибки аутентификации и управления сессией
Виды ошибок
Ненадежное хранение или передача учетных данных
Использование предсказуемых или фиксированных сессий
Недостаточная защита Cookies сессии
Повторное использование или переиспользование сессионных идентификаторов
Отсутствие механизма выхода или автоматической деактивации сессий
Отсутствие проверок "Многофакторной аутентификации" (МФА)
Неправильное управление правами доступа
Виды уязвимостей, связанных с управлением правами доступа
Вертикальное расширение прав (Privilege Escalation — вертикальное)
Горизонтальное расширение прав
Отсутствие проверки прав на уровне сервера
Недостаточное разграничение ролей
Неправильная настройка доступа к API, ресурсам или файлам
Ошибки в ПО
Основные отличия
программа не требует ремонта и профилактического обслуживания
программные ошибки есть результат создания и корректировки ПО. Они могут не проявляться, если входные данные не инициируют выполнение тех участков программ, в которых содержатся ошибки.
программа физически не стареет и не изнашивается, возможно только моральное старение программы
Уникальность каждой программы
программа никогда не дает ухудшения характеристик без внешнего вмешательства
процесс отладки программы никогда не повторяется
любые две копии программы абсолютно идентичны.
Классификация ошибок по форме представления
Синтаксические ошибки
Нарушение правил языка
программирования.
Ошибки компиляции (опечатки,
пропущенные скобки, неверные
ключевые слова).
Семантические ошибки
Корректный синтаксис, но неверный
смысл.
Неправильная логика алгоритма.
Использование переменных не по
назначению.
Логические ошибки
Программа работает, но результат
неверный.
Ошибки условий, циклов, неверные
формулы.
Алгоритмические ошибки
Неправильный выбор алгоритма.
Избыточная сложность,
неэффективность.
Возможные зацикливания или тупики.
Ошибки интерфейса
Некорректный ввод/вывод данных.
Непонятные сообщения для
пользователя.
Ошибки взаимодействия между
модулями.
Ошибки данных
Неправильные значения по
умолчанию.
Некорректная инициализация
переменных.
Ошибки в структурах данных.
Ошибки времени исполнения
Деление на ноль.
Переполнение памяти/стека.
Нарушение доступа к памяти.
Невалидные указатели.
Ошибка интеграции
Несовместимость модулей.
Конфликты версий библиотек.
Ошибки при взаимодействии со
сторонними сервисами.
Дестабилизирующие факторы и угрозы
Внутренние факторы
Ошибки проектирования (неоптимальная
архитектура, узкие места).
Программные дефекты (логические
ошибки, баги, <<висячие>> указатели,
переполнение буфера).
Недостаточное тестирование (неполное
покрытие, отсутствие нагрузочных тестов).
Сложность системы (избыточные
зависимости, высокая связанность).
Человеческий фактор (невнимательность,
усталость недостаточная квалификация).
Несогласованность версий (библиотеки,
модули, несовместимость API).
Внешние факторы
Кибератаки (SQL-инъекции, XSS, DoS/DDoS,
эксплойты уязвимостей).
Сбои оборудования (отказ диска, перегрев,
проблемы сети).
Ошибки инфраструктуры (сбой в облаке,
недоступность сервисов).
Природные факторы (перебои
электроснабжения, катастрофы).
Изменение внешних требований (новые
стандарты безопасности, законы).
Организационные факторы
Слабое управление конфигурацией (хаос
в версиях, отсутствие CI/CD).
Недостаточная документация (потеря
знаний при смене команды).
Игнорирование обновлений и патчей
(оставленные уязвимости).
Давление сроков -> поспешные решения,
пропуск тестов.
Классификация ошибок по этапу разработки
Ошибки в описании спецификаций.
Ошибки в разработке архитектуры и проекта ПО
Ошибки в описании целей.
Ошибки в кодировании программ.
Ошибки в постановке задачи и формулировке требований.
Ошибки в спецификации языков программирования.
Ошибки в спецификации общего ПО.
Ошибки пользователя ПО.
Ошибки при интеграции аппаратуры и ПО.
Ошибки при модификации ПО.
Ошибки при документировании ПО.