Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/criann/check-cve-2026-23111
Privilege EscalationVulnerability ScannersVulnerability AnalysisConfiguration AuditingThreat IntelligenceLearning & EducationIncident Response
GitHubcriann/check-cve-2026-23111

check-cve-2026-23111

시스템이 cve-2026-23111에 취약한지 확인하는 스크립트

저장소 보기
3개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-23111 방어적 검증 스크립트

개요

CVE-2026-23111은 nf_tables에서 발생하는 리눅스 커널 취약점으로, 사용자 네임스페이스(user namespaces)와 nftables가 활성화된 시스템에서 권한이 없는 사용자가 로컬 권한 상승에 악용할 수 있습니다.[1][2] 공공 벤더 및 정부 권고에서는 이를 리눅스 배포판에 영향을 미치는 로컬 문제로 설명하며, 패치 적용을 주요 해결 방안으로 강조합니다.[3][4]

이 리포지토리는 방어적 검증 스크립트를 포함하고 있으며, 이는 권한 상승 익스플로잇을 제공하지 않고 호스트가 해당 CVE와 관련된 기술적 조건을 노출하는지 평가하는 데 도움을 주도록 설계되었습니다. 실행 중인 커널 및 런타임 조건을 확인하고, 선택적으로 nf_tables 모듈을 전체 기능 테스트를 위해 로드하며, unshare 및 nft를 사용하여 제한된 비권한 검증 경로를 시도하고, 로컬 진단 트레이스를 수집하며, 호스트를 'likely safe', 'blocked by local policy', 'exposed path available'과 같은 운영적 판정으로 분류합니다.[1][5]

CVE의 정의

NVD에 따르면, CVE-2026-23111은 netfilter에서 로직 버그 수정으로 해결된 리눅스 커널 nf_tables 취약점이며, 영향을 받는 구성에서 권한 없는 사용자가 사용자 네임스페이스와 nftables를 통해 로컬 권한 상승에 악용될 수 있습니다.[1] 우분투의 보안 공지에서는 동일한 상위 수준의 악용 경로를 설명하고, 각 릴리스별로 영향을 받는 패키지와 수정된 패키지 상태를 추적합니다.[2]

Red Hat은 로컬의 낮은 권한 사용자가 해당 문제를 악용하여 서비스 거부를 일으키거나 잠재적으로 권한 상승을 달성할 수 있다고 밝히며, nf_tables 모듈이 운영적으로 허용 가능할 때 해당 모듈의 로드를 차단하는 완화 경로를 문서화하고 있습니다.[3] 캐나다 사이버 보안 센터(Canadian Centre for Cyber Security)의 국가 차원 지침도 영향을 받는 조직에 벤더 업데이트를 참조하도록 하고, 모듈 차단 완화 조치를 사용할 때 initramfs 재생성을 언급합니다.[4]

스크립트의 기능

이 스크립트는 방어적 노출 평가를 위한 것이며, 악용(exploitation)을 위한 것이 아닙니다. 다음과 같은 목적으로 설계되었습니다:

  • 실행 중인 커널, 배포판 계열, 관련 런타임 강화 설정을 식별합니다.
  • CONFIG_USER_NS 및 CONFIG_NF_TABLES가 존재하는지 확인합니다.[1]
  • kernel.unprivileged_userns_clone 및 user.max_user_namespaces를 검사하여 권한 없는 사용자 네임스페이스가 사용 가능한지 추정합니다.
  • nf_tables 모듈에 대해 하드 modprobe 거부(install nf_tables /bin/false) 또는 약한 블랙리스트가 설정되어 있는지 탐지합니다.
  • 벤더 커널 RPM 체인지로그에서 CVE-2026-23111 백포트 항목을 확인합니다(RHEL 계열만 해당).
  • 모듈 상호작용 전에 취약한 심볼(nft_map_catchall_activate)과 패치 후 심볼(nft_catchall_set_activate)을 /proc/kallsyms에서 식별합니다.
  • --allow-load-module이 지정된 경우(아래 참조) modprobe를 통해 nf_tables를 선택적으로 로드하고, 종료 시 자동으로 언로드합니다.
  • 모듈이 로드된 상태에서 제한된 + 검증 단계를 실행하고, stdout, stderr, 최신 커널 로그를 기록합니다.

스크립트는 스크립트 디렉터리의 하위 디렉터리에 로그를 저장하며, --keep-logs가 사용되지 않으면 기본적으로 제거합니다.

모듈 로딩 정책

