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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cfDr — Ansible 플레이북: CVE-2026-31431(Copy Fail) 탐지 및 수정 - Linux 커널 로컬 권한 상승 취약점 | Kitploit
도구/GitHubGitHub/parmstro/cfdr
Vulnerability ScannersConfiguration AuditingDevSecOps
GitHubparmstro/cfdr

cfDr

Ansible 플레이북: CVE-2026-31431(Copy Fail) 탐지 및 수정 - Linux 커널 로컬 권한 상승 취약점

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

cfDr - 복사 실패 닥터

Copy Fail Detection and Remediation

Linux 커널의 algif_aead 모듈에서 발생하는 치명적인 로컬 권한 상승 취약점인 CVE-2026-31431(복사 실패)을 탐지하고 완화하기 위한 Ansible 역할 및 플레이북 모음입니다.

저장소

🔗 GitHub: https://github.com/parmstro/cfDr

cfDr라는 이름은 "Copy Fail Doctor"의 말장난으로, CVE-2026-31431에 대한 신뢰할 수 있는 해결책을 의미합니다.


목차

  1. CVE-2026-31431 이해하기
  2. 사용 가능한 완화 조치
  3. 탐지 방법론
  4. cfDr 작동 방식
  5. 시스템 암호화에 미치는 영향
  6. 권장 워크플로우
  7. 추가 리소스
  8. 패치 모니터링
  9. 빠른 시작
  10. 고급 구성

CVE-2026-31431 이해하기

복사 실패(Copy Fail)란 무엇인가?

CVE-2026-31431(CVSS 7.8)은 2026년에 발견된 Linux 커널의 AEAD 소켓 인터페이스(AF_ALG)의 논리적 결함입니다. 이 취약점을 통해 권한이 없는 모든 로컬 사용자가 몇 초 만에 루트 권한으로 상승할 수 있습니다.

기술적 세부 사항

  • 영향을 받는 구성 요소: algif_aead 커널 모듈(AF_ALG 암호화 인터페이스)
  • 취약점 유형: 복사 작업 처리의 논리적 결함
  • 공격 벡터: 로컬
  • 필요한 권한: 없음(권한 없는 사용자)
  • 사용자 상호 작용: 없음
  • 영향: 시스템 전체 장악(루트 액세스)

영향을 받는 시스템

커널 버전: Linux 커널 >= 4.10(2017년 출시)

영향을 받는 배포판:

  • Red Hat Enterprise Linux 7, 8, 9
  • CentOS 7, 8, 9(및 Stream)
  • Fedora(현재 지원되는 모든 버전)
  • Ubuntu 17.04 이상
  • Debian 9(Stretch) 이상
  • SUSE Linux Enterprise 12, 15

참고: 커널 4.10 이상을 사용하는 모든 Linux 배포판은 잠재적으로 취약합니다.

이것이 중요한 이유

이 취약점은 특히 다음과 같은 이유로 위험합니다:

  1. 권한 불필요 - 모든 사용자 계정이 악용할 수 있음
  2. 즉시 권한 상승 - 몇 초 만에 루트 액세스 가능
  3. 광범위한 영향 - 7년 이상의 커널 릴리스에 영향
  4. 로컬 실행 - 원격 액세스가 필요 없지만, 초기 침투에 성공한 공격자는 즉시 권한을 상승시킬 수 있음
  5. 활발한 악용 - 공개 익스플로잇이 존재함

실제 영향

공격자가 SSH, 웹 셸, 컨테이너 탈출 등 어떤 형태로든 로컬 액세스 권한을 얻으면 다음과 같은 행위가 가능합니다:

  • 시스템에 대한 완전한 제어권 확보
  • 영구 백도어 설치
  • 민감한 데이터 접근
  • 네트워크의 다른 시스템으로 이동
  • 랜섬웨어 또는 암호화폐 채굴기 배포

사용 가능한 완화 조치

공급업체가 제공하는 커널 패치를 기다리는 동안 여러 완화 전략을 사용할 수 있습니다. cfDr는 시스템 구성을 기반으로 한 지능적인 권장 사항과 함께 이러한 모든 전략을 구현합니다.

보호 수준 이해하기

모든 완화 조치가 동일한 것은 아닙니다. 알아야 할 사항은 다음과 같습니다:

방법루트가 우회할 수 있나요?적용 범위엔터프라이즈 Linux 지원
모듈 블랙리스트✅ 예(insmod 통해)modprobe 로딩 방지모든 버전
SELinux 정책❌ 아니요(LSM 계층)구성된 도메인만모든 버전(기본값)
systemd seccomp❌ 아니요(시스콜 필터)구성된 서비스만모든 버전
eBPF LSM❌ 아니요(LSM 계층)시스템 전체(구성된 경우)RHEL 9+, Fedora 34+

권장 접근 방식: 심층 방어(Defense-in-Depth)

cfDr의 기본 권장 사항: 플래그 3(모듈 블랙리스트 + SELinux)

이 방식은 두 개의 독립적인 보호 계층을 제공합니다:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘

Result: If either layer fails, the other still protects

### 모듈 블랙리스트만으로는 충분하지 않은 이유

루트 권한을 가진 결심한 공격자는 모듈 블랙리스트를 우회할 수 있습니다:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz

그러나, 이는 허용 가능한 이유는 다음과 같습니다:

  1. 이 취약점은 권한 상승(비특권 → root)을 대상으로 합니다
  2. 공격자가 이미 root 권한을 보유한 경우, 모듈을 로드하지 않고도 직접 악용할 수 있습니다
  3. 모듈 블랙리스트는 주요 공격 벡터를 보호합니다

완전한 보호 전략

