
CVE-2026-31431 (Copy Fail)용 SSH 보안 태세 도우미: 커널 및 algif_aead 인벤토리
Bash 헬퍼: 호스트를 발견한 후(선택적으로 nmap을 통한 CIDR), SSH 읽기 전용 검사로 CVE-2026-31431(Copy Fail / algif_aead), CVE-2026-31677 / CVE-2026-43077(AF_ALG RX 휴리스틱), CVE-2026-23111(nftables + 사용자 네임스페이스), CVE-2026-23102(arm64 SVE/SME)를 확인합니다. 휴리스틱 전용 — 익스플로잇이 아니며 배포사와 확인하세요.
민감 정보 취급: 디스크에 비밀번호 파일이 저장되고, 출력에는 호스트 및 커널 상태가 나열됩니다.
| 구성 요소 | 사용 시점 |
|---|---|
bash, ssh, sshpass | 항상 |
nmap | CIDR 대상: nmap -sn -PS22에 필요. COPYFAIL_PREAUTH_NMAP=1(기본값)로 설정하면 SSH 배너 이후 호스트별 **nmap -p22 -sV**도 실행합니다 — 느리지만 macOS/Windows 식별에 도움이 됩니다. **COPYFAIL_PREAUTH_NMAP=0**으로 설정하면 호스트별 nmap을 건너뜁니다(CIDR 스캔에는 여전히 nmap 필요). |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsuser:password 하나씩 (오직 첫 번째 :만 사용자와 비밀번호를 구분합니다).600 필수: sudo chmod 600 /etc/copyfail-credssudo**로 스크립트를 실행하세요(또는 사용자로 chown한 뒤 여전히 600 유지).CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR, 단일 IP/호스트명, 또는 호스트 목록 파일 경로(# 주석 허용). 대상을 생략하면 스크립트 기본값을 사용합니다(copyfail_scan.sh의 TARGET= 참조).
chmod +x copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh 192.168.1.0/24
CREDS_FILE=~/creds ./copyfail_scan.sh ./hosts.txt
출력: stdout 전용(보고서 파일 없음). 저장하려면 tee를 사용하세요. 호스트별 줄 다음에: === Summary report ===(COPYFAIL_SUMMARY=0이 아닌 경우) — 양호로 확인됨 vs 검토 필요; 동일한 요약 줄을 공유하는 호스트는 병합됩니다(쉼표로 구분된 레이블).
# Example: no per-host nmap, sequential
COPYFAIL_PREAUTH_NMAP=0 COPYFAIL_PARALLEL=1 sudo ./copyfail_scan.sh 192.168.54.93
31431 PATCHED, 31431 VULN - MITIGATED, 31431 NO algif_aead - VERIFY, [SKIP] / [SKIP - PRE-AUTH] 같은 태그는 스크립트 휴리스틱입니다. 23111= / 23102= 후미 필드는 nftables/user-ns 및 arm64 SVE 프로브 결과를 요약합니다.*-pve / 벤더 커널: uname -r이 업스트림 NVD 튜플과 일치하지 않을 수 있습니다 — 이 스크립트만으로 판단하지 말고 배포판/Proxmox 보안 공지 및 설치된 커널 패키지를 사용하세요.echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — LICENSE 참조.
| 변수 | 기본값 | 역할 |
|---|
CREDS_FILE | /etc/copyfail-creds | user:password 파일 |
COPYFAIL_PREAUTH | 1 | TCP/22 SSH 배너; 로그인 전 명백한 비-Linux 호스트 건너뛰기 |
COPYFAIL_PREAUTH_NMAP | 1 | 배너가 불확실할 때 추가 nmap -p22 -sV(느림) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = 사전 인증 건너뛸 때 잘린 배너 표시 |
COPYFAIL_PARALLEL | 24 | 최대 동시 프로브 수(1 = 순차) |
COPYFAIL_ORDERED_OUTPUT | 1 | 병렬 처리 시 프로브 순서대로 줄 버퍼링(0 = 인터리브) |
COPYFAIL_PTR_LOOKUP | 1 | nmap/목록에 이름이 없을 때 getent로 IPv4 역방향 DNS |
COPYFAIL_SUMMARY | 1 | 그룹화된 최종 요약 출력(0 = 건너뛰기) |
COPYFAIL_BANNER_TIMEOUT | 3 | 포트 22에서 SSH 식별을 기다리는 시간(초) |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout(초) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | 사전 인증에서 배너가 없으면 SSH 시도 건너뛰기(배너가 매우 느리면 0) |