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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Paranoid-CVE-2026-98432 — IP 헤더에 옵션이 포함된 수신 IPv4 TCP 패킷을 드롭합니다. | Kitploit
도구/GitHubGitHub/scriptzteam/paranoid-cve-2026-98432
Defensive ToolsVulnerability AnalysisScripting & AutomationConfiguration AuditingNetwork SecurityMisconfigurationIncident Response
GitHubscriptzteam/paranoid-cve-2026-98432

Paranoid-CVE-2026-98432

IP 헤더에 옵션이 포함된 수신 IPv4 TCP 패킷을 드롭합니다.

저장소 보기
36일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Paranoid-CVE-2026-98432

IP 헤더에 옵션이 포함된 수신 IPv4 TCP 패킷을 드롭합니다.

CVE-2026-98432에 대한 작고 되돌릴 수 있는 iptables 임시 조치입니다.

현재 네트워크 네임스페이스에서 IP 옵션을 포함한 IPv4 TCP 패킷을 드롭합니다. 명확한 상태 출력, 반복 가능한 적용/제거 명령, 읽기 전용 인벤토리, 선택적 systemd 서비스 및 별도의 연결 확인을 포함합니다.

버전: 1.0.0 · 검토 날짜: 2026년 10월 30일 · 요구 사항: Linux + Bash + iptables

이는 커뮤니티 필터링이며, 커널 수정이나 벤더 인증을 받은 완전한 우회 방법이 아닙니다. 규칙이 존재한다고 해서 익스플로잇 저항성이 입증되는 것은 아닙니다. 벤더가 수정한 커널을 설치하고 그 커널로 부팅하거나, 이 CVE를 명시적으로 다루는 지원되는 라이브패치를 사용하십시오.

빠른 시작

ZIP 파일의 압축을 풀고 이 디렉터리에서 터미널을 연 다음:

# Read-only inventory; no root required, although visibility may be limited.
bash paranoid-cve98432.sh audit

# Preview the firewall commands; no changes, no root required.
bash paranoid-cve98432.sh apply --dry-run

# Apply the two runtime rules.
sudo bash paranoid-cve98432.sh apply

# Check exact rules and packet counters.
sudo bash paranoid-cve98432.sh status

SSH 세션을 열어 둔 상태에서 두 번째 SSH 연결과 일반 서비스가 여전히 작동하는지 확인하세요. IPv4 IP 옵션이 필요한 클라이언트는 영향을 받을 수 있습니다.

되돌리기:

sudo bash paranoid-cve98432.sh remove

이 도구의 정확히 태그된 규칙만 제거됩니다. 다른 방화벽 규칙과 모든 sysctl 설정은 보존됩니다. 이전에 수동으로 설치한 규칙(우리 대화에서 나온 태그 없는 규칙 포함)은 제거되거나 채택되지 않습니다.

요구 사항

종속성용도
Bash스크립트 런타임
IPv4 raw 테이블, u32 및 comment 매치를 지원하는 iptables패킷 필터링
root 및 CAP_NET_ADMIN적용, 상태 확인 및 제거
flock, stat, mkdir/run 아래의 전용 디렉터리를 사용하여 변경 사항 직렬화
iproute2 (ss)선택적 리스너 인벤토리
Python 3.8+선택적 검증 도우미
Python 3.9+오프라인 테스트 스위트
systemd선택적 부팅 지속성 전용

Ubuntu/Debian의 일반적인 패키지:

sudo apt install iptables util-linux iproute2 python3

RHEL 계열 시스템에서는 iptables 명령을 제공하는 패키지가 릴리스마다 다릅니다. dnf provides '*/iptables'로 확인하십시오. 이 도구는 패키지를 설치하거나 선택된 iptables 백엔드를 변경하지 않습니다.

일부 iptables-nft 설치 환경에서는 현재 설정에서 u32를 지원하지 않습니다. 삽입에 실패하면 도구는 오류를 보고하고 새 규칙을 롤백합니다. 실행 중인 서버에서 방화벽 백엔드를 무작정 전환하지 마십시오. 대신 기존 방화벽과 통합된 네이티브 nftables 등가 구성을 사용하십시오.

