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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-46331-audit — cve-2026-46331-audit 스크립트 | Kitploit
도구/GitHubGitHub/quaerendir/cve-2026-46331-audit
Privilege EscalationVulnerability AnalysisExploitationForensicsPapers & ResearchLearning & EducationIncident Response
GitHubquaerendir/cve-2026-46331-audit

cve-2026-46331-audit

cve-2026-46331-audit 스크립트

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

cve-2026-46331-audit

CVE Name CVSS Disclosed Shell License Version CI

CVE-2026-46331(일명 pedit COW)에 대한 읽기 전용 감사 스크립트입니다. 이 취약점은 Linux 커널의 net/sched act_pedit 액션에 존재하는 부분적 copy-on-write 버그로, 로컬의 비특권 사용자가 페이지 캐시 메모리를 손상시키고 root 권한으로 상승할 수 있게 합니다.

   ____  _____ ____ ___ _____      ____ _____        __
  |  _ \| ____|  _ \_ _|_   _|    / ___/ _ \ \      / /
  | |_) |  _| | | | | |  | |     | |  | | | \ \ /\ / /
  |  __/| |___| |_| | |  | |     | |__| |_| |\ V  V /
  |_|   |_____|____/___| |_|      \____\___/  \_/\_/
     CVE-2026-46331    net/sched act_pedit partial COW

TL;DR

tcf_pedit_act()는 키 루프 이전에 tcfp_off_max_hint를 사용하여 skb_ensure_writable()에 대한 COW 범위를 한 번 계산합니다. Typed 키는 힌트가 커버하지 않는 런타임 헤더 오프셋을 추가하므로, 최종 쓰기의 일부가 COW된 영역 밖에 위치하게 됩니다. 결과적으로 공유 페이지 캐시 페이지가 훼손되며, 캐시된 setuid 바이너리(고전적 대상: /bin/su)가 메모리에서 오염될 수 있습니다. 디스크 상의 해시는 깨끗하게 유지됩니다. 파일 무결성 모니터는 이를 감지하지 못합니다.

Dirty COW(CVE-2016-5195), Dirty Pipe(CVE-2022-0847), Copy Fail(CVE-2026-31431), Dirty Frag(CVE-2026-46300)와 동일한 버그 계열입니다. 진입점은 다르지만 페이지 소유권 실패는 동일합니다.

CVECVE-2026-46331
구성 요소Linux 커널 net/sched / act_pedit
분류부분 COW → 페이지 캐시 손상 → LPE
공격 벡터로컬 (CAP_NET_ADMIN, 일반적으로 비특권 userns를 통해 획득)
업스트림 영향 범위5.18 .. 7.1-rc6
업스트림 수정7.1-rc7
공개 PoCpacket_edit_meme (RHEL 10, Debian 13, Ubuntu 24.04.4에서 검증됨)
Red Hat 심각도Important
SUSE CVSS 3.17.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)

이 스크립트가 하는 일

엄격히 읽기 전용 트리아지입니다. 모듈을 로드하지 않고, sysctl을 건드리지 않으며, PoC를 실행하지 않습니다. 프로덕션 환경에서 안전하게 실행되도록 설계되었습니다.

  • 실행 중인 커널, 배포판, 커널 패키지 버전을 인벤토리화합니다.
  • 네 가지 독립적 신호를 통해 act_pedit 도달 가능성을 탐지합니다:
    • 현재 로드됨 (lsmod)
    • 요청 시 로드 가능 (modinfo)
    • 실행 중인 커널에 내장됨 (/boot/config-$(uname -r), /proc/config.gz, modules.builtin)
    • modprobe.d의 install ... /bin/true 오버라이드로 차단됨, 또는 net-act-pedit 별칭을 통해 act_pedit를 자동 로드하는 커널(6.9+; 이전 커널은 이름으로 요청하므로 blacklist가 막지 못함)에서 blacklist로 차단됨
  • 기존 tc action pedit 규칙을 나열합니다 (정보 제공용, 변경 없음).
  • userns / netns 게이트를 읽습니다: user.max_user_namespaces, kernel.unprivileged_userns_clone, user.max_net_namespaces, 그리고 Ubuntu AppArmor userns 제한.
  • /etc/os-release에 따른 휴리스틱 벤더 패치 매트릭스 (RHEL 8/9/10, Debian 11/12/13/14, Ubuntu 18.04→26.04, SUSE, Amazon Linux, Arch 계열 롤링).
  • auditd와 journalctl을 통한 선택적 행위 기반 IoC 탐색 (--since와 --until로 기간 설정 가능).
  • 위험 점수 0-100 및 최종 판정: PATCHED / NOT_APPLICABLE / MITIGATED / VULNERABLE / UNKNOWN.
  • 플릿 오케스트레이션을 위해 설계된 종료 코드.

사용법

sudo ./cve-2026-46331-audit.sh                       # full text report
sudo ./cve-2026-46331-audit.sh --json                # machine-readable JSON, no banner
sudo ./cve-2026-46331-audit.sh --quiet --no-hunt     # one-line verdict for mass scans
sudo ./cve-2026-46331-audit.sh --since 2026-06-01    # widen IoC hunt window
sudo ./cve-2026-46331-audit.sh --since 2026-06-01 --until 2026-09-01  # bounded IoC window
sudo ./cve-2026-46331-audit.sh --no-banner           # text report without the ASCII banner
./cve-2026-46331-audit.sh --version                  # print script version and exit

