Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cifswitch-check — Скрипт обнаружения для CIFSwitch - CVE-2026-46243 | Kitploit
Инструменты/GitHubGitHub/liamromanis101/cifswitch-check
Повышение привилегийСканеры уязвимостейБезопасность контейнеровАнализ уязвимостейЭксплуатацияСкриптинг и автоматизацияАудит конфигурацииБезопасность облачных средDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

Скрипт обнаружения для CIFSwitch - CVE-2026-46243

2 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

cifswitch-check

Скрипт для оболочки, проверяющий, подвержена ли система Linux уязвимости CIFSwitch (CVE-2026-46243) — локальной уязвимости повышения привилегий в клиенте CIFS/SMB ядра Linux, присутствующей с 2007 года.

Работает на физических хостах, виртуальных машинах и внутри контейнеров. Предназначен для прямого использования в конвейерах CI/CD.


Описание

CIFSwitch была раскрыта 28 мая 2026 года исследователем безопасности Asim Manizada. Уязвимость объединяет отсутствие проверки входных данных в типе ключа cifs.spnego ядра с привилегированной программой-помощником cifs.upcall из пакета cifs-utils.

Непривилегированный локальный пользователь может вызвать request_key() с поддельным описанием ключа, что заставит ядро запустить cifs.upcall от root с контролируемыми атакующим полями. При upcall_target=app помощник входит в пространство имён монтирования атакующего и выполняет поиск getpwuid() перед понижением привилегий — загружая управляемый атакующим модуль NSS и выполняя произвольный код от root.

Необходимые условия для эксплуатации:

  • Уязвимое ядро (присутствует с 2007 года, исправлено в 6.18.22 / 6.19.12 / 7.0+)
  • Установлен cifs-utils >= 6.14
  • Включены непривилегированные пользовательские пространства имён (по умолчанию в большинстве дистрибутивов)
  • Отсутствуют принудительные политики SELinux/AppArmor, блокирующие данный путь

Публичный PoC доступен на manizada/CIFSwitch.


Что проверяется


Использование

root@kitploit:~
# Клонировать или скачать
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# Интерактивный запуск (цветной вывод)
./cifswitch-check.sh

# Тихий режим — только FAIL и итоговый вердикт
./cifswitch-check.sh --quiet

# Вывод в JSON — для конвейеров CI/CD, сбора в SIEM
./cifswitch-check.sh --ci

# Без цвета (обычный текст, полезно для логирования)
./cifswitch-check.sh --no-colour

# Этот скрипт также доступен как SKILL от Agensi:
https://www.agensi.io/skills/cve-2026-46243-cifswitch

Коды завершения

КодЗначение
0Не уязвим, или все критические меры смягчения применены
1Уязвим — одна или несколько проверок FAIL
2Ошибка скрипта

Пример вывода

Интерактивный (удобочитаемый)

root@kitploit:~
  CIFSwitch Vulnerability Check  (CVE-2026-46243)
  Kernel: 6.18.5   Host: myserver   Container: false
────────────────────────────────────────────────────────────────────────
[FAIL] KERNEL_VERSION         Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel.
[PASS] CIFS_UTILS             cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken
[PASS] CIFS_MODULE            CIFS kernel module not present on this system
[FAIL] USERNS                 user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:
[PASS] REQUESTKEY_RULE        No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked
[WARN] MAC_POLICY             No enforcing MAC policy (SELinux/AppArmor) detected
[ -- ] FIX_SYMBOL             CIFS module not loaded — symbol check skipped
────────────────────────────────────────────────────────────────────────

  VERDICT: VULNERABLE — remediation required
  Reference: https://heyitsas.im/posts/cifswitch/

JSON (--ci)

root@kitploit:~
{
  "scanner": "cifswitch-check",
  "cve": "CVE-2026-46243",
  "timestamp": "2026-06-03T00:10:08Z",
  "hostname": "myserver",
  "kernel": "6.18.5",
  "in_container": false,
  "overall": "FAIL",
  "checks": [
    {"check": "KERNEL_VERSION", "status": "FAIL", "detail": "Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel."},
    {"check": "CIFS_UTILS",     "status": "PASS", "detail": "cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken"},
    {"check": "CIFS_MODULE",    "status": "PASS", "detail": "CIFS kernel module not present on this system"},
    {"check": "USERNS",         "status": "FAIL", "detail": "user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:"},
    {"check": "REQUESTKEY_RULE","status": "PASS", "detail": "No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked"},
    {"check": "MAC_POLICY",     "status": "WARN", "detail": "No enforcing MAC policy (SELinux/AppArmor) detected"},
    {"check": "FIX_SYMBOL",     "status": "INFO", "detail": "CIFS module not loaded — symbol check skipped"}
  ]
}

Интеграция с CI/CD

GitHub Actions

root@kitploit:~
- name: CIFSwitch vulnerability check
  run: |
    chmod +x ./cifswitch-check.sh
    ./cifswitch-check.sh --ci | tee cifswitch-result.json
  # Exit code 1 will fail the step if the runner is vulnerable

GitLab CI

root@kitploit:~
cifswitch-check:
  stage: security
  script:
    - chmod +x cifswitch-check.sh
    - ./cifswitch-check.sh --ci > cifswitch-result.json
  artifacts:
    paths:
      - cifswitch-result.json

Jenkins

root@kitploit:~
stage('CIFSwitch Check') {
    steps {
        sh 'chmod +x cifswitch-check.sh && ./cifswitch-check.sh --ci > cifswitch-result.json'
        archiveArtifacts artifacts: 'cifswitch-result.json'
    }
}

Меры смягчения (если исправление невозможно сразу)

1. Исправьте ядро (когда пакет вашего дистрибутива станет доступен)

Исправление upstream — коммит 3da1fdf4efbc, помещённый в стабильные версии ядер >= 6.18.22, >= 6.19.12 и >= 7.0. Обратные порты для дистрибутивов активно распространяются — проверьте бюллетень безопасности вашего вендора по CVE-2026-46243. Пока пакет не доступен, примените меры смягчения ниже.

2. Удалите cifs-utils (полностью разрывает цепочку атаки, если вы не используете CIFS/SMB-монтирования)

root@kitploit:~
apt remove cifs-utils       # Debian / Ubuntu
dnf remove cifs-utils       # RHEL / Fedora / AlmaLinux

2. Отключите непривилегированные пользовательские пространства имён (блокирует этап смены пространства имён)

root@kitploit:~
# Debian / Ubuntu
sysctl -w kernel.unprivileged_userns_clone=0
echo 'kernel.unprivileged_userns_clone=0' >> /etc/sysctl.d/99-cifswitch.conf

# RHEL / Fedora / upstream
sysctl -w user.max_user_namespaces=0

⚠️ Это может нарушить работу Flatpak, rootless Podman/Docker и изолированной среды Chrome/Chromium.

3. Отключите правило cifs.spnego для request-key

root@kitploit:~
sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf

4. Заблокируйте модуль ядра CIFS (если сетевые монтирования SMB не используются)

root@kitploit:~
echo 'blacklist cifs' >> /etc/modprobe.d/blacklist-cifs.conf
rmmod cifs 2>/dev/null || true
depmod -a

Затрагиваемые дистрибутивы

Для эксплуатации требуется установленный cifs-utils >= 6.14 и включённые непривилегированные пользовательские пространства имён. Дистрибутивы, подтверждённо уязвимые в конфигурации по умолчанию: AlmaLinux 8/9, RHEL 8/9, CloudLinux 8/9/10, а также несколько выпусков Ubuntu/Debian с установленным cifs-utils.

Дистрибутивы, в которых SELinux/AppArmor по умолчанию предотвращают эксплуатацию: Ubuntu 26.04, Fedora 40–44, CentOS Stream 10, Rocky Linux 10, AlmaLinux 10, SLES 16, openSUSE Leap 16.

Не подвержены: Amazon Linux 2, Kali Linux 2019.4/2020.4 (версии cifs-utils не имеют переключения пространства имён).

Для дистрибутивных ядер RHEL/CentOS/Amazon скрипт ссылается на бюллетень вендора, так как статус обратного порта невозможно надёжно определить только по строке версии.


Требования

  • bash >= 4.0
  • Стандартные coreutils (awk, grep, cut, find, sort)
  • Для большинства проверок root не требуется; root (или CAP_SYSLOG) необходим для проверки символа ядра (FIX_SYMBOL)

Ссылки

  • Оригинальная статья исследователя — Asim Manizada
  • Статья SecurityWeek
  • Статья BleepingComputer
  • Бюллетень и руководство по смягчению от CloudLinux
  • Бюллетень AlmaLinux
  • Исправляющий коммит upstream — 3da1fdf4efbc
  • NVD — CVE-2026-46243

Отказ от ответственности

Этот скрипт предоставлен для защитных целей — чтобы помочь администраторам оценить и устранить подверженность уязвимости. Он выполняет проверки только на чтение и не вносит изменений в систему. PoC-эксплойт здесь не включён и не указан; за ним обращайтесь к исходной публикации исследователя.

Скачать инструмент
ПроверкаОписание
KERNEL_VERSIONСравнивает текущее ядро с исправленными версиями из upstream (примечание: пакеты дистрибутивов всё ещё распространяются)
CIFS_UTILSОпределяет установку cifs-utils и уязвимую версию (>= 6.14)
CIFS_MODULEПроверяет, загружен ли модуль ядра CIFS, встроен ли он или заблокирован
USERNSСчитывает sysctl kernel.unprivileged_userns_clone или user.max_user_namespaces
REQUESTKEY_RULEПроверяет наличие активного правила cifs.spnego, вызывающего cifs.upcall
MAC_POLICYОпределяет наличие принудительной политики SELinux или AppArmor (блокирует эксплойт на исправленных дистрибутивах)
CONTAINER_CAPSВ контейнерах: проверяет наличие CAP_SYS_ADMIN (включает неограниченное userns)
CONTAINER_PROCВ контейнерах: проверяет доступ на запись к /proc/sys (привилегированный контейнер)
FIX_SYMBOLЕсли CIFS загружен и /proc/kallsyms доступен для чтения: проверяет наличие символа исправляющего коммита