기본적으로 스크립트는 절대로 nf_tables를 로드하지 않습니다. 스크립트가 시작될 때 모듈이 이미 로드되어 있지 않으면, 모든 기능적 nft 테스트는 건너뛰어지고 판정은 커널 버전, kallsyms 지문, modprobe 구성, RPM 체인지로그, sysctl/LSM 정책 증거만을 기반으로 도출됩니다.

이러한 보수적인 기본값은 프로덕션 호스트에서 의도치 않게 공격 표면을 확장하는 것을 피합니다. 제어된 또는 계측된 시스템에서 전체 기능 테스트를 활성화하려면 root로 --allow-load-module을 사용하십시오(아래 참조).

사용법

root@kitploit:~
# 기본 — 모듈 로딩 없음, 정책 증거 기반 판정만 수행
./check_cve_2026_23111.sh
./check_cve_2026_23111.sh --color
./check_cve_2026_23111.sh --keep-logs
./check_cve_2026_23111.sh --color --keep-logs

# 전체 기능 테스트 — nf_tables 로드(및 언로드), root 권한 필요
sudo ./check_cve_2026_23111.sh --allow-load-module
sudo ./check_cve_2026_23111.sh --allow-load-module --color --keep-logs

옵션

--allow-load-module을 사용해야 하는 경우

격리된 비프로덕션 또는 목적에 맞게 구축된 테스트 VM에서 최고 신뢰도의 판정이 필요할 때 --allow-load-module을 사용하십시오. 일반적인 시나리오:

  • 취약한 범위의 커널을 벤더 수정 사항을 배포하기 전에 검증하는 경우.
  • 테스트 시스템에 KASAN 또는 기타 계측 기능이 활성화되어 있고 커널 트레이스를 관찰하려는 경우.
  • 대상 호스트에서 모듈이 사용 중이 아니며 감사 증거를 위해 완전한 엔드투엔드 경로 확인이 필요한 경우.

프로덕션 호스트에서 nf_tables가 의도적으로 차단되어 있거나 로드 시 강화 정책을 위반할 수 있는 경우 --allow-load-module을 사용하지 마십시오.

--allow-load-module의 안전 게이트

모듈 로드를 시도하기 전에 스크립트는 다음 검사를 시행하며, 하나라도 실패하면 오류와 함께 종료됩니다:

  1. /etc/modprobe.d/에 하드 modprobe 거부(install nf_tables /bin/false)가 존재하지 않아야 합니다.
  2. 시스템에 modprobe가 사용 가능해야 합니다.
  3. 스크립트가 root(uid 0)로 실행 중이어야 합니다.

스크립트가 모듈을 성공적으로 로드한 경우, 스크립트 종료 방식(성공, 오류, 또는 CTRL+C)에 관계없이 cleanup() 트랩을 통해 modprobe -r nf_tables가 호출됩니다.

판정 모델

스크립트는 익스플로잇 결과가 아닌 운영적 판정을 사용합니다:

이러한 판정은 패치 우선순위 지정 및 방어적 분류를 지원하기 위한 것이며, 벤더 패키지 상태 검증을 대체하지 않습니다.

커널 버전 적용 범위

스크립트는 실행 중인 커널을 문서화된 업스트림 수정 지점에 매핑합니다:

권장 완화 조치

주요 권장 조치는 벤더가 수정한 커널 업데이트를 설치하고 수정된 커널로 재부팅하는 것입니다.[2][3][4] 악용은 로컬 커널 공격 표면에 의존하므로, 패치 일정을 계획하거나 검증하는 동안 추가 강화를 통해 노출을 줄일 수 있습니다.[5][6]

우선 조치

  1. 커널 패치: 공식 배포판 권고를 사용하여 커널을 패치하고 수정된 버전으로 재부팅합니다.[2][3][4]
  2. 권한 없는 사용자 네임스페이스 제한: 업무 요구 사항이 허용하는 경우, 문서화된 공격 경로가 권한 없는 사용자에게 사용 가능해야 하기 때문에 제한합니다.[1][5][6]
  3. nf_tables 로딩 비활성화 또는 차단: 시스템이 nftables 기능을 필요로 하지 않고 변경 사항이 운영 영향에 대해 검증된 경우 수행합니다.[3][4]
  4. 권한 있는 네트워킹 기능 제한: CAP_NET_ADMIN과 같은 접근 경로를 제한하고 방화벽 상태를 조작할 수 있는 계정 수를 줄입니다.[5]

강화 예시

권한 없는 사용자 네임스페이스 제한:

root@kitploit:~
echo 'kernel.unprivileged_userns_clone=0' > /etc/sysctl.d/99-cve-2026-23111.conf
echo 'user.max_user_namespaces=0' >> /etc/sysctl.d/99-cve-2026-23111.conf
sysctl --load /etc/sysctl.d/99-cve-2026-23111.conf

운영상 안전할 때 nf_tables 모듈 로딩 차단:

root@kitploit:~
echo 'install nf_tables /bin/false' > /etc/modprobe.d/disable-nf_tables.conf
rmmod nf_tables 2>/dev/null || true

모듈 로딩 완화 조치를 사용하는 경우, 일부 가이드는 초기 부팅 시 차단된 모듈이 로드되지 않도록 initramfs를 재생성할 것을 권장합니다.[4]

우분투 관련 참고 사항

우분투는 권한 없는 사용자 네임스페이스에 대한 AppArmor 기반 제한을 커널 수정 사항의 완전한 대체재가 아닌 공격 표면을 줄이는 방법으로 문서화하고 있습니다.[6] 런타임 테스트에서 공격 경로가 로컬에서 차단되어 호스트가 덜 노출된 것으로 보일 수 있지만, 장기적인 해결을 위해서는 여전히 벤더가 수정한 커널 패키지를 설치해야 합니다.[2][6] 스크립트는 실제 unshare --user 호출을 시도하고 사용자+네트워크 네임스페이스 내에서 CAP_NET_ADMIN이 기능하는지 확인하여 AppArmor 제한 효과를 검증합니다.

Red Hat 관련 참고 사항

Red Hat은 CVE-2026-23111에 대한 완화 조치로 nf_tables 모듈이 로드되지 않도록 방지하는 것을 명시적으로 나열하며, 이는 해당 변경이 환경에 적합한 경우에 해당합니다.[3] 스크립트는 check_modprobe_deny()를 통해 이 구성을 감지하고, 하드 거부(install nf_tables /bin/false, 주문형 로딩 차단)와 약한 블랙리스트(차단하지 않음)를 구분합니다. RHEL 계열 시스템에서는 실행 중인 커널의 RPM 체인지로그에서 CVE-2026-23111 백포트 항목을 검사하여 업스트림 버전 번호와 관계없이 벤더 확인 판정을 가능하게 합니다.

공식 참조

  • NVD: CVE-2026-23111 상세 정보 [1]
  • 우분투 보안: CVE-2026-23111 [2]
  • Red Hat 보안: CVE-2026-23111 [3]
  • 캐나다 사이버 보안 센터 권고: AL26-011 [4]
  • 우분투 AppArmor 사용자 네임스페이스 제한 개요: AppArmor 사용자 네임스페이스 제한 이해 [6]

범위 및 안전

이 README와 동봉된 스크립트는 방어적 검증, 인벤토리 작성 및 완화 계획 수립을 위한 것입니다. 이는 벤더 지침, 패키지 수준 확인 또는 표준 패치 관리 프로세스를 대체하지 않으며, 연결된 권고에 설명된 공식 수정 사항을 적용하는 대체 수단으로 사용되어서는 안 됩니다.[2][3][4]


📚 교육용 보안 연구 리포지토리

통제된 환경에서 사이버 보안 개념을 학습, 테스트 및 연구하기 위한 리포지토리입니다.


⚠️ 보안 및 법적 고지

목적

이 리포지토리는 교육 목적 및 승인된 보안 연구 전용입니다.

사용자가 다음에 대해 배울 수 있도록 설계되었습니다:

  • 보안 취약점
  • 샌드박스 및 격리 개념
  • 안전한 코딩 및 방어적 관행

승인된 사용

다음과 같이 허가를 받은 환경에서만 이 리포지토리를 사용하십시오:

  • 개인 실습실 또는 가상 머신
  • Docker 또는 격리된 환경
  • 승인된 침투 테스트
  • 사이버 보안 교육 또는 학술 연구

승인되지 않았거나 불법적인 사용은 엄격히 금지됩니다.


책임 부인

저자 및 기여자는 이 프로젝트로 인한 손해, 오용, 법적 문제 또는 손실에 대해 책임을 지지 않습니다.

이 리포지토리를 사용함으로써 다음에 동의하는 것으로 간주됩니다:

  • 귀하는 자신의 행동에 책임이 있습니다
  • 합법적이고 윤리적으로 사용할 것입니다
  • 프로젝트는 보증 없이 제공됩니다

윤리적 사용

