Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense- — CISA 활성 Linux 커널 CVE(CVE-2025-39964, CVE-2026-53266, CVE-2025-39682)를 최신 eBPF, 모듈 무장 해제, containerd 사용자 네임스페이스를 통해 무력화합니다. | Kitploit
도구/GitHubGitHub/mc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-
Defensive ToolsContainer SecurityVulnerability AnalysisDevSecOpsIncident Response
GitHubmc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

CISA 활성 Linux 커널 CVE(CVE-2025-39964, CVE-2026-53266, CVE-2025-39682)를 최신 eBPF, 모듈 무장 해제, containerd 사용자 네임스페이스를 통해 무력화합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
51일 전아직 검토되지 않음

제로 다운타임 리눅스 커널 제로데이 방어: eBPF 텔레메트리, 모듈 무장 해제, 사용자 네임스페이스를 통한 계층적 보상 통제

사이버보안 및 인프라 보안국(CISA)이 치명적인 리눅스 커널 취약점을 알려진 악용 취약점(KEV) 카탈로그에 추가하면, 인프라 팀과 SRE 리드에게 긴급한 운영 시계가 작동하기 시작합니다:

업스트림 패치 격차:
야생에서 제로데이가 공개적으로 무기화된 시점과 엔터프라이즈 배포판(Ubuntu HWE, Debian, RHEL)에서 테스트되고 서명된 바이너리 커널 패키지가 제공되는 시점 사이의 기간은 일반적으로 7일에서 21일에 이릅니다.

프로덕션 Kubernetes 클러스터에서 벤더 패키지를 수동적으로 기다리는 것은 시스템을 활성 악용에 노출시키는 반면, 성급한 커널 업그레이드나 긴급 재부팅은 운영 중단 위험을 초래합니다.

이 사례 연구는 호스트 재부팅 없이 사용자 공간, 커널 로더, 런타임 계층 전반에 걸쳐 세 가지 동시 리눅스 커널 취약점(CVE-2025-39964, CVE-2026-53266, CVE-2025-39682)을 관리하기 위해 설계된 심층 방어 보상 통제 프레임워크를 문서화합니다.


위협 매트릭스 및 방어 분류 체계

운영 정확성을 보장하기 위해 방어는 보안 속성(예방, 런타임 탐지, 격리)에 따라 엄격하게 분류됩니다:

취약점하위 시스템공격 메커니즘심각도방어 모드구현 메커니즘
CVE-2026-53266Netfilter 브리징 (ebtables)브리지 ARP 테이블 재작성 규칙의 산술 오버플로높음 (메모리 손상)예방 (무장 해제)RAM 제거 (modprobe -r) + 로더 오버라이드 (/bin/true)
CVE-2025-39964Crypto Netlink (AF_ALG)netlink crypto 소켓 할당의 정수 잘림높음 (LPE / 탈출)탐지 (eBPF) / 게이팅최신 eBPF (sys_enter_socket, 도메인 38) + SECCOMP
CVE-2025-39682커널 TLS (kTLS)TCP ULP의 제로 길이 레코드 처리 결함높음 (커널 패닉 / 힙)탐지 (eBPF)최신 eBPF (sys_enter_setsockopt, TCP_ULP 31 & SOL_TLS 282)

계층적 심층 방어 아키텍처

