Уязвимости и угрозы [335.1]

Рейтинг: 71.7% · 16 голосов
Специализация LPIC-3 303 (v3.0): криптография и PKI/X.509, шифрование ФС (LUKS/TPM2/Clevis), DNSSEC, hardening хоста, IDS, контроль доступа (SELinux/AppArmor), сетевая безопасность, nftables, VPN, пентест.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Уязвимости и угрозы [335.1]

Сообщение Sergey_Sysadmin »

Оглавление курса (16)
  1. Введение в LPIC-3 303: безопасность Linux
  2. X.509 и инфраструктура открытых ключей [331.1]
  3. X.509 для шифрования, подписи и аутентификации [331.2]
  4. Шифрование файловых систем [331.3]
  5. DNS и криптография [331.4]
  6. Усиление защиты хоста [332.1]
  7. Урок 6. Обнаружение вторжений на хосте: AIDE, auditd, сканеры руткитов и OpenSCAP
  8. Контроль ресурсов [332.3]
  9. Дискреционный контроль доступа: ACL и атрибуты [333.1]
  10. Мандатный контроль доступа: SELinux и AppArmor [333.2]
  11. Усиление сетевой защиты [334.1]
  12. Сетевое обнаружение вторжений
  13. Фильтрация пакетов [334.3]
  14. Виртуальные частные сети (VPN) [334.4]
  15. Уязвимости и угрозы [335.1] (вы здесь)
  16. Основы тестирования на проникновение [335.2]
Урок 14. Уязвимости и угрозы [335.1]

До этого урока мы закрывали конкретные дыры: шифровали ФС, настраивали SELinux, фильтровали пакеты. Теперь подымаемся на уровень выше и учимся думать как защищающаяся сторона в целом: какие бывают классы уязвимостей, как мир их нумерует (CVE) и оценивает по серьёзности (CVSS), откуда приходит беда через чужой код (цепочка поставок) и как не утонуть в потоке заплаток. Задача администратора тут - не закрыть всё подряд (это невозможно), а правильно расставить приоритеты: чинить сначала то, что реально опасно именно для твоей системы.

Изображение

Как это работает

Уязвимость - это дефект, который позволяет нарушить конфиденциальность, целостность или доступность. Классы повторяются из года в год, и проект OWASP их каталогизирует (Top 10 для веба, ASVS как чеклист). Инъекции (SQL, команды ОС, LDAP) возникают, когда непроверенные данные пользователя попадают в интерпретатор как часть кода - лечится параметризацией и валидацией, а не фильтрацией кавычек. Переполнение буфера - классика для C/C++: запись за границу массива затирает соседнюю память вплоть до адреса возврата, отсюда выполнение чужого кода. Современные митигации (ASLR, стек-канарейки, NX-бит, FORTIFY_SOURCE, CFI) усложняют эксплуатацию, но не убирают баг. Неправильная конфигурация - самый массовый класс в 2026: открытый наружу сервис, дефолтный пароль, лишний модуль, директория с листингом. Тут уязвим не код, а руки.

Чтобы говорить об одной дыре одинаково, ей дают идентификатор CVE - запись в общемировом каталоге вида CVE-2025-12345 (год плюс номер). CVE присваивают организации-CNA (вендоры, MITRE, CERT), а обогащают описанием и оценкой базы NVD и аналоги. Серьёзность считают по CVSS. Актуальная версия - CVSS 4.0 (вышла в конце 2023, в 2026 это основной стандарт, рядом ещё встречается 3.1). CVSS даёт число от 0.0 до 10.0 и вектор из метрик: группа Base (врождённые свойства: вектор атаки, сложность, нужные привилегии, влияние на CIA), плюс группы Threat, Environmental и Supplemental - последние позволяют пересчитать балл под твою среду.

Ключевая мысль урока: голый CVSS Base - это не приоритет, а только потенциал. Дыра с баллом 9.8 в пакете, который у тебя не установлен или закрыт фаерволом, опаснее на бумаге, чем семёрка в сервисе, торчащем в интернет под нагрузкой. Поэтому к CVSS добавляют контекст: есть ли публичный эксплойт (метрики Threat, базы вроде KEV - известных эксплуатируемых уязвимостей), и принимают решение по модели SSVC - дерево, которое отвечает не числом, а действием: чинить сейчас, по плану или игнорировать. NVD как раз с июня 2026 публикует SSVC рядом с CVSS.

Отдельный пласт - угрозы цепочки поставок. Ты ставишь не только то, что написал сам: это apt и dnf пакеты, контейнерные образы, npm/pip/composer зависимости, обновления вендоров. Если злоумышленник подменит зависимость или прошьёт бэкдор в обновление (история xz/liblzma 2024 года - учебный пример), скомпрометированным окажешься ты, хотя свой код был чист. Защита - проверка подписей пакетов, фиксация версий и хешей (lock-файлы), SBOM (опись состава ПО) и сканеры зависимостей.

Патч-менеджмент превращает всё это в процесс: инвентаризация, отслеживание CVE по своему софту, тест заплатки, выкатка, проверка. Моделирование угроз (например STRIDE) на этапе проектирования помогает увидеть, кто и как может атаковать, ещё до релиза. А приоритизация рисков (риск = вероятность на ущерб) определяет, что в очереди первое.

Команды и примеры

Что из установленного имеет известные уязвимости. Debian/Ubuntu:

Код: Выделить всё

# индекс уязвимостей Debian-пакетов
apt install debsecan
debsecan --suite trixie --format detail
# что подлежит обновлению вообще
apt list --upgradable
RHEL/Fedora - встроенный плагин dnf умеет фильтровать по серьёзности и по CVE:

Код: Выделить всё

dnf updateinfo list security        # доступные security-обновления
dnf updateinfo info CVE-2025-12345  # детали по конкретной CVE
dnf upgrade --security              # накатить только security-фиксы
dnf upgrade --cve=CVE-2025-12345    # закрыть конкретную дыру
Проверить подпись пакета (целостность цепочки поставок):

Код: Выделить всё

# RHEL/Fedora: ключи и подпись rpm
rpm -qa gpg-pubkey
rpm --checksig paket.rpm
# Debian/Ubuntu: репозитории подписаны, ключи в keyring
apt-key list 2>/dev/null; ls /etc/apt/keyrings/ /usr/share/keyrings/
Разобрать вектор CVSS вручную полезно для понимания. Вектор v4.0 выглядит так:

Код: Выделить всё

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H
# AV:N  - атака по сети (хуже всего)
# AC:L  - низкая сложность
# PR:N  - привилегии не нужны
# UI:N  - участие жертвы не нужно
# VC/VI/VA:H - высокое влияние на конфид./целостность/доступность
Сканер инфраструктуры и сканер зависимостей/образов:

Код: Выделить всё

# OpenVAS/Greenbone - сетевой сканер уязвимостей
gvm-cli ...        # запуск задачи сканирования по целям
# Trivy - дыры в образах, ФС и зависимостях (работает с docker и podman)
trivy image registry.example/app:1.4
trivy fs --scanners vuln,misconfig ./project
Частые грабли
  • Чинят по баллу CVSS Base, игнорируя контекст. Балл 9.8 в неустановленном или недоступном снаружи компоненте не должен опережать семёрку в боевом сервисе. Смотри эксплуатируемость (KEV) и SSVC.
  • Путают CVSS 3.1 и 4.0: в 4.0 другой набор метрик (появились AT, разделены влияние на систему и на нижестоящие), баллы между версиями напрямую не сравнимы.
  • Думают, что фильтрация спецсимволов спасает от инъекций. Спасает параметризация запросов и разделение кода и данных, а блок-листы обходятся.
  • Накатывают апдейты без теста и окна отката - сломанная зависимость кладёт прод не хуже атаки. Заплатка тоже из цепочки поставок и тоже бывает с дефектом.
  • Сканируют, но не закрывают петлю: отчёт OpenVAS/Trivy без процесса устранения и повторной проверки - это бумага, а не безопасность.
  • Забывают про транзитивные зависимости: уязвимость часто не в твоём npm/pip-пакете, а в том, что он тянет глубже. Без SBOM и lock-файлов этого не видно.
Мини-лаба
  • На своём стенде определи дистрибутив и собери список доступных security-обновлений: dnf updateinfo list security (RHEL/Fedora) или debsecan/apt list --upgradable (Debian/Ubuntu).
  • Выбери одну CVE из вывода и прочитай её карточку: dnf updateinfo info CVE-... либо найди запись на NVD. Запиши вектор CVSS и базовый балл.
  • Разбери вектор по метрикам Base: откуда идёт атака, нужны ли привилегии и участие пользователя. Прикинь, эксплуатируема ли она в твоей конфигурации.
  • Прими решение в стиле SSVC: чинить сейчас, по плану или отложить - и обоснуй контекстом (доступность сервиса, наличие эксплойта).
  • Установи Trivy и просканируй любой контейнерный образ: trivy image alpine:latest. Найди в отчёте уязвимость в транзитивной зависимости.
  • Проверь целостность цепочки: rpm --checksig на пакете или просмотр ключей в /etc/apt/keyrings. Убедись, что репозитории подписаны.
  • Закрой петлю: накати security-фикс (dnf upgrade --security или apt) и повтори шаг 1, убедившись, что выбранная CVE ушла из списка.
Контрольные вопросы
  • Чем инъекция принципиально отличается от переполнения буфера по механизму и по способу защиты?
  • Что обозначают и кто присваивает идентификатор CVE, и чем NVD отличается от CNA?
  • Какие группы метрик есть в CVSS 4.0 и почему Base-балл сам по себе не является приоритетом починки?
  • Что такое атака на цепочку поставок и какими средствами (SBOM, подписи, lock-файлы) её риск снижают?
  • Чем подход SSVC отличается от ранжирования строго по числу CVSS?
  • Какие шаги входят в полный цикл патч-менеджмента и зачем нужно окно отката?
👍4 ❤️4 🔥 😄 🤔4
Аватара пользователя
dana12
Сообщения: 1
Зарегистрирован: 20 май 2026, 22:06

Re: Уязвимости и угрозы [335.1]

Сообщение dana12 »

А SSVC реально кто-то применяет руками или это пока теория? У меня сотни CVE в неделю на парке серверов, дерево решений по каждой - это же утонуть.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
cbm9800
Сообщения: 1
Зарегистрирован: 31 май 2026, 04:46

Re: Уязвимости и угрозы [335.1]

Сообщение cbm9800 »

Поймал на проде: trivy показал critical в образе, а дыра была в либе, которую тянул базовый alpine, мой код вообще ни при чём. Без lock и SBOM фиг бы нашёл источник.
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Виртуальные частные сети (VPN) [334.4]
Следующая глава →
Основы тестирования на проникновение [335.2]

Все главы курса «LPIC-3 303: безопасность Linux»

Поделиться темой: ✈ Telegram VK
  • Похожие темы

Вернуться в «LPIC-3 303: безопасность Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость