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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-31431-mitigation-suite — 커널 런타임 방어 프레임워크로, AF_ALG 취약점을 대상으로 하며 eBPF 소켓 추적, Ansible 강화, 드리프트 탐지를 위한 암호화 감사 도구를 제공합니다. | Kitploit
도구/GitHubGitHub/mahdi13830510/cve-2026-31431-mitigation-suite
Cloud Infrastructure SecurityDefensive ToolsConfiguration AuditingDevSecOpsIntrusion DetectionIncident ResponseAnomaly Detection
GitHubmahdi13830510/cve-2026-31431-mitigation-suite

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-31431-mitigation-suite

커널 런타임 방어 프레임워크로, AF_ALG 취약점을 대상으로 하며 eBPF 소켓 추적, Ansible 강화, 드리프트 탐지를 위한 암호화 감사 도구를 제공합니다.

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

AF_ALG 방어 프레임워크

CI License

Linux AF_ALG(주소 패밀리 알고리즘, 패밀리 38) 서브시스템을 위한 커널 런타임 방어 프레임워크입니다. 제로 트러스트가 네트워크 경계에서 멈추지 않고 커널 내부로 확장되어야 하는 엔터프라이즈 Linux 플릿을 운영하는 보안 운영 센터(SOC)를 위해 구축되었습니다.

AF_ALG가 SOC에 중요한 이유

AF_ALG는 소켓 인터페이스(socket(AF_ALG, SOCK_SEQPACKET, 0))를 통해 커널 암호화 API를 사용자 공간에 노출합니다. 원래 /dev/crypto가 없는 임베디드 시스템을 위해 추가되었으며, 이후 권한이 없는 호출자에게 커널 모드 암호화 코드를 노출하기 때문에 커널 CVE에서 불균형적으로 큰 비중을 차지하게 되었습니다 — 전형적인 공격 표면 불일치입니다.

일반적인 엔터프라이즈 빌드에서:

  • 이를 필요로 하는 사용자 공간 애플리케이션은 거의 없습니다. OpenSSL, GnuTLS, libsodium 및 systemd-cryptsetup은 모두 기본적으로 다른 경로를 사용합니다.
  • 공격자들은 이에 관심이 있습니다. 사용자 네임스페이스를 사용할 수 있을 때 권한이 없는 컨테이너에서 접근할 수 있기 때문에 권한 상승 체인(CVE-2019-8912, CVE-2017-13215 등)에서 반복적으로 활용되는 지점입니다.
  • 대부분의 EDR에는 보이지 않습니다. connect(), bind() 또는 DNS를 후킹하는 엔드포인트 도구는 아무것도 볼 수 없습니다 — AF_ALG 트래픽은 커널을 벗어나지 않기 때문입니다.

이 프레임워크는 모든 AF_ALG 소켓 생성을 고신호 이벤트로 취급하고 해당 이벤트를 악용 가능하게 만드는 공격 표면을 줄입니다.

위협 모델 및 제로 트러스트 매핑

저장소 구조

root@kitploit:~
.
├── ebpf/                  런타임 관측성 (BCC 트레이서 + 허용 목록)
├── ansible/               코드형 구성 (sysctl + systemd drop-in)
├── systemd/               Ansible이 없는 호스트용 독립 systemd drop-in
├── auditor/               커널 상태 감사자 (Python)
├── schemas/               감사 보고서 수집용 JSON Schema
├── scripts/               헬퍼 셸 스크립트 (CI에서 린트)
├── tests/                 단위 테스트 + 보고서 픽스처
└── .github/workflows/     CI: shellcheck + JSON 스키마 검증 + 린트

구성 요소

1. 런타임 관측성 — eBPF 트레이서

ebpf/af_alg_tracer.py는 security_socket_create에 kprobe를 연결합니다. 프로브는 BPF 프로그램 수준에서 family == 38을 필터링하여 검증기가 관련 없는 소켓 생성을 가지치기하고 이벤트당 오버헤드를 나노초 단위로 유지합니다. 시도당 하나의 JSON 레코드를 출력합니다:

root@kitploit:~
{
  "@timestamp": "2026-05-02T09:14:11.412041+00:00",
  "event": {"category": "kernel", "action": "af_alg_socket_create", "severity": "high"},
  "process": {"pid": 1394, "tgid": 1394, "comm": "suspicious_bin"},
  "user": {"uid": 1000, "gid": 1000},
  "socket": {"family": 38, "family_name": "AF_ALG", "type": 5, "protocol": 0},
  "host": {"name": "web-prod-04"}
}

stdout을 Vector, Fluent Bit 또는 journald(systemd-cat 경유)로 파이프하세요. comm 이름 허용 목록(/etc/af-alg-defense/allow.list)은 알려진 정상 소비자를 억제하면서도 변칙 탐지 능력을 잃지 않습니다.

kprobe 대상은 LSM 후크이므로 이벤트는 의도에 따라 발생합니다 — seccomp나 RestrictAddressFamilies에 의해 거부될 시도조차도 레코드를 생성합니다. 이것이 바로 SOC가 행동 기준선 설정을 위해 원하는 것입니다.

2. 코드형 구성 — Ansible 역할 + systemd drop-in

ansible/roles/af_alg_hardening/은 두 가지 하드닝 계층을 적용합니다:

Sysctl drop-in (/etc/sysctl.d/90-af-alg-defense.conf):

  • kernel.unprivileged_userns_clone=0 — 대부분의 AF_ALG 권한 상승 체인이 사용하는 userns 피벗 제거.
  • user.max_user_namespaces=0 — 배포판 이식 가능한 심층 방어.

Systemd drop-in (/etc/systemd/system/<unit>.d/50-af-alg-restrict.conf): RestrictAddressFamilies를 거부 목록이 아닌 허용 목록으로 사용합니다. 유닛은 AF_UNIX AF_INET AF_INET6 AF_NETLINK만 허용되며, AF_ALG를 포함한 다른 모든 패밀리는 애플리케이션이 비활성화할 수 없는 cgroup 연결 BPF를 통해 systemd가 강제하므로 EAFNOSUPPORT로 실패합니다. drop-in은 또한 CAP_SYS_ADMIN을 제거하고 ProtectKernel*를 적용하여 가장 흔한 권한 상승 경로를 차단합니다.

적용 방법:

root@kitploit:~
ansible-playbook -i inventory ansible/site.yml --check --diff   # 미리보기
ansible-playbook -i inventory ansible/site.yml                  # 적용

Ansible이 없는 호스트의 경우 독립 파일을 제자리에 배치하세요:

root@kitploit:~
sudo ./scripts/deploy_dropin.sh nginx.service

3. 커널 상태 감사자

auditor/crypto_auditor.py는 다음을 검사하여 JSON 보안 상태 보고서를 생성합니다:

  • /proc/crypto — FIPS 플래그와 자체 테스트 상태를 포함한 모든 등록된 암호/해시/aead.
  • /sys/module/ — taint 플래그와 매개변수 스냅샷을 포함한 암호화 하위 트리의 로드된 모듈.
  • /proc/sys/kernel/, /proc/sys/user/ — AF_ALG 공격 경로를 차단하는 sysctl.
  • /sys/kernel/security/lockdown — 커널 lockdown 모드.

보고서는 안정적인 발견 ID(현재 FND-001~FND-005)로 키가 지정되어 SIEM 규칙이 전체 문서를 삭제하지 않고 개별 발견을 억제할 수 있습니다. 드리프트 탐지는 기준선과 상태를 비교합니다:

root@kitploit:~
sudo ./auditor/crypto_auditor.py --output /var/log/af-alg-defense/today.json
sudo ./auditor/crypto_auditor.py \
     --baseline /var/log/af-alg-defense/baseline.json \
     --fail-on-drift

스키마는 schemas/audit_report.schema.json(Draft 2020-12)에 있으며 모든 푸시 시 CI에서 검증됩니다.

4. 지속적 통합