root@kitploit:~
flowchart TD
    subgraph Ring3 ["User Space / Container Pod (Ring 3)"]
        Workload["Container Workload / Untrusted Process"]
        Probe["Exploit Vectors: socket(AF_ALG) or setsockopt(TCP_ULP)"]
        Workload --> Probe
    end

    subgraph Ring0 ["Linux Kernel (Ring 0)"]
        SyscallTrap["Syscall Trap (sysenter)"]
        Probe --> SyscallTrap
        
        Tracepoint["Kernel Tracepoint: sys_enter"]
        SyscallTrap --> Tracepoint
        
        subgraph eBPFEngine ["Modern eBPF Detection (CO-RE Ring Buffer)"]
            Filter{"Syscall Gating:\n- domain == 38 (AF_ALG)\n- SOL_TCP + TCP_ULP\n- SOL_TLS (282)"}
            Tracepoint --> Filter
        end
        
        Disarmed["Modprobe Hook: /bin/true\n(ebtables evicted & blocked)"]
        UserNS["containerd v2.2.4 User Namespace Remap\nContainer UID 0 -> Host UID 4050714624\n(Bounded Credential Containment)"]
        
        Filter -- "Match (<1ms)" --> AlertRingBuf["Ring Buffer Emission"]
        Filter -- "Pass" --> KernelExec["Normal Execution Path"]
        KernelExec --> UserNS
    end

    subgraph SecurityPipeline ["Reactive Event Pipeline"]
        Falcosidekick["Falco Daemon & Sidekick (:2801)"]
        Forwarder["Event Forwarder Daemon (:9876)"]
        NATSBus["NATS Security Bus (sovereign.security.alert)"]
        
        AlertRingBuf --> Falcosidekick
        Falcosidekick --> Forwarder
        Forwarder --> NATSBus
    end

    subgraph Enforcement ["Automated Remediation & Audit"]
        Remediator["Dynamic Bouncer (CrowdSec / nftables Drop)"]
        AuditLedger["Cryptographically Tamper-Evident Hash Chain\n(SHA-256 Chaining & Cross-Node Replication)"]
        
        NATSBus --> Remediator
        NATSBus --> AuditLedger
    end

    classDef danger fill:#ffdddd,stroke:#ff0000,stroke-width:2px;
    classDef safe fill:#ddffdd,stroke:#00aa00,stroke-width:2px;
    classDef arch fill:#f0f4f8,stroke:#0066cc,stroke-width:1px;
    class Probe danger;
    class Disarmed,UserNS,AuditLedger safe;

계층 1: 커널 모듈 무장 해제 (예방적)

1. 운영상의 미묘한 차이: 활성 메모리 vs. 향후 프로빙

/etc/modprobe.d/ 오버라이드의 일반적인 함정은 install /bin/true가 후속 모듈 로드 시도만 차단한다는 것입니다. 브리지 네트워킹(Docker, 레거시 CNI)이 호스트 수명 주기 초기에 ebtables를 로드했다면, 취약한 코드는 커널 RAM에서 여전히 활성 상태로 남아 있습니다.

제로 다운타임 무장 해제에는 2단계 시퀀스가 필요합니다:

  1. 제거: 현재 커널 메모리에 상주하는 모듈을 언로드합니다.
  2. 봉인: 재로드를 방지하기 위해 /bin/true 로더 오버라이드를 구성합니다.

2. 구현

root@kitploit:~
# Step A: Evict active ebtables modules from running kernel RAM
sudo modprobe -r ebtable_nat ebtable_filter ebtable_broute ebt_snat ebt_dnat ebt_arpreply ebtables 2>/dev/null || true

# Step B: Seal the loader via /etc/modprobe.d/blacklist-ebtables.conf
sudo tee /etc/modprobe.d/blacklist-ebtables.conf << 'EOF'
# Mitigation for CVE-2026-53266: Netfilter ARP table corruption
install ebtables /bin/true
install ebtable_nat /bin/true
install ebtable_broute /bin/true
install ebtable_filter /bin/true
install ebt_snat /bin/true
install ebt_dnat /bin/true
install ebt_arpreply /bin/true

blacklist ebtables
blacklist ebtable_nat
blacklist ebt_snat
blacklist ebt_arpreply
EOF

3. 검증

root@kitploit:~
# Test explicit loading:
$ sudo modprobe ebt_snat
$ lsmod | grep ebt
# Output: (Empty - 0 modules resident in kernel memory)

계층 2: eBPF 시스템 콜 텔레메트리 및 행위 게이팅 (탐지)

1. 탐지 vs. 인라인 예방

  • Falco eBPF (비동기 EDR): 최신 eBPF 링 버퍼를 통해 sys_enter를 후킹하여 SIEM/NATS로 밀리초 미만의 경보를 제공합니다. 커널 제어 흐름을 수정하지 않고 제로 오버헤드 가시성에 최적화되어 있습니다.
  • 인라인 차단 (동기 LSM): 동기 거부(-EACCES)가 필요한 환경에서는 eBPF LSM 프로브 또는 SECCOMP 프로파일이 실행 전에 시스템 콜을 드롭할 수 있습니다.

2. 수정된 kTLS 시스템 콜 메커니즘 (2단계 게이팅)

TCP 연결에서 커널 TLS를 활성화하는 것은 두 가지 별개의 단계로 발생합니다:

  1. 1단계 (연결): setsockopt(fd, SOL_TCP=6, TCP_ULP=31, "tls", 4)가 상위 계층 프로토콜(ULP)을 연결합니다.
  2. 2단계 (구성): setsockopt(fd, SOL_TLS=282, TLS_TX/TLS_RX, ...)가 암호화 키를 초기화합니다.

