
Ansible 플레이북: CVE-2026-31431(Copy Fail) 탐지 및 수정 - Linux 커널 로컬 권한 상승 취약점
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에 대한 신뢰할 수 있는 해결책을 의미합니다.
CVE-2026-31431(CVSS 7.8)은 2026년에 발견된 Linux 커널의 AEAD 소켓 인터페이스(AF_ALG)의 논리적 결함입니다. 이 취약점을 통해 권한이 없는 모든 로컬 사용자가 몇 초 만에 루트 권한으로 상승할 수 있습니다.
algif_aead 커널 모듈(AF_ALG 암호화 인터페이스)커널 버전: Linux 커널 >= 4.10(2017년 출시)
영향을 받는 배포판:
참고: 커널 4.10 이상을 사용하는 모든 Linux 배포판은 잠재적으로 취약합니다.
이 취약점은 특히 다음과 같은 이유로 위험합니다:
공격자가 SSH, 웹 셸, 컨테이너 탈출 등 어떤 형태로든 로컬 액세스 권한을 얻으면 다음과 같은 행위가 가능합니다:
공급업체가 제공하는 커널 패치를 기다리는 동안 여러 완화 전략을 사용할 수 있습니다. cfDr는 시스템 구성을 기반으로 한 지능적인 권장 사항과 함께 이러한 모든 전략을 구현합니다.
모든 완화 조치가 동일한 것은 아닙니다. 알아야 할 사항은 다음과 같습니다:
| 방법 | 루트가 우회할 수 있나요? | 적용 범위 | 엔터프라이즈 Linux 지원 |
|---|---|---|---|
| 모듈 블랙리스트 | ✅ 예(insmod 통해) | modprobe 로딩 방지 | 모든 버전 |
| SELinux 정책 | ❌ 아니요(LSM 계층) | 구성된 도메인만 | 모든 버전(기본값) |
| systemd seccomp | ❌ 아니요(시스콜 필터) | 구성된 서비스만 | 모든 버전 |
| eBPF LSM | ❌ 아니요(LSM 계층) | 시스템 전체(구성된 경우) | RHEL 9+, Fedora 34+ |
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
그러나, 이는 허용 가능한 이유는 다음과 같습니다:
완전하고 우회 불가능한 보호를 위해서는 다음이 필요합니다:
모듈 블랙리스트 + 다음 중 하나 이상:
cfDr는 비트 플래그를 사용하여 여러 완화 조치를 활성화합니다:
| 플래그 값 | 활성화된 완화 조치 | 사용 사례 |
|---|---|---|
| 1 | 모듈 블랙리스트만 | 최소 보호, SELinux가 없는 시스템 |
| 2 | SELinux만 | SELinux 전용 환경 |
| 3 | 모듈 블랙리스트 + SELinux | 권장 기본값 |
| 5 | 모듈 블랙리스트 + seccomp | SELinux가 없는 서비스 강화 환경 |
| 7 | 모듈 블랙리스트 + SELinux + seccomp | 강화된 보호 |
| 15 | 모든 완화 조치 | 최대 보호(RHEL 9+ 전용) |
플래그 계산: 1(블랙리스트) + 2(SELinux) + 4(seccomp) + 8(eBPF) = 합계
SELinux 보호:
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t 및 unconfined_t는 대부분의 공격 시나리오를 포괄합니다systemd seccomp 보호:
httpd, nginx, postgresql, mariadb, redis, memcachedeBPF LSM 보호:
cfDr는 여러 차원에 걸쳐 포괄적인 평가를 수행합니다:
uname -r
- 커널 버전이 4.10 이상인지 확인합니다 (취약 범위)
- 커널 릴리스 및 배포판을 식별합니다
#### 2. 모듈 사용 가능 여부 확인```bash
modinfo algif_aead
algif_aead 모듈이 존재하는지 확인합니다lsmod | grep algif_aead
- 모듈이 현재 로드되었는지 확인
- **중요**: 로드된 모듈 = 적극적으로 악용 가능
#### 4. 활성 소켓 탐지```bash
lsof -U | grep AF_ALG
모듈 블랙리스트:```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은 여러 플레이북 진입점을 갖춘 현대적인 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
### 실행 흐름
#### 평가 모드 (기본값)```
1. Pre-flight checks
↓
2. Gather system facts
↓
3. Detect kernel version
↓
4. Check module availability
↓
5. Check current load status
↓
6. Check existing mitigations
↓
7. Determine vulnerability status
↓
8. Flag vulnerable hosts
↓
9. Generate reports
↓
10. Create summary
↓
11. [Optional] Generate inventory
apply_remediation=true)```1-8. [Same as Assessment Mode] ↓ 9. Apply Module Blacklist (if flag 1) • Unload module if loaded • Create blacklist config • Update initramfs/initrd • Verify blacklist works ↓ 10. Apply SELinux Policy (if flag 2) • Install policy packages • Compile policy module • Install policy • Verify policy active ↓ 11. Apply systemd seccomp (if flag 4) • Create drop-in files • Reload systemd • Restart services • Verify filters active ↓ 12. Apply eBPF LSM (if flag 8) • Compile eBPF program • Load into kernel • Verify program attached ↓ 13. Re-assess protection status ↓ 14. Generate reports ↓ 15. Create summary
### 수정 세부 사항
#### 모듈 블랙리스트 (플래그 1)
**기능**:
1. 현재 로드된 `algif_aead` 모듈을 언로드합니다 (`rmmod algif_aead`)
2. `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf` 파일을 생성합니다: ```
blacklist algif_aead
install algif_aead /bin/true
update-initramfs -udracut -fmodprobe를 통해 모듈을 로드할 수 없는지 확인합니다보호: 즉시 적용, 재부팅 불필요 지속성: 재부팅 및 커널 업데이트 후에도 유지됨
기능:
policycoreutilspolicycoreutils-python-utilsselinux-policy-develcheckpolicysemodule -i cve_2026_31431_af_alg_deny.pp보호 대상 도메인 (기본값):
user_t - 일반 사용자 프로세스unconfined_t - 비제한 프로세스httpd_t - Apache 웹 서버postgresql_t - PostgreSQL 데이터베이스mysqld_t - MySQL/MariaDB 데이터베이스보호: LSM 계층에서 차단, 우회 불가 지속성: 정책은 재부팅 후에도 유지됨
기능:
/etc/systemd/system/<service>.service.d/90-cve-2026-31431-block-af-alg.confRestrictAddressFamilies=~AF_ALG 지시문을 추가합니다보호 대상 서비스 (기본값):
httpd, nginx - 웹 서버postgresql, mariadb - 데이터베이스redis, memcached - 캐시 서버보호: 서비스별로 syscall 수준에서 소켓 생성을 차단 지속성: 재부팅 및 서비스 업데이트 후에도 유지됨
기능:
요구 사항:
CONFIG_BPF_LSM=y가 설정된 커널 5.7 이상보호: 동적이고 프로그래밍 가능한 시스템 전역 정책 지속성: 부팅 시 다시 로드하려면 시스템 서비스가 필요함
cfDr은 취약한 호스트만 포함하는 즉시 사용 가능한 인벤토리 파일을 생성할 수 있습니다:
생성된 파일:``` inventory_output/ ├── vulnerable_hosts.yml # YAML inventory ├── vulnerable_hosts.ini # INI inventory ├── group_vars_vulnerable_hosts.yml # Group variables └── host_vars/ ├── host1.yml # Per-host details └── host2.yml
**포함 내용**:
- 취약점 평가 결과
- 권장 완화 플래그(호스트별로 계산)
- 시스템 세부 정보(커널 버전, SELinux 상태)
- 즉시 적용 가능한 수정 설정
**지능형 권장 사항**:
- SELinux가 활성화된 경우 플래그 3(모듈 블랙리스트 + SELinux)
- SELinux를 사용할 수 없는 경우 플래그 1(모듈 블랙리스트만)
- 생성된 `host_vars`를 통해 호스트별로 사용자 지정 가능
---
## 시스템 암호화에 미치는 영향
### 중요 발견: 표준 RHEL 암호화는 영향을 받지 않음
**신뢰 수준**: ⭐⭐⭐⭐⭐ **높음** - 종합 분석은 [IPsec/XFRM 검증 보고서](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md) 참조
**Enterprise Linux 배포에 좋은 소식:** [CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/), [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches), [HPCsec](https://www.hpcsec.com/2026/04/30/advisory-cve-2026-31431-copy-fail-local-privilege-escalation-via-af-alg-algif_aead/)를 포함한 권위 있는 소스에 따르면, **cfDr의 완화 조치는 표준 RHEL 시스템 암호화 및 서비스에 최소한의 영향 또는 전혀 영향을 미치지 않습니다**.
### 영향을 받지 않는 항목
다음의 중요한 RHEL 암호화 시스템은 **AF_ALG를 사용하지 않으므로** 당사의 수정 조치에 완전히 영향을 받지 않습니다:
#### 핵심 시스템 서비스
| 서비스/구성 요소 | 기능 | 상태 |
|------------------|----------|--------|
| **dm-crypt / LUKS** | 전체 디스크 암호화 | ✅ 영향 없음 |
| **IPsec / XFRM** | VPN 및 암호화된 네트워킹 | ✅ 영향 없음 ([검증됨](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md)) |
| **kTLS** | 커널 TLS 구현 | ✅ 영향 없음 |
| **SSH** | 보안 셸 연결 | ✅ 영향 없음 |
#### 암호화 라이브러리
| 라이브러리 | 용도 | 상태 |
|---------|-------|--------|
| **OpenSSL** (기본값) | SSL/TLS, 인증서, 일반 암호화 | ✅ 영향 없음 |
| **GnuTLS** (기본값) | TLS 구현 | ✅ 영향 없음 |
| **NSS** | Mozilla 네트워크 보안 서비스 | ✅ 영향 없음 |
| **커널 키링** | 커널 키 관리 | ✅ 영향 없음 |
#### 중요 인프라
- ✅ **SSL/TLS** - 모든 웹 서버 암호화에 영향 없음
- ✅ **HTTPS** - 보안 웹 트래픽에 영향 없음
- ✅ **이메일 암호화** (S/MIME, PGP) - 영향 없음
- ✅ **인증서 작업** - 영향 없음
- ✅ **데이터베이스 암호화** - 영향 없음
- ✅ **백업 암호화** - 영향 없음
### 표준 서비스가 AF_ALG를 사용하지 않는 이유
[Linux 커널 암호화 문서](https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html)에 문서화된 바와 같이, **AF_ALG는 Linux 2.6.38에서 도입된 커널 암호화용 사용자 공간 소켓 인터페이스**입니다. 그러나 대부분의 RHEL 시스템 서비스는 AF_ALG 소켓 계층을 거치지 않고 커널 암호화 API를 **직접** 사용합니다.
[CERT-EU의 보안 권고](https://cert.europa.eu/publications/security-advisories/2026-005/)에 따르면:
> "dm-crypt / LUKS, kTLS, IPsec, SSH 및 기본 OpenSSL / GnuTLS 빌드는 AF_ALG에 의존하지 않으며 AF_ALG 제한의 영향을 받지 않습니다."
아키텍처는 다음과 같습니다:```
┌─────────────────────────────────────────────┐
│ Userspace Applications │
├─────────────────────────────────────────────┤
│ Standard Crypto Libraries │
│ (OpenSSL, GnuTLS, NSS) │
│ │ │
│ └─────> In-Kernel Crypto API ──────────┐ │
│ (Direct access) │ │
├──────────────────────────────────────────┼──┤
│ AF_ALG Socket Interface (RARELY USED) │ │
│ │ │ │
│ └─────> In-Kernel Crypto API ──────────┘ │
├─────────────────────────────────────────────┤
│ Kernel Crypto Subsystem │
│ (AES, SHA, AEAD algorithms) │
└─────────────────────────────────────────────┘
Standard services bypass AF_ALG entirely
R-fx Networks 분석에 따르면:
"대부분의 HPC 환경에서는 아무것도 깨지지 않습니다. AF_ALG는 거의 아무도 사용하지 않는 커널 암호화의 사용자 공간 프런트 도어입니다."
다음과 같은 극히 드문 구성만 영향을 받을 수 있습니다:
RHEL에서 기본값이 아님. afalg 엔진은 명시적으로 구성해야 합니다:```bash
openssl engine afalg
**사용 사례:** 하드웨어 암호화 가속 오프로드
**보급률:** 표준 배포 환경에서 극히 드묾
**영향:** 애플리케이션이 소프트웨어 암호화로 폴백
#### 2. libkcapi를 사용하는 사용자 지정 애플리케이션
전용 라이브러리를 사용한 **직접 AF_ALG 소켓 프로그래밍**.
**사용 사례:** 특수 보안 도구 또는 사용자 지정 암호화 애플리케이션
**보급률:** 표준 엔터프라이즈 환경에서 거의 존재하지 않음
**영향:** 애플리케이션별로 다르며, 코드 수정 필요
#### 3. 하드웨어 암호화 오프로드 도구
하드웨어 가속을 위해 AF_ALG를 사용하는 **전문 도구**.
**사용 사례:** 고성능 컴퓨팅, 암호화 하드웨어 가속기
**보급률:** 특수 고보안 또는 HPC 환경에서만 사용
**영향:** 소프트웨어 암호화로 폴백
### Red Hat 공식 입장
[Red Hat Bugzilla #2460538](https://bugzilla.redhat.com/show_bug.cgi?id=2460538)에 따르면:
- **CVE:** CVE-2026-31431
- **심각도:** 높음 (CVSS 7.8)
- **상태:** 커널 6.19.12+에서 수정됨
- **수정 내용:** 2017년 제자리(in-place) 최적화 되돌림 (커밋 72548b093ee3)
- **영향:** "algif_aead에서 제자리(in-place) 작업은 소스와 대상이 서로 다른 매핑에서 오므로 이점이 없음"
### 완화 플래그별 영향 평가
| 플래그 | 완화 조치 | 표준 서비스에 미치는 영향 |
|------|------------|----------------------------|
| 1 | 모듈 블랙리스트 | ✅ 영향 없음 - AF_ALG 미사용 |
| 2 | SELinux 정책 | ✅ 영향 없음 - 미사용 syscall 차단 |
| **3** | **블랙리스트 + SELinux** | ✅ **영향 없음 - 권장** |
| 5 | 블랙리스트 + seccomp | ✅ 영향 없음 - 서비스별 안전 |
| 7 | 블랙리스트 + SELinux + seccomp | ✅ 영향 없음 - 심층 방어 |
| 15 | 모든 완화 조치 | ✅ 영향 없음 - 최대 보호 |
### 완화 후 검증
cfDr 완화 조치 적용 후, 중요 서비스가 계속 정상 작동하는지 검증하십시오:```bash
# Test SSH connectivity
ssh localhost echo "SSH working"
# Test HTTPS (if web server running)
curl -k https://localhost
# Test LUKS encryption (if using encrypted volumes)
cryptsetup status /dev/mapper/luks-volume
# Test IPsec (if VPN configured)
ipsec status
# Test system services
systemctl status sshd
systemctl status httpd
systemctl status postgresql
# Check for any service failures
systemctl --failed
예상 결과: 모든 서비스가 정상적으로 계속 작동합니다.
여러 권위 있는 보안 기관이 우리의 평가를 확인했습니다:
CERT-EU (2026년 4월 30일):
"dm-crypt / LUKS, kTLS, IPsec, SSH 및 기본 OpenSSL / GnuTLS 빌드는 AF_ALG에 의존하지 않습니다"
Sysdig (2026년 4월 29일):
표준 암호화 작업이 AF_ALG 소켓이 아닌 커널 내부 API를 사용한다고 문서화
R-fx Networks (2026년 5월 2일):
"호스팅 워크로드는 AF_ALG를 정당하게 사용하지 않으므로, 프로덕션 서비스에 영향을 주지 않고 완화 조치로 비활성화하는 것이 안전합니다"
HPCsec (2026년 4월 30일):
"대부분의 HPC 환경에서 이는 아무것도 깨뜨리지 않습니다 – AF_ALG는 실제로 거의 아무도 사용하지 않는 커널 암호화의 사용자 공간 전면 도어입니다"
표준 RHEL/CentOS/Fedora 환경의 경우:
의사 결정 매트릭스:
| 환경 | 권장 사항 | 이유 |
|---|---|---|
| 표준 RHEL 서버 | 지금 플래그 3 배포 | 제로 영향, 즉각적인 보호 |
| 사용자 지정 암호화가 있는 RHEL | 먼저 AF_ALG 사용 감사 | 극히 드물지만 확인 필요 |
| 개발 시스템 | 지금 플래그 3 배포 | 프로덕션과 동일 |
| 고보안 환경 | 플래그 7 또는 15 배포 | 최대 심층 방어 |
cfDr의 완화 조치는 모든 표준 RHEL 배포에 안전합니다. algif_aead 모듈과 AF_ALG 소켓 인터페이스는 Enterprise Linux 시스템의 중요한 시스템 암호화에 사용되지 않습니다.
이것이 의미하는 바:
유일한 이론적 위험은 AF_ALG 소켓을 사용하도록 명시적으로 프로그래밍된 사용자 지정 애플리케이션입니다. 이는 여러 보안 기관이 엔터프라이즈 환경에서 AF_ALG 차단이 안전하다고 독립적으로 확인할 만큼 극히 드문 시나리오입니다.
이 워크플로우는 철저함과 운영 안전성의 균형을 유지합니다:
ansible-playbook -i inventory quickstart.yml
**발생 상황**:
- 모든 호스트가 평가됩니다
- 변경 사항은 없습니다
- 보고서가 생성됩니다
**검토**:
- 각 호스트에서 `/root/cve-2026-31431-assessment-<hostname>.txt` 확인
- 요약 출력 검토
- 취약한 호스트 식별
**예상 출력**:```
CVE-2026-31431 Summary Report
==========================================
Total hosts scanned: 50
Vulnerable hosts: 12
VULNERABLE HOSTS REQUIRING REMEDIATION:
web1.example.com, web2.example.com, db1.example.com, ...
DEFAULT RECOMMENDED MITIGATION: Flag 3
- Module Blacklist (1) + SELinux (2) = Defense-in-depth
- Module Blacklist alone can be bypassed by root (via insmod)
- SELinux blocks syscall even if blacklist is bypassed
- Covers user_t/unconfined_t (vast majority of scenarios)
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true -e inventory_output_dir=./vulnerable_hosts
**발생하는 작업**:
- 취약한 호스트 식별
- 호스트별 권장 완화 플래그 계산
- 인벤토리 파일 생성
**검토**:```bash
# Check generated inventory
cat vulnerable_hosts/vulnerable_hosts.yml
# Review per-host recommendations
ls vulnerable_hosts/host_vars/
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'dev*:test*'
**무슨 일이 일어나는가**:
- 완화 조치는 테스트/개발 호스트에만 적용됨
- 서비스 재시작됨(seccomp용)
- 검증 수행됨
**검증**:```bash
# Re-scan test hosts
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml quickstart.yml --limit 'dev*:test*'
# Check for "PROTECTED - Defense-in-depth" status
테스트 애플리케이션:
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'web*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'app*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'db*'
**발생 상황**:
- 각 계층이 개별적으로 조치됨
- 서비스가 한 번에 한 계층씩 재시작됨
- 단계별 검증이 가능함
**단계 사이 모니터링**:
- 서비스 가용성 확인
- 애플리케이션 로그 검토
- 사용자 경험 검증
#### 5단계: 검증 및 문서화```bash
# Final assessment of all hosts
ansible-playbook -i inventory quickstart.yml
문서:
Total hosts scanned: 50 Vulnerable hosts: 0
All hosts protected with defense-in-depth mitigations
### 긴급 대응 워크플로우
**적극적으로 악용된** 시스템 또는 **즉각적인 위협**의 경우:```bash
# Immediate assessment and remediation
ansible-playbook -i inventory quickstart.yml -e apply_remediation=true -e mitigation_flags=3
# Re-verify all hosts
ansible-playbook -i inventory quickstart.yml
다음과 같은 경우 이 접근 방식을 사용하세요:
주의: 이는 모든 취약한 호스트에 동시에 완화 조치를 적용합니다. 면밀히 모니터링하세요.
지속적 규정 준수 및 새 시스템 탐지를 위해:```bash
0 2 * * 0 ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
**통합 대상**:
- 구성 관리 데이터베이스(CMDB)
- 보안 정보 및 이벤트 관리(SIEM)
- 수정 추적을 위한 티켓팅 시스템
### 사용자 지정 완화 워크플로
Flag 3을 넘어서는 **특정 요구 사항**의 경우:```bash
# Use enhanced protection (Flag 7: Blacklist + SELinux + seccomp)
ansible-playbook -i inventory quickstart.yml \
-e apply_remediation=true \
-e mitigation_flags=7
# Or customize per-host via inventory
# Edit generated host_vars/*.yml files to set custom flags
vim vulnerable_hosts/host_vars/web1.example.com.yml
# Change: recommended_mitigation_flags: 7
# Apply customized settings
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
수정 후 보호 상태를 검증하세요:```bash
sudo lsmod | grep algif_aead
sudo modprobe algif_aead
cat /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf
sudo semodule -l | grep cve_2026_31431
systemctl show httpd | grep RestrictAddressFamilies
---
## 빠른 시작
즉시 시작하고 싶은 사용자를 위한 안내입니다:
### 가장 간단한 사용법```bash
# Clone repository
git clone https://github.com/parmstro/cfDr.git
cd cfDr
# Step 1: Assess all hosts
ansible-playbook -i inventory quickstart.yml
# Step 2: Apply recommended mitigations to vulnerable hosts
ansible-playbook -i inventory quickstart.yml --limit vulnerable_hosts -e apply_remediation=true
ansible-playbook -i /path/to/your/inventory quickstart.yml
ansible-playbook -i /path/to/your/inventory quickstart.yml
--limit vulnerable_hosts
-e apply_remediation=true
### 취약점 인벤토리 생성```bash
# Scan and create inventory of vulnerable hosts
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
# Review generated files
ls inventory_output/
# Apply mitigations using generated inventory
ansible-playbook -i inventory_output/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
플레이북 실행별로 기본 완화 설정을 재정의합니다:```bash
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=1
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=2
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=3
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=7
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=15
### SELinux 도메인 사용자 지정
`roles/cve_2026_31431/defaults/main.yml`을 편집합니다:```yaml
# Add additional domains to protect
selinux_denied_domains:
- user_t
- unconfined_t
- httpd_t
- postgresql_t
- mysqld_t
- custom_app_t # Your custom domain
- another_service_t
roles/cve_2026_31431/defaults/main.yml을 편집합니다:```yaml
seccomp_protected_services:
### 사용자 지정 인벤토리 출력 디렉터리```bash
# Specify custom output location
ansible-playbook quickstart.yml \
-e generate_inventory=true \
-e inventory_output_dir=/path/to/output
sample_playbook.yml에는 여러 예제가 포함되어 있습니다:```yaml
### 요구 사항
- **Ansible**: 2.9 이상 (2.15+ 권장)
- **권한 있는 접근**: 대상 호스트에서 sudo/root
- **Python**: 대상 호스트에서 2.7 또는 3.5+
- **지원 OS**: Red Hat Enterprise Linux, CentOS, Fedora (Debian/Ubuntu는 제한적 지원)
---
## 추가 리소스
### CVE 정보 및 분석
**공식 출처**:
- [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [MITRE CVE 항목](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
**보안 연구 및 분석**:
- [Sysdig - CVE-2026-31431 분석](https://www.sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds)
- [The Hacker News - Copy Fail 취약점](https://thehackernews.com/2026/04/new-linux-copy-fail-vulnerability.html)
- [CERT-EU 보안 권고](https://cert.europa.eu/publications/security-advisories/2026-005/)
- [Help Net Security - Copy Fail 세부 정보](https://www.helpnetsecurity.com/2026/04/30/copyfail-linux-lpe-vulnerability-cve-2026-31431/)
### 관련 완화 프로젝트
CVE-2026-31431 완화에 대한 커뮤니티 기여:
- **[block-copyfail](https://github.com/atgreen/block-copyfail)** - Anthony Green의 eBPF LSM 구현
- 포괄적인 eBPF 기반 완화
- 최신 커널을 위한 시스템 전반의 보호
- cfDr의 eBPF 구현 소스
- **[Blastwall](https://gprocunier.github.io/blastwall/demo.html)** - Greg Procunier의 SELinux 정책 프레임워크
- 고급 SELinux 정책 관리
- 다중 CVE 보호 프레임워크
- cfDr의 SELinux 구현 소스
### Red Hat 특정 리소스
**지식 베이스 문서**:
- [Red Hat 고객 포털 - CVE-2026-31431](https://access.redhat.com/security/cve/cve-2026-31431)
- [Red Hat 보안 데이터 - 영향받는 제품](https://access.redhat.com/security/data/metrics/)
**완화 가이드**:
- [Enterprise Linux용 SELinux - 사용자 가이드](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/)
- [systemd 보안 기능](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/securing-systemd-services_system-management-using-the-rhel-9-web-console)
### 문서
**cfDr 확장 문서**:
- [Enterprise Linux 완화 가이드](https://github.com/parmstro/cfdr/blob/HEAD/enterprise-linux-mitigations.md) - 모든 완화 방법의 포괄적 비교
- [SELinux 완화 가이드](https://github.com/parmstro/cfdr/blob/HEAD/selinux-mitigation.md) - 상세 SELinux 정책 구현
- [seccomp 완화 가이드](https://github.com/parmstro/cfdr/blob/HEAD/seccomp-mitigation.md) - systemd seccomp 필터 구현
- [eBPF LSM 완화 가이드](https://github.com/parmstro/cfdr/blob/HEAD/ebpf-lsm-mitigation.md) - eBPF LSM 프로그램 구현
- [docs/CONTRIBUTORS.md](https://github.com/parmstro/cfdr/blob/HEAD/CONTRIBUTORS.md) - 기여 지침 및 크레딧
**Ansible 문서**:
- [Ansible 사용자 가이드](https://docs.ansible.com/ansible/latest/user_guide/)
- [Ansible 모범 사례](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
---
## 패치 모니터링
### Red Hat Enterprise Linux
**주요 출처**: Red Hat 고객 포털
- **보안 권고**: https://access.redhat.com/security/security-updates/
- **Errata 권고**: https://access.redhat.com/errata/
- **CVE 추적기**: https://access.redhat.com/security/cve/cve-2026-31431
**알림 방법**:
1. **이메일 알림** (권장):
- Red Hat 고객 포털에 로그인
- 이동: 계정 설정 → 알림
- 활성화: "보안 권고" 및 "제품 Errata"
- 선택: 관리 중인 RHEL 버전
2. **RSS 피드**:
- RHEL 7 보안: https://access.redhat.com/blogs/766093/feed
- RHEL 8 보안: https://access.redhat.com/blogs/1683903/feed
- RHEL 9 보안: https://access.redhat.com/blogs/5480361/feed
- 전체 보안: https://access.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
3. **API 접근**: ```bash
# Check for kernel security updates
curl -H "Accept: application/json" \
"https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json"
자동 모니터링: ```bash
sudo yum install yum-plugin-security
sudo yum updateinfo list security
sudo yum updateinfo list security kernel
찾아야 할 항목:
권고 형식 예시:``` RHSA-2026:XXXX - Important: kernel security update Severity: Important CVEs: CVE-2026-31431 Affected Products: RHEL 7, 8, 9
### CentOS / Rocky Linux / AlmaLinux
**CentOS Stream**:
- **공지사항**: https://lists.centos.org/pipermail/centos-announce/
- **보안 메일링 리스트**: https://lists.centos.org/mailman/listinfo/centos-security-announce
**Rocky Linux**:
- **보안 추적기**: https://errata.rockylinux.org/
- **공지사항**: https://rockylinux.org/news/
**AlmaLinux**:
- **Errata**: https://errata.almalinux.org/
- **보안**: https://wiki.almalinux.org/security/
### Fedora
**주요 소스**: Fedora 프로젝트
- **업데이트 시스템**: https://bodhi.fedoraproject.org/
- **보안 목록**: https://lists.fedoraproject.org/archives/list/[email protected]/
**알림 방법**:```bash
# Subscribe to security announcements
# Visit: https://lists.fedoraproject.org/admin/lists/security-announce.lists.fedoraproject.org/
# Check for updates
sudo dnf check-update kernel
# View available security updates
sudo dnf updateinfo list security
기본 소스: Ubuntu 보안 공지
알림 방법:```bash
sudo apt update sudo apt list --upgradable | grep security
sudo apt install ubuntu-security-tools usn list --cve CVE-2026-31431
### Debian
**기본 소스**: Debian 보안 추적기
- **보안 추적기**: https://security-tracker.debian.org/tracker/CVE-2026-31431
- **보안 공지**: https://www.debian.org/security/
**알림 방법**:```bash
# Subscribe to Debian Security Announcements
# Visit: https://lists.debian.org/debian-security-announce/
# Check for security updates
sudo apt update
sudo apt list --upgradable
기본 소스: SUSE Security
알림 방법:```bash
sudo zypper list-patches --category security
sudo zypper info --cve CVE-2026-31431
### 업스트림 커널
**리눅스 커널 메일링 리스트**:
- **LKML 아카이브**: https://lkml.org/
- **보안 목록**: https://www.kernel.org/category/releases.html
**Git 저장소**:```bash
# Monitor kernel git for patches
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
# Search for CVE-2026-31431 patches
git log --all --grep="CVE-2026-31431"
사용자 환경을 위한 모니터링 스크립트를 생성합니다:```bash #!/bin/bash
DISTRO=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
case $DISTRO in rhel|centos|rocky|alma) yum updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; fedora) dnf updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; ubuntu|debian) apt-get update -qq apt-cache show linux-image-$(uname -r) | grep CVE-2026-31431 ;; sles|opensuse*) zypper info --cve CVE-2026-31431 kernel-default ;; esac
curl -s "https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json" |
jq -r '.affected_release[] | select(.package | startswith("kernel")) |
"(.product_name): (.advisory) - (.package)"'
**cron으로 일정 예약하기**:```bash
# Check daily for patches
0 6 * * * /usr/local/bin/check-cve-2026-31431-patch.sh | mail -s "CVE-2026-31431 Patch Check" [email protected]
패치 사용 가능 여부 확인: ```bash
sudo yum check-update kernel # RHEL/CentOS/Fedora sudo apt update && apt list --upgradable linux-image-* # Ubuntu/Debian
릴리스 노트 검토:
비프로덕션 환경에서 테스트: ```bash
sudo yum update kernel # RHEL/CentOS/Fedora sudo apt upgrade linux-image-* # Ubuntu/Debian sudo reboot
패치 효과 검증: ```bash
uname -r
ansible-playbook -i inventory quickstart.yml
프로덕션 롤아웃 계획:
임시 완화 조치 제거 (선택 사항): ```bash
sudo rm /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf sudo semodule -r cve_2026_31431_af_alg_deny # SELinux policy
권장 사항: 커널 패치 이후에도 향후 취약점으로부터 보호하기 위해 심층 방어 완화 조치를 유지하는 것을 고려하세요.
버그를 발견했거나 기능 요청이 있으신가요?
기여를 환영합니다! docs/CONTRIBUTORS.md에서 다음 내용을 확인하세요:
cfDr은 보안 전문가들의 집단적 전문성을 바탕으로 구축되었습니다:
전체 기여 세부 사항은 docs/CONTRIBUTORS.md를 참조하세요.
이 프로젝트는 취약점 평가 및 수정 목적을 위해 MIT 라이선스로 제공됩니다.
자세한 내용은 LICENSE를 참조하세요.
중요: 이 도구는 공급업체가 제공하는 커널 패치를 기다리는 동안 임시 완화 조치를 제공합니다. 이러한 완화 조치는 위험을 크게 줄이지만 모든 시나리오에서 완전한 보호를 보장하지는 않을 수 있습니다.
cfDr은 보증 없이 "있는 그대로" 제공됩니다. 항상 다음을 준수하세요:
cfDr의 기여자와 관리자는 이 도구 사용으로 인한 손상이나 데이터 손실에 대해 책임을 지지 않습니다.
최종 업데이트: 2026-05-02T23:30:00Z