.github/workflows/ci.yml은 모든 푸시와 PR에서 네 가지 작업을 실행합니다:

  1. ShellCheck — 모든 *.sh 및 shebang이 있는 스크립트.
  2. 스키마 검증 — audit_report.schema.json을 메타스키마로 검사한 후 GH 러너 커널에서 감사자를 라이브로 실행하고 결과 보고서를 검증합니다. tests/fixtures/의 픽스처도 검사됩니다.
  3. Python 린트 (ruff check .).
  4. Ansible 린트 — 역할 트리 대상.

스키마 검사 실패는 병합을 차단하여 다운스트림 SIEM 파서가 조용히 이름이 변경된 필드로 인해 중단되는 것을 방지합니다.

SOC를 위한 운영 지침

레이어링할 탐지 규칙

  • 허용 목록에 없는 comm의 모든 af_alg_socket_create 이벤트 — 집계하지 말고 첫 발생 시 페이지.
  • 모듈 로딩이 동결되어야 하는 호스트에서 연속 감사자 실행 사이 crypto_modules의 새 항목.
  • 하드닝 플레이북 실행 후 hardened=false인 sysctl — 수동 변조 또는 병렬 구성 시스템의 드리프트를 나타냄.
  • lockdown 필드가 integrity/confidentiality에서 none으로 전환 — 커널 상태 변조의 강력한 지표.

롤아웃 계획(권장)

  1. eBPF 트레이서를 모니터 전용 모드로 2주간 배포합니다. 결과 기준선을 사용하여 알려진 정상 소비자(부팅 시 cryptsetup이 일반적)에 대한 allow.list를 채웁니다.
  2. 대표 호스트 플릿에 대해 감사자를 실행하고 상태를 서명된 baseline.json으로 캡처합니다.
  3. af_alg_systemd_services를 저위험 유닛 하나로 설정하여 카나리 그룹에 Ansible 역할을 적용합니다. journald에서 EAFNOSUPPORT 오류를 관찰합니다.
  4. 서비스 목록을 반복적으로 확장합니다. systemd-analyze security <unit>이 제한이 적용되었음을 보여야 합니다.
  5. 감사자를 --fail-on-drift와 함께 야간 cron에 연결하고 0이 아닌 종료 코드를 온콜 큐로 라우팅합니다.

이 프레임워크가 하지 않는 일

  • 이미 사용 중인 af_alg를 언로드하지 않습니다. 합법적인 부팅 시 소비자가 여전히 실행 중일 수 있으므로 모듈 언로드는 범위 밖입니다. 호스트에서 아무것도 필요로 하지 않음을 확인했다면 커널 명령줄에서 modprobe.blacklist=af_alg를 사용하세요.
  • CVE를 패치하지 않습니다. 벤더 커널 업데이트가 기본 통제 수단으로 남아 있습니다. 이 프레임워크는 패치 누락의 비용을 줄입니다.
  • root로부터 보호하지 않습니다. 로컬 root는 이러한 통제 수단을 모두 비활성화할 수 있습니다. 이 프레임워크는 root가 되기 위한 장벽을 높일 뿐, root를 넘어서는 보호는 제공하지 않습니다.

요구 사항

  • Linux ≥ 4.18(security_socket_create kprobe 대상용).
  • BCC ≥ 0.25 또는 libbpf ≥ 1.0, 그리고 uname -r과 일치하는 커널 헤더.
  • 관리 호스트의 Python 3.10+.
  • 제어 노드의 Ansible 2.14+.
  • 트레이서 로드용 CAP_BPF(또는 root); 감사자용 /proc/crypto 읽기 권한(읽기에는 권한 불필요).

라이선스

Apache-2.0. LICENSE 참조.

도구 다운로드
제로 트러스트 원칙이 프레임워크의 통제 수단
절대 신뢰하지 말고 항상 검증eBPF 트레이서가 모든 AF_ALG 소켓 생성 시도를 pid/uid/comm과 함께 기록
침해 가정암호화 감사자가 서명된 기준선(baseline)과 커널 상태를 비교
최소 권한관리 대상 유닛에 systemd RestrictAddressFamilies + capability 바운딩
마이크로세그멘테이션(커널 측)unprivileged_userns_clone=0이 익스플로잇이 사용하는 userns 피벗 제거
지속적 검증CI가 모든 변경 사항에 대해 버전 관리된 스키마로 감사 보고서 검증