SOL_TLS (282)만 필터링하면 ULP 연결 단계를 놓칩니다. 규칙은 두 단계를 모두 평가합니다:

root@kitploit:~
# falco-rules-kernel-cve.yaml
customRules:
  rules-kernel-cve.yaml: |-
    - rule: Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)
      desc: Detects creation of Crypto API Netlink sockets used in local privilege escalation
      condition: evt.type = socket and evt.rawarg.domain = 38
      output: "Active Exploit Probe: AF_ALG socket requested (domain=%evt.rawarg.domain type=%evt.rawarg.type user=%user.name proc=%proc.name container=%container.id)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39964, crypto, container_escape]

    - rule: Detect Container Kernel TLS Activation (CVE-2025-39682)
      desc: Detects container workloads attaching kTLS TCP_ULP or configuring SOL_TLS
      condition: container.id != host and evt.type = setsockopt and 
                 ((evt.rawarg.level = 6 and evt.rawarg.optname = 31) or (evt.rawarg.level = 282))
      output: "Container kTLS Activation Detected (level=%evt.rawarg.level optname=%evt.rawarg.optname user=%user.name proc=%proc.name container=%container.name)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39682, ktls, tcp_ulp]

3. 프로덕션 안정성: Linux 7.0 ABI 필터 불변성

최신 리눅스 커널(Linux 7.0+ HWE)에서 Falco의 사용자 공간 인스펙터 엔진(sinsp)은 openat 매개변수에서 레지스터 파싱 불일치(sinsp_exception: could not parse param 2 (name))를 겪습니다.

크래시 루프 없이 지속적인 DaemonSet 안정성을 보장하려면:

root@kitploit:~
falco:
  base_syscalls:
    custom_set: ['!openat']

4. (선택 사항) SECCOMP를 통한 동기 인라인 차단

컨테이너 내 워크로드가 AF_ALG를 호출하는 것이 엄격히 금지되어야 하는 경우, SCMP_ACT_ERRNO를 반환하는 SECCOMP 프로파일을 적용합니다:

root@kitploit:~
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}

계층 3: 사용자 네임스페이스 격리 (격리)

1. 제한된 권한 상승 vs. 임의의 Ring-0 쓰기

  • 제한된 권한 상승: 대부분의 Netlink/소켓 LPE는 커널 로직 결함을 악용하여 프로세스 자격 증명 구조체(current->cred) 내에서 root를 획득합니다.
  • UserNS 방어: Kubernetes CRI v1.30(hostUsers: false)과 함께 containerd v2.2.4에서 컨테이너 root(UID 0)는 비권한 호스트 범위(호스트 UID 4050714624)에 매핑됩니다. 제한된 자격 증명 상승은 비루트 네임스페이스 내에서 억제됩니다.
  • 현실적 경계: 완전한 임의의 ring-0 쓰기 취약점(커널 명령 포인터 또는 페이지 테이블의 직접 제어)은 사용자 네임스페이스 경계를 우회할 수 있습니다. 이러한 위협에는 microVM 또는 하이퍼바이저 수준 격리(예: Firecracker, Kata)가 필요합니다.

2. 워크로드 구성

root@kitploit:~
apiVersion: v1
kind: Pod
metadata:
  name: hardened-workload
spec:
  runtimeClassName: runc
  hostUsers: false  # Remaps container root away from host root
  containers:
  - name: app
    image: app:latest

3. 호스트 검증

root@kitploit:~
$ cat /proc/$(pgrep -f hardened-workload)/uid_map
         0 4050714624      65536

계층 4: 암호학적으로 변조 증거가 남는 감사 체이닝

1. 변조 증거 vs. 하드웨어 WORM

침해된 호스트의 로컬 로그 파일은 공격자가 무제한 ring-0 실행을 획득하면 이론적으로 수정될 수 있습니다. 진정한 불변성은 1회 쓰기 물리 매체 또는 암호학적 배포가 필요합니다:

  1. 순차적 SHA-256 체이닝: 각 레코드는 이전 레코드의 해시에 커밋합니다: $$\text{Hash}n = \mathcal{H}\left(n \parallel \text{Timestamp} \parallel \text{Topic} \parallel \text{Payload} \parallel \text{Hash}{n-1}\right)$$
  2. 노드 간 복제: 로그는 NATS를 통해 스트리밍되고 독립적인 증명 노드(192.0.2.52)로 복제되어, 단일 침해 호스트에 의한 일방적인 로그 재작성을 방지합니다.

2. 샘플 체인 레코드

