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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-31431-ansible — Ansible 플레이북으로, Debian/Ubuntu/RHEL 플릿 전반에 걸쳐 CVE-2026-31431(Copy Fail)에 대한 커널 cmdline 완화 조치를 감지하고 적용하며, 읽기 전용 감지 및 멱등 적용을 지원합니다. | Kitploit
도구/GitHubGitHub/aestechno/cve-2026-31431-ansible
Cloud Infrastructure SecurityVulnerability ScannersConfiguration AuditingDevSecOps
GitHubaestechno/cve-2026-31431-ansible

cve-2026-31431-ansible

Ansible 플레이북으로, Debian/Ubuntu/RHEL 플릿 전반에 걸쳐 CVE-2026-31431(Copy Fail)에 대한 커널 cmdline 완화 조치를 감지하고 적용하며, 읽기 전용 감지 및 멱등 적용을 지원합니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
33개월 전아직 검토되지 않음

CVE-2026-31431("Copy Fail") — Ansible 완화 레시피

CI

CVE-2026-31431("Copy Fail")에 대한 커널 커맨드라인 완화 조치를 Debian / Ubuntu / RHEL 계열 시스템 전체에서 탐지하고 적용합니다.

이 CVE는 Linux 커널의 algif_aead AF_ALG 인터페이스에 존재하는 로컬 권한 상승 취약점입니다. www-data, mysql 같은 서비스 계정이나 RCE에 노출된 웹 앱 내부의 프로세스를 포함한 모든 비특권 로컬 사용자가 몇 번의 syscall만으로 루트 권한을 획득할 수 있습니다. 이 버그는 2017년 이후 출시된 모든 주요 배포판에 영향을 미칩니다.

이 레시피가 수행하는 작업

  • 탐지: 완화 조치가 적용되지 않은 호스트를 식별합니다. 기본적으로 읽기 전용입니다.
  • 적용: -e apply_mitigation=true로 실행하면 범용 완화 조치(커널 커맨드라인에 initcall_blacklist=algif_aead_init 추가)를 적용합니다.
  • 자동 재부팅 없음: 재부팅은 운영자의 판단에 맡깁니다.

커널 커맨드라인 블랙리스트는 내장형(RHEL 계열) 및 모듈형(Debian/Ubuntu) 구성 모두에서 작동하며, 자주 언급되는 modprobe blacklist algif_aead 우회 방법으로는 불가능합니다.

완화 조치의 작동 방식

algif_aead_init()은 부팅 시 크립토 소켓 서브시스템에 aead AF_ALG 알고리즘을 등록하는 커널 함수입니다. 커맨드라인 매개변수 initcall_blacklist=algif_aead_init은 커널이 해당 initcall을 건너뛰도록 지시합니다. 취약한 코드는 여전히 커널 바이너리에 존재하지만, socket(AF_ALG, ..., "aead")가 ENOENT를 반환하므로 익스플로잇의 첫 번째 syscall이 실패합니다. 접근 가능한 표면이 없으므로 권한 상승도 불가능합니다.

벤더가 패치된 커널을 배포하고 해당 커널로 재부팅하면 완화 조치가 더 이상 필요하지 않으므로 제거할 수 있습니다.

빠른 시작

root@kitploit:~
# 1. 탐지(읽기 전용) — 호스트별 상태 보고서 생성
ansible-playbook -i inventory check_cve_2026_31431.yml

# 2. 먼저 단일 호스트에 완화 조치 스테이징(자동 재부팅 없음)
ansible-playbook -i inventory --limit <ip-or-host> \
  -e apply_mitigation=true check_cve_2026_31431.yml

# 3. 일반적인 방법으로 해당 호스트 재부팅

# 4. 재탐지; "Mitigation active: yes" 확인

# 5. 나머지 시스템에 배치 단위로 롤아웃

취약한 호스트의 보고서는 다음과 같습니다:

root@kitploit:~
═══════════════════════════════════════════
Host:               192.168.1.42
Distro:             Ubuntu 24.04
Kernel:             6.8.0-60-generic
Mitigation active:  no
Mitigation staged:  no
═══════════════════════════════════════════
⚠️  192.168.1.42: CVE-2026-31431 mitigation is NOT active.

패치된 커널 배포 후 되돌리기

이 레시피의 범위를 벗어납니다. 수동 원라이너:

root@kitploit:~
# Debian / Ubuntu
sudo sed -i 's/ initcall_blacklist=algif_aead_init//' /etc/default/grub
sudo update-grub
sudo reboot

# RHEL 계열
sudo grubby --update-kernel=ALL --remove-args="initcall_blacklist=algif_aead_init"
sudo reboot

실패하지 않는 동작

탐지 경로는 엄격히 읽기 전용입니다(uname, /proc/cmdline 읽기, /etc/default/grub 읽기, grubby --info=ALL). 프로브는 failed_when: false를 사용하므로 예상치 못한 출력이 플레이를 중단시키지 않습니다. ignore_unreachable: true는 연결할 수 없는 호스트에 대해 실행 실패 대신 명확한 "UNREACHABLE — treat as VULNERABLE" 경고를 표시합니다.

적용 경로는 block/rescue로 감싸져 있어 단일 호스트의 오류가 나머지 호스트를 중단시키지 않습니다. grub 편집은 멱등적이며 mitigation_staged로 게이트되므로 재실행 시 아무 작업도 수행하지 않습니다.

테스트

root@kitploit:~
bash tests/run-checks.sh all

단계: lint(yamllint + ansible-lint) → syntax(ansible-playbook --syntax-check) → dry-run(-c local로 localhost에 대해 --check 모드로 플레이북 실행, 탐지 및 적용 경로 모두). 동일한 스크립트가 GitHub Actions 매트릭스에서 debian:12, ubuntu:22.04, ubuntu:24.04, almalinux:9 컨테이너에 대해 모든 push 및 pull request 시 호출됩니다.

dry-run이 검증하지 않는 사항:

  • grub을 수정하거나 update-grub을 실행하거나 재부팅을 트리거하지 않습니다.
  • CI 컨테이너 내부의 /proc/cmdline은 컨테이너가 아닌 러너 호스트의 cmdline을 표시하므로 CI 출력의 mitigation_active는 의미가 없습니다. CI는 플레이북이 깨끗하게 실행됨을 증명할 뿐, 호스트가 완화되었음을 증명하지 않습니다.

자세한 내용은 tests/README.md를 참조하세요.

출처

  • Help Net Security — CVE-2026-31431
  • CloudLinux — 완화 조치 및 패치된 커널 버전
  • Ubuntu — CVE-2026-31431
  • Debian Security Tracker — CVE-2026-31431
  • Tenable FAQ — Copy Fail
  • CERT-EU SA 2026-005

크레딧

취약점은 Taeyang Lee(Theori) 가 발견했으며, Xint Code Research Team이 전체 익스플로잇 체인으로 무기화하여 보안 커뮤니티의 주목을 받게 한 공로가 있습니다. 이 레시피는 그들이 권장한 완화 조치를 자동화한 것에 불과합니다.

라이선스

Beerware. LICENSE 참조. 요약: 이 코드로 원하는 것은 무엇이든 하세요. 만나게 되면 맥주 한 잔 사주세요.

관리자

AESTECHNO — Hugues Orgitello — 프랑스 몽펠리에 소재 전자 설계 하우스.

도구 다운로드