Архив метки: Ubuntu

Про уязвимость Elevation of Privilege - Linux Kernel "Dirty Frag" (CVE-2026-43284, CVE-2026-43500)

Про уязвимость Elevation of Privilege - Linux Kernel Dirty Frag (CVE-2026-43284, CVE-2026-43500)

Про уязвимость Elevation of Privilege - Linux Kernel "Dirty Frag" (CVE-2026-43284, CVE-2026-43500). По информации исследователя Hyunwoo Kim (@v4bel), Dirty Frag - это уязвимость (класс уязвимостей), которая позволяет локальному непривилегированному злоумышленнику получить права root на большинстве Linux-дистрибутивов путем объединения уязвимости xfrm-ESP Page-Cache Write (CVE-2026-43284) и уязвимости RxRPC Page-Cache Write (CVE-2026-43500). Эксплуатация этой цепочки позволяет злоумышленнику полностью скомпрометировать систему: получить доступ к любым файлам, отключить защиту, закрепиться в системе и использовать хост для дальнейших атак.

⚙️🛠 Описание цепочки уязвимостей, технический write-up и эксплойт были опубликованы 7 мая. Эксплуатабельность была подтверждена на актуальных дистрибутивах Ubuntu 24.04.4, RHEL 10.1, openSUSE Tumbleweed, CentOS Stream 10, AlmaLinux 10, Fedora 44. Уязвимость xfrm-ESP Page-Cache Write присутствует в ядре начиная с cac2661c53f3 (2017-01-17) и вплоть до актуальной upstream-версии, а уязвимость RxRPC Page-Cache Write присутствует в ядре начиная с 2dc334f1a63a (2023-06) и вплоть до актуальной upstream-версии. Другими словами, фактический срок присутствия этих уязвимостей в ядре составляет около 9 лет.

Информация об уязвимости и эксплойт были опубликованы до появления пакетов, устраняющих уязвимость в дистрибутивах. Как сообщает исследователь, 7 мая он отправил подробную информацию об уязвимости и эксплоите в список рассылки linux-distros. Эмбарго было установлено на 5 дней, с соглашением, что если третья сторона опубликует эксплойт в интернете в течение этого периода, эксплойт "Dirty Frag" будет опубликован в открытом доступе. В тот же день так и произошло, информация утекла в паблик, эмбарго было нарушено. 🤷‍♂️ После чего уже сам исследователь сделал full disclosure.

Аналогичная громкая уязвимость прошлой недели Elevation of Privilege - Linux Kernel "Copy Fail" (CVE-2026-31431) послужила мотивацией для начала исследования "Dirty Frag". Как сообщает исследователь, xfrm-ESP Page-Cache Write в "Dirty Frag" использует тот же sink, что и "Copy Fail". Однако "Dirty Frag" срабатывает независимо от того, доступен ли модуль algif_aead. Иными словами, даже в системах, где применён workaround для "Copy Fail" (blacklist для algif_aead), Linux остаётся уязвимым для "Dirty Frag".

Почему используется цепочка из двух уязвимостей? Как сообщает исследователь, xfrm-ESP Page-Cache Write предоставляет мощный примитив произвольной 4-байтной записи (STORE) ("powerful arbitrary 4-byte STORE primitive"), аналогичный Copy Fail, и присутствует в большинстве дистрибутивов, однако для его использования требуется привилегия на создание namespace. В Ubuntu создание непривилегированных user namespace иногда блокируется политикой AppArmor. В такой среде xfrm-ESP Page-Cache Write не может быть вызван ("triggered"). RxRPC Page-Cache Write не требует привилегии на создание namespace, однако сам модуль rxrpc.ko отсутствует в большинстве дистрибутивов. Тем не менее, в Ubuntu модуль rxrpc.ko загружается по умолчанию. Объединение двух вариантов в цепочку позволяет перекрыть слепые зоны друг друга, что даёт возможность получить root-привилегии на всех основных дистрибутивах.