이 프로젝트는 다음을 위해 사용됩니다:

  • 방어적 보안 연구
  • 사이버 보안 교육
  • 취약점 인식
  • 안전한 시스템 및 소프트웨어 연구

책임 있는 공개 관행을 따르고 모든 관련 법률을 준수하십시오.


연락처

책임 있는 공개 또는 협업을 위해서는 GitHub를 통해 리포지토리 관리자에게 연락하십시오.

도구 다운로드
unshare -U -n --map-root-user
nft
  • unshare --user가 실제로 네임스페이스를 생성하고 내부에서 CAP_NET_ADMIN이 기능하는지 확인하여 AppArmor 또는 SELinux 제한이 실제로 효과적인지 검증합니다.
  • AppArmor 또는 SELinux와 같은 로컬 보안 제어가 테스트된 경로를 차단하는 것으로 보이는지 강조 표시합니다.[6]
  • 보다 쉬운 분류를 위해 선택적 색상 강조와 함께 판정 중심의 출력을 생성합니다.
  • 옵션설명
    --allow-load-module모듈이 이미 로드되지 않은 경우 modprobe를 통해 nf_tables를 로드하도록 스크립트에 권한을 부여합니다. 전체 nft catchall 경로 실행기와 CAP_NET_ADMIN 효과 테스트를 활성화합니다. 모듈은 종료 시 자동으로 언로드됩니다. root 권한이 필요합니다. 이미 하드 modprobe 거부가 설정되어 있으면 거부됩니다. 프로덕션 시스템이 아닌 계측된 시스템에서만 사용하십시오.
    --color터미널이 지원하는 경우 색상화된 stdout 출력을 활성화합니다.
    --keep-logs로그와 트레이스를 종료 시 삭제하지 않고 스크립트 디렉터리 아래에 유지합니다.
    --help사용법 정보를 출력하고 종료합니다.
    판정의미
    not-affected커널 버전이 5.13 미만입니다. catchall 요소 기능이 아직 도입되지 않아 취약한 코드 경로가 존재하지 않습니다.
    likely-patched-vendor-confirmed벤더 커널 RPM 체인지로그에서 CVE-2026-23111이 발견되어, 업스트림 버전과 관계없이 백포트된 수정 사항이 확인되었습니다.
    likely-patched-upstream-confirmed커널 버전이 패치된 업스트림 범위에 속하며 그리고 기능적 nft 테스트가 커널 신호 없이 0이 아닌 값을 반환했습니다 — 가장 강력한 정적 + 동적 안전 상태 증거입니다.
    likely-patched-upstream커널 버전이 패치된 업스트림 범위에 속하지만 기능 테스트가 실행되지 않았습니다(모듈 부재 또는 불확실). 벤더 권고 상태는 여전히 확인해야 합니다.
    likely-safe-or-patched스크립트에 의해 악용 가능한 경로가 확인되지 않았습니다. 원인은 패치된 커널, 취약한 코드 부재, 또는 암시적 로컬 차단 사이에서 모호합니다.
    blocked-by-local-policy테스트된 경로가 AppArmor, SELinux, 사용자 네임스페이스 제한 또는 modprobe 거부에 의해 차단된 것으로 보입니다.[6] 정책 차단은 벤더 수정 사항을 대체하지 않습니다.
    exposed-path-available호스트가 문서화된 악용 전제 조건과 일치하는 userns + nftables 경로를 노출합니다.[1][5]
    strong-signal-lab-confirmationnf_tables 관련 메모리 손상과 일치하는 커널 로그 신호가 관찰되었습니다. 폐기 가능한 계측된 실험실에서만 확인하십시오.
    prerequisites-missing필요한 진단 도구(unshare, nft)가 없습니다. 의미 있는 런타임 검증이 완료되지 않았습니다.
    브랜치수정 버전업스트림 커밋
    6.13.x+≥ 6.13.1f41c5d1
    6.12.x≥ 6.12.128c760ba
    6.6.x≥ 6.6.75b9b6573
    6.1.x≥ 6.1.1288b68a45
    6.2–6.5, 6.7–6.11업스트림 EOL배포판 백포트만 가능
    5.15.x배포판 종속Amazon Linux: ALAS2KERNEL-5.15-2026-098
    5.10.x배포판 종속Amazon Linux 2: 2026-03 기준 보류 중
    5.4.x배포판 종속Amazon Linux 2: 2026-03 기준 보류 중
    5.13–5.14업스트림 EOL배포판 백포트만 가능
    < 5.13영향을 받지 않음catchall 기능 없음