
Linux 커널에서 CVE-2026-31431(Copy Fail) 탐지 및 완화 도구 모음입니다. Phalanx-CCS 및 Silent4Labs 스크립트와 서버 전반에 임시 완화 조치(algif_aead 모듈 차단 또는 부팅 파라미터)를 적용하는 Ansible 플레이북을 포함합니다.
이 패키지는 영향을 받는 커널(4.146.12.84, 6.136.18.21 등)을 실행하는 Linux 시스템에서 CVE-2026-31431 취약점(일명 Copy Fail)을 탐지 및 완화하기 위한 자동화된 솔루션을 제공합니다.
도구 구성:
mitigate_copyfail.sh):
CONFIG_CRYPTO_USER_API_AEAD=m|y).=m): /etc/modprobe.d/disable-algif-aead.conf를 생성하고 install algif_aead /bin/false를 포함하며 모듈을 언로드합니다(rmmod).=y): 커널 부트 파라미터 를 추가합니다(재부팅 필요).initcall_blacklist=algif_aead_initmitigation.yml):
중요 참고: 이 완화는 임시적입니다. 영구적인 해결책은 패치
a664bf3d603d가 포함된 커널 버전(≥6.18.22, ≥6.19.12 또는 ≥7.0)으로 업그레이드하는 것입니다.
become: yes 포함)sudo 권한 (완화 적용을 위해)탐지 스크립트(Phalanx-CCS 및 Silent4Labs)는 안전하며 취약점을 악용하지 않고 공격 표면만 확인합니다.
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # Unified script (detection + mitigation)
│ ├── check_copyfail.py # Phalanx-CCS (reachability checker)
│ └── check-copyfail.sh # Silent4Labs (risk assessment)
├── ansible/
│ ├── ansible.cfg # (optional) Ansible configuration
│ ├── inventory.ini # Server inventory
│ └── mitigation.yml # Main playbook
└── resultados_cve/ # Auto‑generated folder for logs
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)원격 서버 예시:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # if using password for sudo
mitigation.yml에서 Copy scripts to remote 작업은 src: "../scripts/{{ item }}"을 사용합니다. 상대 경로가 올바른지 확인하거나 레이아웃에 따라 수정하십시오.
ansible/ 디렉토리에서:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k는 SSH 비밀번호를 묻습니다.-K는 become(sudo) 비밀번호를 묻습니다.ansible_connection=local로 localhost를 사용하는 경우 SSH가 필요하지 않습니다.
플레이북은 다음과 유사한 일반 텍스트 요약을 표시합니다:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
또한 전체 스크립트 출력(날짜, 커널 버전, 탐지 메시지 등)이 포함된 로그 파일이 resultados_cve/<hostname>_mitigation.log에 저장됩니다.
추출된 값에 ? 또는 Not detected가 표시되면 mitigation.yml에서 디버그 작업을 활성화하십시오:
when: false를 when: true로 변경합니다(또는 clean_stdout 및 정규식 출력을 보려면 when: true로 설정).작업 Create local results directory 및 Save full output to local file을 편집하십시오:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
복사 작업을 주석 처리하고 Run mitigation script 작업의 경로를 기존 위치를 가리키도록 조정하십시오.
마지막 작업(Clean up remote scripts)에서 when: false를 when: true로 변경하십시오.
initcall_blacklist)를 통한 완화는 적용되려면 재부팅이 필요합니다. 플레이북은 자동으로 재부팅하지 않으며 유지보수 기간을 계획해야 합니다.CONFIG_CRYPTO_USER_API_AEAD=y(내장 커널) 시스템에서는 rmmod로 모듈을 언로드할 수 없습니다. 유일한 방법은 부트 파라미터입니다./proc/crypto 및 /boot/config-*를 읽기 위해 권한이 필요할 수 있습니다. become: yes로 실행됩니다.이 프로젝트는 MIT 라이선스 하에 배포됩니다. 타사 스크립트(Phalanx-CCS, Silent4Labs)는 각각의 라이선스를 유지합니다.
이 도구가 유용하다면 GitHub에서 별을 눌러 주시기 바랍니다!