설치되는 항목

규칙을 식별하는 데 사용되는 주석과 함께, 다음과 같은 정확한 규칙이 설치됩니다:

iptables -w 10 -t raw -I PREROUTING 1 -p tcp \
  -m u32 --u32 '0>>24&0x0F=6:15' \
  -m comment --comment 'cve98432-guard:v1' -j DROP

iptables -w 10 -t raw -I OUTPUT 1 -p tcp \
  -m u32 --u32 '0>>24&0x0F=6:15' \
  -m comment --comment 'cve98432-guard:v1' -j DROP

IPv4 헤더의 첫 번째 바이트에는 버전과 인터넷 헤더 길이(IHL)가 포함됩니다. 32비트 워드 5개는 일반적인 20바이트 헤더입니다. IHL이 6–15이면 IP 옵션이 존재함을 의미합니다. u32는 해당 필드를 직접 읽습니다.

  • PREROUTING은 리스너로 전달되기 전에 도착하는 IPv4 TCP 트래픽을 필터링합니다.
  • OUTPUT은 로컬 리스너에 도달하려는 시도를 포함하여 로컬에서 생성된 트래픽도 필터링합니다. 또한 IP 옵션을 포함한 나가는 응답을 드롭할 수도 있습니다.
  • 규칙은 SYN 패킷뿐만 아니라 일치하는 모든 IPv4 TCP 패킷을 검사합니다. 잠재적으로 단편화된 패킷에서 TCP 플래그를 찾는 데 의존하지 않습니다.
  • 테이블을 플러시하거나, 기본 정책을 변경하거나, 포트를 변경하거나, IP 주소를 차단하거나, IPv6를 비활성화하거나, SACK, 타임스탬프, 윈도 스케일링과 같은 일반적인 TCP 옵션을 변경하지 않습니다.

이는 IPv4 IP 옵션으로, TCP 옵션과는 다른 헤더 필드입니다. IP 옵션이 없는 일반적인 SSH, HTTPS 및 기타 트래픽은 일치 대상에서 제외됩니다.

두 번 적용해도 복사본이 더 추가되지 않습니다. 두 번째 삽입이 실패하면 해당 호출에서 시도한 규칙만 롤백되며, 기존에 존재하던 정확히 일치하는 규칙은 유지됩니다. remove는 이 도구의 정확히 일치하는 규칙의 중복도 정리합니다. 이 도구의 동시 호출은 직렬화됩니다. 관련 없는 방화벽 관리자는 여전히 동시에 규칙을 변경할 수 있습니다.

이것이 도움이 되는 이유와 한계

업스트림 권고는 SYN-ACK가 생성되거나 요청이 마이그레이션되는 동안 IPv4 요청/소켓 옵션의 use-after-free를 설명합니다. 수정 사항은 두 개의 소멸자를 변경하여 RCU를 통해 해제를 지연시킵니다.

IP 옵션이 있는 수신 패킷을 필터링하면 이러한 훅이 적용되는 경로에서 일반적으로 패킷이 제공하는 옵션이 TCP에 도달하는 것을 방지합니다. 이것이 이 임시 방편의 근거입니다. 이는 분석 기반 완화책이며, 완전한 익스플로잇의 재현이나 취약한 코드로 이어지는 모든 경로에 대한 보장은 아닙니다.

다음 한계를 확인하십시오:

상황한계 / 조치
컨테이너, 네트워크 네임스페이스, VPN 네임스페이스규칙은 네임스페이스별로 적용됩니다. 호스트 규칙은 다른 네임스페이스에 국한된 트래픽을 커버하지 않습니다. 각 관련 네임스페이스 내부에서 검사하고 적용하십시오. 컨테이너는 호스트 커널을 공유합니다.
Linux 브리지 / 레이어 2 포워딩이러한 IPv4 규칙은 완전한 브리지 정책이 아닙니다. 대상 네임스페이스가 커버되는지 확인하십시오. 해당 포워딩 경로에 필터링이 필요하면 브리지 패밀리 규칙을 사용하십시오.
터널디코딩된 내부 IPv4 경로에 대한 필터링을 확인하십시오. 암호화된 외부 패킷은 내부 IP 옵션을 외부 필터에 노출하지 않습니다.
SELinux 또는 Smack을 사용하는 NetLabel / CIPSOCIPSO는 커널 레이블링 경로를 통해 요청 옵션을 채울 수 있습니다. 인그레스 헤더 필터링을 해당 경로에 대한 커버리지로 간주하지 마십시오. SELinux가 활성화되어 있다는 것만으로는 CIPSO가 구성되었음을 증명하지 않습니다.
기존 소켓 또는 대기 중인 요청필터를 추가하는 것은 이미 생성된 커널 객체를 정리하거나 패치하는 것이 아닙니다.
방화벽 재로드재로드, 복원, 컨테이너 오케스트레이터 또는 관리자가 규칙을 제거하거나 재정렬할 수 있습니다. 상태를 다시 확인하고 다시 적용하십시오.
이전 raw 테이블의 종료 규칙새 규칙은 위치 1에 배치되지만, 이후 규칙 변경으로 종료 규칙이 그 앞에 배치될 수 있습니다. 순서를 검사하십시오.
IP 옵션이 필요한 클라이언트해당 클라이언트의 연결이 작동을 멈출 수 있습니다. 여기에는 특수한 보안 레이블링 배포가 포함됩니다.
IPv6이 규칙은 IPv6를 필터링하지 않으며, 별도로 추적되는 IPv6/CALIPSO 마이그레이션 문제를 해결하지 않습니다.

버전 문자열, 변경 로그 언급, 빈 리스너 출력 또는 0인 패킷 카운터를 근거로 커널이 패치되었다고 자동으로 주장하지 않습니다. 벤더 커널은 수정 사항을 백포트하며, 별도의 generic, cloud, HWE 및 기타 플레이버를 가집니다. 새로 설치된 커널이 반드시 실행 중인 커널은 아닙니다.

MPTCP: 유용한 추가 강화이지 수정 사항은 아님

Anthropic의 10월 27일 보고서는 MPTCP 리스너가 있는 서버에 대한 원격 루트 익스플로잇을 설명합니다. 기반 권고는 MPTCP에 국한되지 않는 IPv4 TCP 경쟁 조건을 설명합니다. 두 사실 모두 중요합니다.

애플리케이션에 MPTCP가 필요하지 않다면, 별도로 새 MPTCP 소켓을 비활성화할 수 있습니다:

# Record the current value before changing it.
sysctl net.mptcp.enabled
sudo sysctl -w net.mptcp.enabled=0

이 설정은 네트워크 네임스페이스별로 적용되며 새 소켓 생성을 제어합니다. 이 명령으로 기존 MPTCP 리스너가 일반 TCP로 변환되지는 않습니다. 필요한 경우 의존 서비스를 파악하고 의도적으로 재시작/재구성하십시오. 이 도구는 서비스를 재시작하지 않습니다. 일부 애플리케이션은 일반 TCP로 폴백하지 않고 실패할 수 있습니다.

변경 사항을 영구적으로 유지하려면, 그렇게 하기로 선택한 경우 일반적인 sysctl 구성을 통해 net.mptcp.enabled = 0 줄을 추가하십시오. 나중에 복원할 수 있도록 파일과 이전 런타임 값을 기록해 두십시오. 가드의 remove 명령은 별도로 수행한 sysctl 변경을 되돌리지 않습니다.

net.ipv4.tcp_migrate_req=0도 마찬가지로 하나의 마이그레이션 메커니즘만 제한합니다. reuseport BPF 마이그레이션 프로그램은 또 다른 메커니즘이며, 근본적인 경쟁 조건은 여전히 남아 있습니다. 어느 sysctl도 패치를 대체할 수 없습니다.

검증

서버에서:

sudo bash paranoid-cve98432.sh status

PRESENT는 태그된 규칙이 정확히 설치되었음을 의미합니다. pkts와 bytes는 삽입 이후의 일치 횟수를 보여줍니다. 카운트가 0이라는 것은 일치가 집계되지 않았음을 의미할 뿐이며, 보호가 이루어졌거나 공격이 없었음을 입증하는 것은 아닙니다.