По состоянию на 8 мая исправление для xfrm-ESP Page-Cache Write (CVE-2026-43284) было замержено в основную ветку ядра, а исправление для RxRPC Page-Cache Write (CVE-2026-43500) ещё нет. Следует отслеживать появление пакетов обновлений CVE-2026-43284, CVE-2026-43500 для используемых Linux-дистрибутивов и своевременно устанавливать их. В качестве workaround-а исследователь уязвимости предлагает скрипт, который запрещает загрузку модулей esp4, esp6 и rxrpc, пытается выгрузить их из ядра и очищает кэш памяти Linux:

sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; echo 3 > /proc/sys/vm/drop_caches; true"

Про уязвимость Elevation of Privilege - Linux Kernel "Copy Fail" (CVE-2026-31431)

Про уязвимость Elevation of Privilege - Linux Kernel Copy Fail (CVE-2026-31431)

Про уязвимость Elevation of Privilege - Linux Kernel "Copy Fail" (CVE-2026-31431). Уязвимость локального повышения привилегий в компоненте ядра Linux AF_ALG, которая вызвана ошибкой работы с памятью, позволяет непривилегированному пользователю поднять привилегии до root-а. Проэксплуатировав эту уязвимость, злоумышленник может полностью захватить систему: читать и изменять любые файлы, включая пароли и ключи, подменять системные бинарные файлы, отключать защитные механизмы и средства мониторинга, незаметно устанавливать бэкдоры и закрепляться в системе, скрывать следы своей активности, использовать хост как плацдарм для атак на другие сетевые активы.

⚙️🛠 1 апреля патчи, устраняющие уязвимость, были внесены в основную ветку Linux Kernel. 22 апреля был заведён CVE идентификатор уязвимости. 29 апреля эксперты компании Theori опубликовали разбор уязвимости и публичный эксплойт. Эксплуатабельность уязвимости была подтверждена на актуальных версиях популярных дистрибутивов Linux: Ubuntu, Amazon Linux, RHEL, SUSE.

👾 1 мая уязвимость была добавлена в CISA KEV, что свидетельствует об эксплуатации уязвимости в реальных атаках.

Что отличает эту уязвимость от подобных EOP/LPE в Linux?

В Linux Kernel уже были громкие уязвимости повышения привилегий. Dirty Cow требовала выигрыша в race condition. Часто приходилось делать несколько попыток, и иногда это приводило к падению системы. Dirty Pipe была привязана к конкретным версиям и требовала точных манипуляций с pipe buffer.

Но, в отличие от Dirty Cow и Dirty Pipe, как сообщают исследователи, Copy Fail - это прямолинейная логическая ошибка. Она срабатывает без гонок, повторных попыток или нестабильных временных окон, приводящих к сбоям.

🧬 Портируемость. Один и тот же скрипт эксплуатации работает на всех протестированных дистрибутивах и архитектурах, включая Ubuntu, Amazon Linux, Red Hat Enterprise Linux и SUSE Linux Enterprise. Никаких оффсетов под конкретный дистрибутив. Никакой перекомпиляции. В эксплоите нет проверок версии.

✧ Минимализм. Весь эксплойт - это короткий скрипт на Python, использующий только стандартные модули библиотеки os, socket, zlib. Требуется Python 3.10+ для os.splice. Никаких скомпилированных нагрузок, никакой установки зависимостей.

🥷 Скрытность. Операция записи выполняется, минуя обычный путь записи VFS ("ordinary VFS write path"). Повреждённая страница никогда не помечается ядром как dirty в механизме writeback. Стандартные инструменты контроля целостности файлов, сравнивающие контрольные суммы на диске, не заметят эксплуатацию, потому что файл на диске не изменяется. Повреждается только кэш страниц в памяти.

📦 Межконтейнерное воздействие. Кэш страниц разделяется всеми процессами в системе, в том числе между контейнерами. Copy Fail - это не просто локальное повышение привилегий. Это примитив выхода из контейнера и вектор компрометации узла Kubernetes.

Как устранить уязвимость?

Для устранения уязвимости пользователям необходимо обновиться до версий ядра Linux 6.18.22, 6.19.12 и 7.0. Ядро можно собрать самостоятельно или дождаться, когда обновления пакетов ядра выпустит вендор вашего Linux-дистрибутива. По состоянию на 4 мая вышли обновления для Ubuntu, Debian, RHEL, Fedora, SUSE, CloudLinux, Arch Linux, ROSA Linux.

В качестве workaround-а исследователи предлагают заблокировать создание сокетов AF_ALG:

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

Новый выпуск "В тренде VM": горячие уязвимости ноября, управление уязвимостями без бюджета и кто должен искать патчи

Новый выпуск "В тренде VM": горячие уязвимости ноября, управление уязвимостями без бюджета и кто должен искать патчи. Конкурс на лучший вопрос по теме VM-а продолжается. 😉🎁

📹 Ролик на VK Видео, RUTUBE, YouTube
🗞 Пост на Хабре
🗒 Дайджест на сайте PT

Содержание:

🔻 00:33 Уязвимость раскрытия хеша NTLMv2 в Windows (CVE-2024-43451)
🔻 01:20 Уязвимость повышения привилегий в Windows Task Scheduler (CVE-2024-49039)
🔻 02:20 Уязвимость подмены отправителя в Microsoft Exchange (CVE-2024-49040)
🔻 03:07 Уязвимости повышения привилегий в утилите needrestart (CVE-2024-48990)
🔻 04:15 Уязвимость удаленного выполнения кода в FortiManager (CVE-2024-47575)
🔻 05:23 Уязвимость обхода аутентификации в веб-интерфейсе PAN-OS (CVE-2024-0012)
🔻 06:36 Уязвимость повышения привилегий в PAN-OS (CVE-2024-9474)
🔻 07:46 Уязвимость обхода каталога в межсетевых экранах Zyxel (CVE-2024-11667)
🔻 08:41 Можно ли заниматься Управлением Уязвимостями без бюджета?
🔻 09:57 Кто должен искать патчи для устранения уязвимостей?
🔻 10:55 Полный дайджест с трендовыми уязвимостями
🔻 11:22 Бэкстейдж

Про уязвимость Elevation of Privilege - needrestart (CVE-2024-48990)

Про уязвимость Elevation of Privilege - needrestart (CVE-2024-48990)

Про уязвимость Elevation of Privilege - needrestart (CVE-2024-48990). 19 ноября Qualys выпустили бюллетень безопасности про 5 уязвимостей повышения привилегий в утилите needrestart (CVE-2024-48990, CVE-2024-48991, CVE-2024-48992, CVE-2024-10224 и CVE-2024-11003), используемой по умолчанию в Ubuntu Server, начиная с версии 21.04.

Утилита needrestart запускается автоматически после операций пакетного менеджера APT, таких как установка, обновление или удаление пакетов. Она определяет требуется ли перезагрузка для системы или ее служб. Таким образом гарантируется, что службы используют последние версии библиотек, без снижения аптайма.

Все 5 уязвимостей позволяют обычному пользователю стать root-ом. Для всех у Qualys есть приватные эксплоиты. Публичный эксплоит есть пока только для одной, связанной с переменной окружения PYTHONPATH. ⚡️ Он доступен на Github с 20 ноября.

Обновляйте needrestart до версии 3.8 или отключайте "interpreter scanning" в needrestart.conf.

Безопасная чистая ОС для массового использования

Безопасная чистая ОС для массового использования

Безопасная чистая ОС для массового использования. По итогам разговоров с родными и близкими я пришёл к выводу, что у многих людей есть потребность в безопасном доступе к важным онлайн-сервисам: госуслугам, онлайн-банкам, финансовым сервисам и т.п. Профилактические awareness-рассказы про кейсы с уводом денег, набором кредитов, попытки продать квартиру и прочие шалости злоумышленников, в целом, работают. 👍 При этом выполнять элементарные нормы кибергигиены (не ставить на десктоп всякую пакость непонятно кем написанную и выложенную, не ставить варез, своевременно обновлять ОС и прикладное ПО, по возможности не использовать Windows, которая в приоритете у малварщиков, и т.д.) они не готовы. 🤷‍♂️ Удобство и сформировавшиеся пользовательские привычки перевешивают любые потенциальные риски. Меня, как ИБ-шника и VM-щика, такое положение дел немало удручает, но это факт. 😑 Уговоры тут не работают. Тем более, что объективно подавляющее большинство реальных кейсов атак на физических лиц сейчас связаны с социалкой, а не с непосредственной компрометацией устройств. В общем, плетью обуха не перешибешь. Только зря разругаетесь и выставите себя как неадекватного параноика. 😵‍💫

И что делать в таком случае? Как обезопасить близких?

🔹 Хороший вариант - рекомендовать использовать отдельное устройство для доступа к важным ресурсам. В этом случае можно вляпаться только если будет скомпрометирован домашний роутер. Но заводить отдельное устройство может быть накладно и не факт, что получится поддерживать его чистоту и безопасность.

🔹 Гораздо более доступный вариант - загрузочная live usb флешка.

➡️ Предлагаемый алгоритм: если нужно получить доступ к критичному онлайн-сервису - загрузись с флешки (подробный мануал предоставляется), открой браузер, сделай свои дела, выключи браузер и компьютер.

Тут, конечно, помимо скомпрометированного роутера можно нарваться и на скомпрометированный UEFI, но всё же атаки на live usb это пока далеко не мэйнстрим. Поэтому, имхо, использование live usb в качестве меры безопасности стоит популяризировать.

Проще всего создать live usb через Startup Disk Creator в Ubuntu (пакет ). Процесс подготовки live usb тривиальный. Нужно только выбрать скачанный iso-файл дистрибутива (я предпочитаю Xubuntu Desktop) и флешку. Установка быстрая и полностью автоматическая.

Далее пример мануала для использования live usb, который можно выдать близким. Тут всё максимально упрощено, с расчётом на тех, кто Linux-ом никогда не пользовался и разбираться с ним не хочет и не будет.

---

Как пользоваться загрузочной флешкой с чистой операционной системой для доступа к онлайн-банку, Госуслугам, nalog.ru и т.д.

1. Выключить компьютер
2. Вставить флешку в USB порт
3. Включить компьютер и зажать кнопку F12 [процесс выбора boot device может отличаться, проверьте на конкретном устройстве]
4. Выбрать "boot device" UEFI: Sony Storage Media… [замените на свою флешку]
5. Нажать Enter (Try or Install Ubuntu)
6. Должна показаться иконка xubuntu. Подождать окончания загрузки примерно 3 минуты.
7. После того как загрузится рабочий стол кликнуть на синюю иконку с белой мышкой в верхнем левом углу экрана.
8. Выбрать опцию Web Browser. Подождать 3 минуты до загрузки браузера.
9. Браузер можно открыть на полный экран, нажав на иконку "+" в правом верхнем углу окна браузера.
10. В поле ввода адреса набрать "online.sberbank.ru", далее работать с интерфейсом Сбербанка. (Раскладка будет только английская! Для добавления русской, нужно будет выполнить ещё несколько шагов) [Описать кейсы, которые нужны пользователю]
11. После завершения работы закрыть окно браузера иконкой "x" в правом верхнем углу окна браузера.
12. Нажать на синюю иконку с белой мышкой в верхнем левом углу экрана. Выбрать оранжевую иконку с белой стрелкой. Затем выбрать Красную иконку "Shut Down".
13. Если в течение минуты компьютер не выключается, нажать кнопку "ESC", должен появиться текст ошибки на экране, затем нажать Enter. Компьютер должен выключиться.

До End of Life CentOS 7 осталось 2 недели

До End of Life CentOS 7 осталось 2 недели

