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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
kernel98scan — Linux 호스트가 CVE-2026-98432에 노출되어 있습니까? | Kitploit
도구/GitHubGitHub/akaihigurashi/kernel98scan
Defensive ToolsReconnaissanceVulnerability ScannersNetwork MappingPort ScanningVulnerability AnalysisConfiguration AuditingInformation GatheringWeb Security
GitHubakaihigurashi/kernel98scan

kernel98scan

Linux 호스트가 CVE-2026-98432에 노출되어 있습니까?

12일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

kernel98scan

Linux 호스트가 커널의 IPv4 TCP 핸드셰이크에서 발생하는 use-after-free인 CVE-2026-98432에 노출될 수 있는지 확인합니다. shouldipanic.ch의 일부입니다.

IPv4 옵션(Record Route, Timestamp)을 포함한 SYN이, 옵션이 이미 해제되었을 수 있는 이후에 해당 옵션을 읽는 코드에 도달합니다. 열려 있는 IPv4 TCP 포트 하나면 충분하며, 로그인이 필요하지 않습니다. 이는 4.4(2016) 이후 모든 커널에 존재하며, 각 트리의 수정 릴리스까지 이어집니다: 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10, 7.3. 커널 CNA는 이를 9.8로 평가하며, MPTCP 리스너가 있는 서버를 대상으로 한 동작하는 원격 루트 익스플로잇이 보고되었습니다(공개되지는 않음). 수정 사항은 네트워크상에서 보이지 않습니다: 수정된 커널은 패치되지 않은 커널과 정확히 동일하게 응답합니다.

이는 각 모드가 말할 수 있는 내용을 규정합니다:

  • **--on-host**는 머신 자체에서 실행 중인 커널을 읽습니다: 버전, 패키지 체인지로그, 그리고 재부팅을 기다리는 더 새로운 커널이 있는지 여부.
  • 외부에서는 누구도 커널을 읽을 수 없습니다. kernel98scan은 HTTP Server 헤더에서 Linux 배포판을 읽고 해당 배포판이 아직 수정된 커널을 릴리스했는지 보여줍니다. 이는 강력한 힌트일 뿐 판정은 아닙니다: 리버스 프록시 뒤나 컨테이너 내부에서는 커널이 다른 머신에 속합니다.

kernel98scan은 두 가지 형태로 제공됩니다:

  • kernel98scan.py: 의존성이 없는 단일 Python 파일입니다. 호스트에서 --on-host는 실제 판정을 제공하며, 주소를 지정하면 IP 범위에 걸쳐 배포판 핑거프린팅을 수행하고, 포트 스캔과 vhost 탐색을 함께 합니다.
  • 웹 페이지(Docker 이미지)로, 누구나 외부에서 한 호스트를 확인할 수 있으며 남용 방지 기능이 있습니다. kernel98scan.shouldipanic.ch에서 실행됩니다.

Ubuntu를 표시하는 서버의 결과

명령줄

curl -LO https://github.com/akaihigurashi/kernel98scan/releases/latest/download/kernel98scan.py
python3 kernel98scan.py --on-host           # real verdict for THIS machine

Python 3.8 이상, 설치할 필요 없음. 예시:

python3 kernel98scan.py --on-host                       # read the running kernel
python3 kernel98scan.py 203.0.113.10                    # outside: distribution + fix status
python3 kernel98scan.py 203.0.113.0/24                  # a whole range from outside
python3 kernel98scan.py 203.0.113.10 --ip-options       # + do IP-options packets get through?
python3 kernel98scan.py 203.0.113.10 -o out.csv         # CSV output
python3 kernel98scan.py -h                              # all options

호스트에서 (--on-host, 종료 코드 2 / 1 / 0 / 3):

상태의미
VULNERABLE실행 중인 커널에서 수정 사항을 보여주는 것이 없음
CHECK수정된 커널이 설치되어 있지만, 이전 커널이 여전히 실행 중임: 재부팅 필요
FIXED커널 변경 로그에 CVE가 명시되어 있거나, 일반 업스트림 커널이 수정된 버전임

벤더 커널(Ubuntu, RHEL, Proxmox)은 수정 사항을 이전 버전 번호에 백포트하므로, 이들에 대해서는 변경 로그만이 유효합니다. 또한 MPTCP가 켜져 있는지(보고된 익스플로잇은 MPTCP 리스너를 통해 이루어짐)와 tcp_migrate_req 여부도 보여줍니다.

외부에서:

상태의미
POSSIBLY VULNERABLE배너에 Linux 배포판이 표시됨: 아직 수정된 커널이 없거나(Ubuntu, RHEL 및 현재의 리빌드) 수정된 커널이 있지만 설치 및 부팅이 필요함
UNKNOWN배포판이 보이지 않거나, 프록시/CDN이 응답함
NOT LINUXServer 헤더가 비-Linux 호스트를 가리킴

VULNERABLE과 PATCHED는 외부에서 절대 보고되지 않습니다. 배포판별 수정 상태는 check.py의 표(FIX_STATUS, FIXED_TABLE)에 있으며, 각 벤더 릴리스에 맞춰 갱신됩니다.

옵션기능
--on-host이 머신에서 실행 중인 커널을 읽고 실제 판정을 제공
--ip-optionsSYN에 Record-Route IP 옵션을 실은 연결 하나 (아래 참조)
-o FILE모든 결과를 CSV로도 기록
-a / -v숨겨진 결과 표시 / 증거 표시
-d디버그: 모든 요청, 헤더, 매치
-q배너 없음 (스크립트용)
-V버전 출력
-h모든 옵션

--ip-options (옵트인, 명령줄 전용)

일반 연결 하나와 SYN에 빈 Record-Route IP 옵션을 실은 연결 하나를 열고, 그러한 패킷이 호스트에 도달하는지(reach), 도중에 드롭되는지(filtered), 또는 포트가 닫혀 있는지(noport)를 보고합니다. 이것이 버그에 도달하는 패킷 형태이므로 기본적으로 꺼져 있으며 웹 페이지에서는 절대 실행되지 않습니다: 예를 들어 방화벽이 IP 옵션을 드롭하는지 확인하기 위해 자신의 호스트에서 사용하십시오. 단일 연결로는 버그가 필요로 하는 경쟁 조건을 이길 수 없으며, filtered 결과는 중간의 어떤 네트워크일 수도 있습니다.

수정된 커널이 실행되기 전까지의 완화 조치

nft add table ip cve98432
nft add chain ip cve98432 pre '{ type filter hook prerouting priority -300; }'
nft add rule ip cve98432 pre meta l4proto tcp ip hdrlength != 5 drop
sysctl -w net.mptcp.enabled=0     # if you don't need MPTCP

IPv4 옵션을 포함한 IPv4 TCP 패킷을 드롭합니다. 재부팅 후에도 유지되지 않으며, 수정된 커널을 대체하지 않습니다.

Docker를 사용한 웹 페이지

docker run -d --name kernel98scan --restart unless-stopped \
  -p 127.0.0.1:8092:8092 \
  -e PANIC_ORIGIN=https://kernel98scan.example.ch \
  -v kernel98scan-data:/data \
  ghcr.io/akaihigurashi/kernel98scan:latest

또는 Compose를 사용하는 경우: docker-compose.yml을 다운로드하고 PANIC_ORIGIN을 설정한 다음 docker compose up -d를 실행하세요. 컨테이너는 localhost에서만 수신하므로, 앞단에 TLS를 적용한 리버스 프록시를 배치하세요 (nginx 예시).

변수기본값용도
PANIC_ORIGIN–공개 주소. 다른 오리진에서의 요청은 거부됩니다. 반드시 설정하세요.
PANIC_OPERATOR / PANIC_CONTACT–페이지 하단의 선택적 연락처 섹션
PANIC_IMPRINT_URL–기존 임프린트로 연결되는 선택적 링크
PANIC_TRUSTED_PROXY127.0.0.1,::1X-Real-IP 헤더가 신뢰되는 프록시
PANIC_DENY_HOSTS / PANIC_DENY_IPS–절대 검사하지 않을 도메인 / 주소
PANIC_AUDIT_DIR/data/audit일별 감사 로그 파일
PANIC_RETENTION_DAYS30이 기간보다 오래된 감사 파일은 삭제됨

이 페이지는 php2scan과 동일한 보호 기능을 갖추고 있습니다: 동의 체크박스, 감사 로그, VPN/Tor/데이터센터 클라이언트 거부, 속도 제한, 결과 캐시, 연결이 검사 대상 주소에 고정된 공개 호스트명만 허용, 절대 검사하지 않는 호스트 (잘 알려진 서비스, 가장 많이 방문한 상위 100개 사이트, 정부 사이트, 제재 대상 국가), 그리고 제재 대상 국가로부터의 접근 차단. 웹 페이지는 시작 페이지만 로드하며, IP 옵션을 전송하지 않습니다.

구축 방식

스캐너 엔진(가져오기, 핑거프린팅, 포트 스캔, vhost 탐색, 웹 서버)은 panic-core에 있습니다. CVE-2026-98432에 특화된 모든 것은 check.py에 있습니다. kernel98scan.py와 web.py는 둘 모두로부터 생성됩니다:

git clone https://github.com/akaihigurashi/panic-core ../panic-core
python3 ../panic-core/bundle.py check.py

라이선스

GPL-3.0, LICENSE 참조. 폰트: Bricolage Grotesque, Instrument Sans 및 JetBrains Mono (SIL Open Font License).

도구 다운로드