IP 옵션 필터링이 없는 별도의 Linux 클라이언트에서, 서버의 알려진 열린 포트를 대상으로:

python3 verify-filter.py SERVER_IPV4 22

헬퍼는 일반 TCP 연결 하나와 Record Route IP 옵션이 포함된 연결 하나를 만든다. 애플리케이션 데이터를 전송하지 않으며 레이스나 익스플로잇을 실행하지 않는다.

결과해석
일반 연결 성공, 옵션 연결 타임아웃경로 어딘가에서 필터링이 이루어지고 있음과 일치한다. 태그된 대상 DROP 카운터가 증가하는지 확인한다.
둘 다 연결 성공이 경로에서는 옵션이 허용된다. 이는 커널이 패치되었는지 여부를 입증하지 않는다.
일반 연결 실패, 옵션 설정 실패 또는 연결 거부결론을 내릴 수 없다. 포트, 라우팅, 로컬 옵션 지원 및 방화벽 정책을 확인한다.

클라이언트 자체의 필터가 나가는 프로브나 옵션이 포함된 응답을 드롭할 수 있다. 라우터 또한 IP 옵션을 드롭할 수 있다. 타임아웃만으로는 서버 규칙이 작동했다는 증거가 되지 않는다. 헬퍼는 의도적으로 익스플로잇 증명 방식의 판정을 피한다.

선택적 재부팅 지속성

런타임 apply는 재부팅 후에도 유지되지 않는다. 제공된 systemd 유닛은 부팅 시 규칙을 다시 적용한다. 필요하면 명시적으로 설치한다:

sudo install -m 0755 paranoid-cve98432.sh /usr/local/sbin/cve98432-guard
sudo install -m 0644 systemd/cve98432-guard.service \
  /etc/systemd/system/cve98432-guard.service
sudo systemctl daemon-reload
sudo systemctl enable --now cve98432-guard.service
sudo /usr/local/sbin/cve98432-guard status

이 서비스는 호스트의 현재 iptables 대안을 사용합니다. 이 서비스에 의존하는 동안에는 해당 대안을 변경하지 마십시오. 이 서비스는 자신의 네임스페이스만 대상으로 하며, Docker/LXC 또는 다른 네임스페이스에 규칙을 자동으로 주입하지 않습니다.

이 유닛은 부팅 시 지속성을 제공할 뿐, 지속적인 강제 적용을 제공하지는 않습니다. 외부 방화벽을 다시 로드한 후에는 다음을 실행하십시오:

sudo systemctl reload cve98432-guard.service
sudo /usr/local/sbin/cve98432-guard status

systemctl is-active만으로는 규칙이 여전히 존재하는지 검증할 수 없습니다. 더 강력한 통합을 위해서는 두 개의 독립적인 관리자에 의존하기보다, 이미 사용 중인 방화벽 관리자에 동등한 규칙을 추가하십시오.

수정된 커널이 실행 중임을 확인한 후 영구 설치를 제거하십시오:

sudo systemctl disable --now paranoid-cve98432.service
sudo /usr/local/sbin/cve98432-guard remove
sudo rm /etc/systemd/system/paranoid-cve98432.service
sudo systemctl daemon-reload
sudo rm /usr/local/sbin/paranoid-cve98432

명시적인 remove는 런타임 규칙이 여전히 존재하는 동안 비활성 상태였던 유닛도 처리합니다. 이전의 stop/remove 명령이 실패한 경우 파일 삭제 단계를 실행하지 마십시오. 먼저 오류를 확인하십시오.

기타 네트워크 네임스페이스

이름이 지정된 VPN/네트워크 네임스페이스의 경우:

sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh apply
sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh status
# Later:
sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh remove

컨테이너 네임스페이스의 경우, 명시적으로 식별된 컨테이너 PID와 nsenter -t PID -n을 사용하여 호스트의 도구를 사용하십시오. 네임스페이스가 재생성된 후 다시 적용하십시오. 이 패키지는 컨테이너를 탐색하거나, 컨테이너 권한을 부여하거나, 컨테이너 이미지 내부에 쓰지 않습니다.

명령 및 종료 코드

도구 다운로드