До End of Life CentOS 7 осталось 2 недели. Самое время проверить не осталось ли где-то в инфраструктуре хостов с этой операционной системой. Куда мигрировать с CentOS 7 не особо понятно. RedHat превратили CentOS в нестабильный дистрибутив CentOS Stream и начали бороться с традиционными альтернативами в виде Alma и Rocky. Можно, конечно, посмотреть в сторону SberLinux, RedOS и Роса «Кобальт», но, имхо, будущее RPM-based дистрибутивов совместимых с RHEL в России достаточно туманно и стоит целиться скорее в Астру или Альт. Судя по статистике, в мире в основном бегут на Ubuntu.

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible. Как и обещал, делюсь впечатлениями от хакатона. Первым заданием у меня была автоматизации установки софта из TAR-архива на Debian 12 с помощью Ansible. Раньше я с Ansible толком не работал, поэтому появился повод немного разобраться.

Ansible - система управления конфигурациями, написанная на Python. Главное отличие Ansible от аналогов - не нужна установка агента или клиента на управляемые хосты. Обычно используется для управления Linux-хостами, но Windows также поддерживается. Взаимодействие происходит по модели push: сам Ansible запускается на "центральном" управляющем хосте, ходит на управляемые хосты и что-то делает. На управляемом хосте должен быть установлен Python версии 2.4 и выше, соединение выполняется по SSH или WinRM.

Управляющим хостом для Ansible будет мой десктоп на Ubuntu 23.10, а управляемым хостом будет виртуалка в VirtualBox.

Я завёл виртуалку в VirtualBox с Debian 12, добавил интерфейс Host-only adapter, чтобы можно было подключаться к ней по SSH. Я проверил, что подключение работает с помощью:

$ ssh vmuser@192.168.56.104

Для работы Ansible должна быть настроена аутентификация по ключам. Я сгенерировал ключ с помощью:

$ ssh-keygen -t ed25519 -C "alexander@avleonov.com"

Затем я закинул его на target-host:

$ ssh-copy-id vmuser@192.168.56.104

После этого команда уже не требовала пароль.

На десктоп с Ubuntu 23.10 я поставил Ansible при помощи утилиты pipx

$ sudo apt-get install pipx
$ pipx install --include-deps ansible

Обновлять можно с помощью:

$ pipx upgrade --include-injected ansible

Проверить версию ansible можно с помощью:

$ ansible --version
ansible [core 2.16.7]
...

Далее описываю управляемый хост (виртуалку) в yaml файле:

$ cat hosts.yaml 
myhosts:
hosts:
debian12:
ansible_host: 192.168.56.104

Валидирую файл hosts.yaml:

$ ansible-inventory -i hosts.yaml --list
{
"_meta": {
"hostvars": {
"debian12": {
"ansible_host": "192.168.56.104"
}
}
},
"all": {
"children": [
"ungrouped",
"myhosts"
]
},
"myhosts": {
"hosts": [
"debian12"
]
}
}

Проверяю соединение:

$ ansible myhosts -m ping -i hosts.yaml -u vmuser
debian12 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}

Всё работает, связь есть. Теперь можно попробовать выполнить какие-то команды на хосте с помощью Ansible. Делаю тестовый плейбук для вывода hostname и версии дистрибутива:

- name: Print Hostname and OS Version
hosts: all
tasks:
- name: Get Hostname
command: hostname
register: hostname_output

- name: Get OS Version
ansible.builtin.shell: lsb_release -a | grep "Description:" | awk -F"\t" '{print $2}'
register: os_version_output

- name: Display Outputs
debug:
msg: "Hostname is {{ hostname_output.stdout }} and OS Version is {{ os_version_output.stdout }}"

Запускаю его:

$ ansible-playbook -i hosts.yaml -u 'vmuser' playbook.yaml
...

TASK [Display Outputs] *********************************************************
ok: [debian12] => {
"msg": "Hostname is debian and OS Version is Debian GNU/Linux 12 (bookworm)"
}

Работает! В следующей части рассмотрим как описать в плейбуке установку софта из TAR-архива.