완전하고 우회 불가능한 보호를 위해서는 다음이 필요합니다:

모듈 블랙리스트 + 다음 중 하나 이상:

  • SELinux 정책(Enterprise Linux에 권장)
  • systemd seccomp 필터(서비스별 보호)
  • eBPF LSM 프로그램(RHEL 9+ 전용, 시스템 전체)

완화 플래그 참조

cfDr는 비트 플래그를 사용하여 여러 완화 조치를 활성화합니다:

플래그 값활성화된 완화 조치사용 사례
1모듈 블랙리스트만최소 보호, SELinux가 없는 시스템
2SELinux만SELinux 전용 환경
3모듈 블랙리스트 + SELinux권장 기본값
5모듈 블랙리스트 + seccompSELinux가 없는 서비스 강화 환경
7모듈 블랙리스트 + SELinux + seccomp강화된 보호
15모든 완화 조치최대 보호(RHEL 9+ 전용)

플래그 계산: 1(블랙리스트) + 2(SELinux) + 4(seccomp) + 8(eBPF) = 합계

알아두어야 할 적용 범위 공백

SELinux 보호:

  • 정책에 지정된 도메인만 적용: user_t, unconfined_t, httpd_t, postgresql_t, mysqld_t
  • 다른 SELinux 도메인에서 실행되는 프로세스는 보호되지 않을 수 있습니다
  • 실제로 user_t 및 unconfined_t는 대부분의 공격 시나리오를 포괄합니다

systemd seccomp 보호:

  • 명시적으로 구성된 서비스만 보호합니다
  • 기본 구성 적용 범위: httpd, nginx, postgresql, mariadb, redis, memcached
  • 이러한 서비스 외부의 프로세스는 보호되지 않습니다

eBPF LSM 보호:

  • 커널 5.7+ 필요(RHEL 9, Fedora 34+)
  • 올바르게 구현하려면 전문 지식이 필요합니다
  • 올바르게 구성하면 포괄적인 시스템 전체 보호를 제공할 수 있습니다

탐지 방법론

cfDr가 취약점을 탐지하는 방법

cfDr는 여러 차원에 걸쳐 포괄적인 평가를 수행합니다:

1. 커널 버전 확인```bash

uname -r

- 커널 버전이 4.10 이상인지 확인합니다 (취약 범위)
- 커널 릴리스 및 배포판을 식별합니다

#### 2. 모듈 사용 가능 여부 확인```bash
modinfo algif_aead
  • 커널에 algif_aead 모듈이 존재하는지 확인합니다
  • 모듈 위치와 메타데이터를 확인합니다

3. 모듈 로드 상태```bash

lsmod | grep algif_aead

- 모듈이 현재 로드되었는지 확인
- **중요**: 로드된 모듈 = 적극적으로 악용 가능

#### 4. 활성 소켓 탐지```bash
lsof -U | grep AF_ALG
  • 활성 AF_ALG 소켓 식별
  • 잠재적 활성 악용 가능성 표시

5. 기존 완화 조치 탐지

모듈 블랙리스트:```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf

**SELinux 정책**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny

systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies

#### 6. 범주형 상태 판정

cfDr는 각 호스트를 다음 상태 중 하나로 분류합니다:

| 상태 | 조건 | 필요한 조치 |
|--------|-----------|-----------------|
| **취약 - 모듈 로드됨** | 커널 >= 4.10, 모듈 존재 및 로드됨 | **즉시** - 실제 악용 가능 |
| **취약 - 모듈 존재** | 커널 >= 4.10, 모듈 존재, 로드되지 않음 | **높음** - 로드 및 악용 가능 |
| **완화됨 - 모듈 블랙리스트** | 블랙리스트 감지됨 | **낮음** - 모니터링, 추가 보안 계층 적용 |
| **보호됨 - 심층 방어** | 블랙리스트 + SELinux/seccomp/eBPF | **없음** - 완전히 보호됨 |
| **취약하지 않음 - 구형 커널** | 커널 < 4.10 | **없음** - 취약점 이전 버전 |
| **취약하지 않음 - 모듈 없음** | algif_aead 모듈이 커널에 없음 | **없음** - 모듈 사용 불가 |

### 평가 출력

각 호스트는 다음을 받습니다:
1. **콘솔 출력**: 한 줄 요약 상태
2. **상세 파일**: `/root/cve-2026-31431-assessment-<hostname>.txt`
3. **JSON 보고서**: `/tmp/cve-2026-31431-<hostname>.json`

간단한 출력 예시:```
webserver1.example.com: VULNERABLE - Module exists and can be loaded
dbserver2.example.com: PROTECTED - Defense-in-depth (Module Blacklist + SELinux)
appserver3.example.com: NOT VULNERABLE - Module not available

cfDr 작동 방식

아키텍처

cfDr은 여러 플레이북 진입점을 갖춘 현대적인 Ansible 역할로 구축되었습니다:``` cfDr/ ├── roles/ │ └── cve_2026_31431/ # Main role │ ├── tasks/ │ │ ├── main.yml # Role orchestration │ │ ├── assessment.yml # Vulnerability detection │ │ ├── remediation_module_blacklist.yml │ │ ├── remediation_selinux.yml │ │ ├── remediation_seccomp.yml │ │ ├── remediation_ebpf.yml │ │ ├── reporting.yml # Status reporting │ │ └── inventory_update.yml # Inventory generation │ ├── templates/ # Config file templates │ ├── defaults/ # Default variables │ └── handlers/ # Service restarts, etc. ├── quickstart.yml # Simplest usage ├── sample_playbook.yml # Multiple examples └── cve_2026_31431_playbook.yml # Full-featured playbook

### 실행 흐름
도구 다운로드