root@kitploit:~
{
  "index": 386200,
  "timestamp": "2026-09-22T08:58:36.564478+00:00",
  "topic": "sovereign.security.alert",
  "prev_hash": "b2f6ef1e467cf8402da283f58e470ee64993a479a957a0914ec8c351be7fa83d",
  "hash": "cece8f9bd8839d3753232dd7e504c538a0f58fe0bcf2e260fbefb7d27e77b8cf",
  "data": {
    "output": "Active Exploit Probe: AF_ALG socket requested (domain=38 type=5 user=root ...)",
    "priority": "Warning",
    "rule": "Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)"
  }
}

실증적 검증 및 텔레메트리

검증은 비권한 테스트 컨테이너에서 합성 AF_ALG 소켓 할당을 사용하여 수행되었습니다:

root@kitploit:~
import socket
# Requests AF_ALG Netlink family (domain 38, SOCK_SEQPACKET 5)
s = socket.socket(38, socket.SOCK_SEQPACKET, 0)

이벤트 수명 주기:

  1. 커널 시스템 콜: socket(38, 5, 0)이 sys_enter_socket을 호출합니다.
  2. eBPF 평가 (< 1ms): 최신 eBPF 트레이스포인트가 domain == 38을 평가하고 이벤트를 링 버퍼에 제출합니다.
  3. 파이프라인 디스패치 (2ms): Falco가 Falcosidekick 웹훅(:9876)으로 경보를 발행합니다.
  4. NATS 배포 (4ms): 포워더 데몬이 이벤트를 sovereign.security.alert로 브로드캐스트합니다.
  5. 원장 봉인 (12ms): 감사 데몬이 레코드를 SHA-256 암호학적 체인에 추가합니다.
  6. 암호학적 검증:
    root@kitploit:~
    $ python3 fsm_audit_vault.py --verify
    # Verified 386,213 records. Zero tampering detected.
    

저장소 구조 및 배포 가능한 아티팩트

이 저장소는 즉시 배포할 수 있는 프로덕션 준비 구성을 포함합니다:

root@kitploit:~
|-- etc/
|   \-- modprobe.d/
|       \-- blacklist-ebtables.conf     # Modprobe loader override
|-- helm/
|   |-- falco-rules-kernel-cve.yaml     # Falco modern eBPF rules (CO-RE)
|   \-- README.md                       # One-line Helm deployment guide
|-- k8s/
|   \-- pod-userns-hardened.yaml        # containerd v2.2.4 UserNS manifest
|-- scripts/
|   |-- evict-and-harden.sh             # Two-step module eviction & sealing
|   \-- verify-mitigation.sh            # Automated verification & CI test suite
|-- seccomp/
|   \-- seccomp-block-af-alg.json       # Inline SECCOMP blocking profile (EACCES)
|-- vault/
|   \-- audit_vault.py                  # Cryptographic SHA-256 hash-chain engine
|-- README.md
\-- LICENSE

SRE 및 시스템 아키텍트를 위한 핵심 요점

  1. 보상 통제가 패치 격차를 연결합니다: 활성 커널 제로데이가 무기화되면, 업스트림 배포판 패키지 검증을 기다리는 동안 로더 및 런타임 통제를 즉시 배포하십시오.
  2. 활성 모듈 제거는 필수입니다: Modprobe 오버라이드는 향후 로더 요청에만 영향을 미칩니다. 항상 lsmod를 통해 실행 중인 메모리를 확인하고 상주 모듈을 명시적으로 제거(modprobe -r)하십시오.
  3. kTLS를 위한 2단계 게이팅: kTLS에 대한 보안 규칙은 TCP_ULP 연결(SOL_TCP=6, optname=31)과 옵션 초기화(SOL_TLS=282)를 모두 평가해야 합니다.
  4. 사용자 네임스페이스가 권한 상승을 제한합니다: Kubernetes 워크로드를 containerd 사용자 네임스페이스(hostUsers: false)와 페어링하면 컨테이너 수준 권한 상승이 호스트 ring-0 root를 쉽게 획득하는 것을 막습니다.
  5. EDR을 인라인 시행에서 분리하십시오: 저오버헤드 클러스터 관찰 가능성을 위해 비동기 eBPF(Falco)를 사용하고, 제로 마이크로초 종료가 필수적인 경우 동기 LSM / SECCOMP를 사용하십시오.

Sovereign Systems & Security Architecture Team이 유지 관리합니다.
Linux HWE 및 Kubernetes CRI v1.30(containerd v2.2+)에서 프로덕션 테스트 완료.

도구 다운로드