종료 코드

코드의미
0PATCHED 또는 NOT_APPLICABLE (커널이 버그 이전 버전임)
1MITIGATED (완화 조치 활성, 커널은 여전히 취약, 그래도 패치 필요)
2VULNERABLE (필수 전제 조건 중 하나 이상 충족, 수정된 커널 없음)
3UNKNOWN (공유 / CI / Kubernetes 환경에서는 의심 대상으로 취급)
4ERROR (스크립트 실행 불가, 도구 누락 또는 잘못된 환경)

샘플 출력

전체 실행 결과는 examples/sample-output.txt를, JSON 형식은 examples/sample-output.json을 참조하세요.

위험 점수 산정 모델

점수는 다음 항목들의 가중치 조합입니다:

신호가중치
벤더 판정 VULNERABLE+50
벤더 판정 UNKNOWN+30
act_pedit가 커널에 내장됨+25
act_pedit 로드 가능, 오버라이드 없음+20
act_pedit 로드 가능, 오버라이드 또는 블랙리스트 활성+5
act_pedit 현재 로드됨+5
비특권 userns+netns 접근 가능, AppArmor 게이트 없음+15
비특권 userns+netns 접근 가능, AppArmor 게이트 활성+8
헌트 기간 내 IoC 발견+10

최대 100으로 제한됩니다. 약 70을 초과하는 경우 멀티테넌트 / CI / Kubernetes 노드에서는 긴급으로 취급해야 하며, 약 20 미만은 보통 호스트가 정상임을 확인해 주는 수치입니다.

대규모 배포

Ansible

ansible -i inventory all -m script \
  -a "cve-2026-46331-audit.sh --json --quiet --no-hunt" \
  --become \
  | tee /tmp/audit.jsonl

그런 다음 jq로 집계합니다:

grep -v '^[a-z]' /tmp/audit.jsonl | jq -s 'group_by(.verdict) | map({verdict: .[0].verdict, hosts: length})'

플레이에서의 failed_when

- name: audit CVE-2026-46331
  ansible.builtin.script: cve-2026-46331-audit.sh --quiet --no-hunt
  register: audit
  failed_when: audit.rc == 2
  changed_when: false

완화 조치 (패치를 지연해야 하는 경우)

선호도 순서대로 나열했습니다. 스크립트는 발견한 내용에 따라 적절한 조치를 권장합니다.

# Option 1: block act_pedit if you don't use it.
tc actions list action pedit                  # MUST be empty before doing this

# 1a) Hard block via modprobe install override (strongest).
echo 'install act_pedit /bin/true' | sudo tee /etc/modprobe.d/disable-act_pedit.conf

# 1b) `blacklist act_pedit` only stops the autoload on kernels 6.9+, which
#     request the "net-act-pedit" alias. Older kernels load it by name and
#     ignore the blacklist, so prefer 1a. Check your kernel:
modinfo -F alias act_pedit | grep -qx net-act-pedit && echo "blacklist works here"

lsmod | grep -q act_pedit && sudo rmmod act_pedit
# Option 2: restrict unprivileged user namespaces.
# Will break rootless Podman/Docker, browser sandboxes, Flatpak, unprivileged unshare, some CI sandboxes.
sudo sysctl -w user.max_user_namespaces=0           # EL-family
sudo sysctl -w kernel.unprivileged_userns_clone=0   # Debian/Ubuntu

# Option 2b: restrict network namespaces (breaks the CAP_NET_ADMIN acquisition path).
# Less disruptive than disabling all user namespaces, but still breaks some container tooling.
sudo sysctl -w user.max_net_namespaces=0

실제 해결책은 벤더 커널 업데이트와 재부팅입니다. 재부팅 후 uname -r만이 이를 입증할 수 있는 유일한 방법입니다.

버그 계열 배경

이는 동일한 아키텍처적 실패의 다섯 번째 반복입니다. 각각은 근접 원인을 수정했지만, 어느 것도 근본 원인은 해결하지 못했습니다. 바로 소유권 경계를 넘나들며 페이지를 공유하는 제로 카피 고속 경로로, 여기서는 수백 개의 호출 지점에서 모든 쓰기 주체가 바이트를 변경하기 전에 프라이버시를 입증해야 합니다.

CVE연도서브시스템프리미티브
CVE-2016-51952016mm읽기 전용 매핑에 대한 COW 경쟁
CVE-2022-08472022pipe / splicepipe_buffer 플래그가 페이지 캐시로 유출
CVE-2026-314312026crypto AF_ALG/AEAD읽기 전용 파일 캐시에 대한 인플레이스 암호화
CVE-2026-463002026XFRM ESP-in-TCPskbuff 공유 프래그 마커 손실
CVE-2026-463312026net/sched act_pedit늦게 해석된 타입 키 오프셋으로 인한 부분 COW

커널 내 Rust는 소유권 타입을 통해 바로 이 부류의 문제를 해결합니다. 내일 net/sched에 나타나지는 않을 것입니다.

참고 자료

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-46331
  • Red Hat: https://access.redhat.com/security/vulnerabilities/RHSB-2026-008
  • Ubuntu: https://ubuntu.com/security/CVE-2026-46331
  • Debian: https://security-tracker.debian.org/tracker/CVE-2026-46331
  • 업스트림 커밋 및 설명: NVD 레코드 참고 자료를 참조하십시오.

라이선스

MIT. LICENSE를 참조하십시오.

면책 조항

도구 다운로드