Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cifswitch-check — CIFSwitch - CVE-2026-46243 탐지 스크립트 | Kitploit
도구/GitHubGitHub/liamromanis101/cifswitch-check
Privilege EscalationVulnerability ScannersContainer SecurityVulnerability AnalysisExploitationScripting & AutomationConfiguration AuditingCloud SecurityDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

CIFSwitch - CVE-2026-46243 탐지 스크립트

73개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

cifswitch-check

리눅스 시스템이 **CIFSwitch(CVE-2026-46243)**에 노출되어 있는지 확인하는 셸 스크립트입니다. CIFSwitch는 2007년부터 존재해 온 리눅스 커널 CIFS/SMB 클라이언트의 로컬 권한 상승 취약점입니다.

베어메탈 호스트, VM, 컨테이너 내부에서 실행됩니다. CI/CD 파이프라인에 바로 적용할 수 있도록 설계되었습니다.


배경

CIFSwitch는 보안 연구원 Asim Manizada가 2026년 5월 28일에 공개했습니다. 이 결함은 커널의 cifs.spnego 키 유형에 대한 입력 검증 누락과 cifs-utils의 루트 권한 cifs.upcall 헬퍼를 연쇄적으로 악용합니다.

권한이 없는 로컬 사용자는 위조된 키 설명과 함께 request_key()를 호출하여 커널이 공격자가 제어하는 필드로 cifs.upcall을 루트 권한으로 호출하도록 만들 수 있습니다. upcall_target=app인 경우 헬퍼는 공격자의 마운트 네임스페이스에 진입하여 권한을 내리기 전에 getpwuid() 조회를 수행하며, 이때 공격자가 제어하는 NSS 모듈을 로드하고 루트 권한으로 임의 코드를 실행합니다.

악용을 위한 전제 조건:

  • 취약한 커널(2007년부터 존재, 6.18.22 / 6.19.12 / 7.0+에서 수정됨)
  • cifs-utils >= 6.14 설치
  • 권한 없는 사용자 네임스페이스 활성화(대부분의 배포판에서 기본값)
  • 해당 경로를 차단하는 SELinux/AppArmor 강제 정책이 없어야 함

공개 PoC는 manizada/CIFSwitch에서 확인할 수 있습니다.


검사 항목

검사 항목설명
KERNEL_VERSION실행 중인 커널을 패치된 업스트림 버전과 비교합니다 (참고: 배포판 패키지는 아직 배포 중)
CIFS_UTILScifs-utils 설치 여부와 악용 가능한 버전(>= 6.14)을 감지합니다
CIFS_MODULECIFS 커널 모듈이 로드되었는지, 내장되어 있는지, 블랙리스트에 등록되었는지 확인합니다
USERNSkernel.unprivileged_userns_clone 또는 user.max_user_namespaces sysctl 값을 읽습니다
REQUESTKEY_RULEcifs.upcall을 호출하는 활성 cifs.spnego 규칙이 있는지 확인합니다
MAC_POLICYSELinux 또는 AppArmor 강제 적용 여부를 감지합니다 (패치된 배포판에서 악용을 차단함)
CONTAINER_CAPS컨테이너에서: CAP_SYS_ADMIN 보유 여부 확인 (무제한 userns 활성화)
CONTAINER_PROC컨테이너에서: /proc/sys 쓰기 접근 권한 확인 (프리빌리지드 컨테이너)
FIX_SYMBOLCIFS가 로드되고 /proc/kallsyms를 읽을 수 있는 경우: 수정 커밋 심볼 존재 여부 확인

사용법

# Clone or download
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# Run interactively (coloured output)
./cifswitch-check.sh

# Quiet mode — only FAILs and final verdict
./cifswitch-check.sh --quiet

# JSON output — for CI/CD pipelines, SIEM ingestion
./cifswitch-check.sh --ci

# No colour (plain text, useful for logging)
./cifswitch-check.sh --no-colour

# This script is also available as a SKILL from Agensi:
https://www.agensi.io/skills/cve-2026-46243-cifswitch

종료 코드

코드의미
0취약하지 않음, 또는 모든 중요 완화 조치가 적용됨
1취약함 — 하나 이상의 FAIL 검사 항목 존재
2스크립트 오류

출력 예시

대화형 (사람이 읽을 수 있는 형식)

  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)

{
  "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

- 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

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

Jenkins

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

완화 조치 (즉시 패치가 어려운 경우)

1. 커널 패치 (배포판 패키지가 제공될 때)

업스트림 수정 사항은 커밋 3da1fdf4efbc이며, 커널 >= 6.18.22, >= 6.19.12, >= 7.0의 stable에 포함될 예정입니다. 배포판 백포트가 활발히 배포되고 있습니다 — CVE-2026-46243에 대한 벤더 보안 권고를 확인하세요. 패키지가 제공될 때까지 아래 완화 조치를 적용하십시오.

2. cifs-utils 제거 (CIFS/SMB 마운트를 사용하지 않는다면 공격 체인을 완전히 차단합니다)

apt remove cifs-utils       # Debian / Ubuntu
dnf remove cifs-utils       # RHEL / Fedora / AlmaLinux

2. 권한 없는 사용자 네임스페이스 비활성화 (네임스페이스 전환 단계를 차단합니다)

# 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, 루트리스 Podman/Docker, Chrome/Chromium 샌드박스가 동작하지 않을 수 있습니다.

3. cifs.spnego request-key 규칙 비활성화

sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf

4. CIFS 커널 모듈 블랙리스트 등록 (SMB 네트워크 마운트를 사용하지 않는 경우)

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 및 cifs-utils가 설치된 일부 Ubuntu/Debian 릴리스가 있습니다.

기본 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)
  • 대부분의 검사에는 루트 권한이 필요하지 않습니다. 커널 심볼 검사(FIX_SYMBOL)에는 루트(또는 CAP_SYSLOG) 권한이 필요합니다.

참고 자료

  • 원문 연구자 글 — Asim Manizada
  • SecurityWeek 보도
  • BleepingComputer 보도
  • CloudLinux 권고 및 완화 가이드
  • AlmaLinux 권고
  • 업스트림 수정 커밋 — 3da1fdf4efbc
  • NVD — CVE-2026-46243

고지 사항

도구 다운로드