로그인 없이 53분 만에 리눅스 서버 장악…Claude가 짠 공격에 Ubuntu·RHEL은 패치도 없어
Claude가 Linux 커널 CVE-2026-98432로 원격 루트 공격 코드를 작성했습니다. 시험에서 53분이 걸렸고, 11월 1일 기준 Ubuntu와 RHEL에는 수정 커널이 없습니다. Go 1.24 이상 서버가 공격 조건에 맞습니다.
- Claude가 짠 코드가 로그인 없이 53분 만에 리눅스 서버 root를 얻었습니다.
- 수정은 10월 초에 나왔지만 Ubuntu와 RHEL에는 11월 1일까지 패치가 없습니다.
- Go 1.24 이상 서버가 시험 조건에 맞고, 실전 난이도는 평가가 갈립니다.
로그인 정보 없이 패킷만 보내 리눅스 서버의 최고 관리자 권한(root)을 빼앗는 공격 코드를 Claude가 작성한 사실이 드러났습니다. Anthropic Frontier Red Team이 10월 27일 공개한 글에 따르면 연구진이 처음 지시를 내린 뒤 미공개 내부 연구 모델이 코드를 썼습니다. 시험 환경에서 커널 주소를 알아내는 데 48분, 명령 실행까지 5분이 더 걸렸습니다.
대상은 Linux 커널 취약점 CVE-2026-98432입니다. Anthropic은 공격 코드를 공개하지 않았고 11월 1일까지 실제 악용 사례도 보고되지 않았습니다. 그런데 대표적인 서버 배포판인 Ubuntu와 RHEL에는 수정 커널이 아직 없습니다. Hacker News에서 이 건을 다룬 글은 657점을 받았고 가장 많은 답글이 달린 댓글은 왜 두 배포판만 수정이 없느냐는 질문이었습니다.
수정은 한 달 전인데 서버에는 없습니다
버그는 서버가 TCP 연결을 받는 과정에 있습니다. 커널이 상대 패킷에 담긴 IPv4 옵션을 저장해 두는데, 한 CPU 코어가 이 메모리를 반납한 뒤에도 다른 코어가 계속 읽을 수 있습니다. 이런 결함을 해제 후 사용(use-after-free) 이라고 부릅니다. Debian 추적기가 정리한 수정은 해제 호출 두 곳을 kfree_rcu()로 바꿉니다.
Atlas 정리에 따르면 이 결함은 2016년에 나온 Linux 4.4부터 들어 있었습니다. 수정은 10월 1일 작성돼 10월 5일 네트워크 개발 트리에 들어갔습니다. 커널 개발자 쪽은 나흘이 걸렸습니다. 서버에 깔릴 배포판 패키지 일정은 업체마다 달랐습니다.

아래 표는 11월 1일 기준입니다. Ubuntu와 Red Hat은 각자의 공개 데이터를 직접 조회했고 나머지는 각 배포판 공지와 Atlas 집계를 따랐습니다. 업체마다 자기 패키지 번호로 수정을 옮겨 오므로 커널 원본 버전과 비교하지 말고 배포판 추적기를 봐야 합니다.
| 배포판 | 상태 |
|---|---|
| Ubuntu 22.04, 24.04, 26.04, 26.10 | 취약. 패키지 준비 중, 보안 공지 없음 |
| Ubuntu 16.04, 18.04, 20.04 | 취약. 수정 예정 패키지 미표시 |
| RHEL 8, 9, 10, OpenShift 4, 5 | 영향받음, 수정 없음. RHEL 6, 7은 영향 없음 |
| AlmaLinux 8, 9, 10 | 테스트 저장소에만 수정 커널 |
| Debian 12, 13 | 수정 완료 |
| Amazon Linux | 10월 24일부터 30일 사이 수정 |
| Oracle Linux UEK | 10월 16일 수정 |
| SUSE | SLES 16.0과 15 SP4부터 SP6 LTSS 수정, 15 SP7 진행 중 |
한국에서도 공식 권고가 나왔습니다. KISA는 10월 30일 이 CVE를 보안 업데이트 권고로 게시했습니다. 컨테이너는 호스트 커널을 함께 쓰기 때문에 이미지를 새로 받아도 해결되지 않습니다.
Go로 만든 서버가 시험 조건에 맞습니다
Anthropic은 공격 대상을 multipath TCP(MPTCP) 연결을 받는 서버로 적었습니다. MPTCP는 연결 하나를 Wi-Fi와 LTE 같은 여러 경로로 나눠 쓰게 하는 기능입니다. 일부러 켠 서버만 해당한다고 생각하기 쉬운데, 그렇지 않습니다.
Go 공식 문서에 따르면 Go 1.24부터 서버 소켓의 MPTCP가 기본으로 켜집니다. 커널 문서의 net.mptcp.enabled 기본값도 켜짐입니다. 그래서 코드에 MPTCP를 한 줄도 쓰지 않은 Go 서버도 조건에 들어갈 수 있습니다. 다만 AlmaLinux처럼 배포판이 꺼 둔 경우도 있고 실제 동작은 go.mod의 go 줄에 따라 달라집니다.
MPTCP를 꺼도 끝나지 않습니다. Go 보안팀은 이 버그가 MPTCP 전용이 아니며 MPTCP 리슨 소켓이 없는 시스템도 비슷한 공격에 취약할 수 있다고 밝혔습니다. 프로그램별로 끄는 방식은 "취약한 완화책"이라고 불렀습니다. Red Hat 공지도 인바운드 TCP를 받는 시스템이라면 직접 노출된다고 보고 커널 업데이트만이 완전한 해결이라고 적었습니다.
53분이 실전에서도 통하는지는 갈립니다
Anthropic의 시험 결과를 곧바로 인터넷 전체의 위험으로 보기는 어렵습니다. 공격 코드가 비공개이고 모델 이름과 시험한 커널, 실패 횟수, 사람이 단계별로 얼마나 개입했는지도 공개되지 않아 외부에서 재현할 수 없습니다. CVE 기록에도 MPTCP 언급이 없습니다.
위험하다는 근거는 재시도입니다. Anthropic은 경합에서 져도 연결 하나만 실패할 뿐 시스템이 멈추지 않는다고 적었습니다. 공격자는 들키기 전까지 계속 시도할 수 있습니다. 기관별 점수는 공격 복잡도 판단 하나로 갈렸습니다.

Red Hat은 8.1로 매겼다가 10월 30일 9.8로 올렸습니다. 안정적인 코드 실행에는 정밀한 힙 제어가 필요하다고 인정하면서도 사전 조건이 없다는 이유를 들었습니다.
어렵다는 쪽의 근거는 측정값입니다.
- xen0bit의 실험은 읽기가 일어나는 틈을 약 10나노초, 해제 시점을 약 90마이크로초 뒤로 측정했습니다. 약 14만 번 시도에서 겹친 적이 없었고 틈을 일부러 늘린 시험에서만 데이터가 샜습니다. 다만 저자도 패치는 하라고 적었고 자원이 빠듯한 가상 서버는 예외로 꼽았습니다.
- Alucard0x1의 공개 코드는 패치 안 된 Ubuntu 커널의 같은 기기 내 연결에서 320,829번 중 21번 적중했다고 주장합니다. 코드 실행 단계는 없습니다.
- Hacker News에서는 대부분의 통신사 라우터가 IP 옵션이 달린 패킷을 버린다는 의견이 나왔습니다. 측정 자료를 제시한 주장은 아니고 같은 데이터센터나 내부망 공격자에게는 해당하지 않습니다.
11월 1일 GitHub에서 이 CVE를 검색하면 저장소 41개가 나옵니다. 이번에 확인한 공개 코드 3개는 모두 메모리 오류 증명에서 멈췄습니다. 공격자가 Anthropic의 결과를 재현할 수 있는지는 아직 아무도 공개적으로 보여주지 못했습니다.
다섯 번째 공격 체인이었습니다
Linux 건은 Anthropic이 공개한 공격 체인 다섯 개 중 하나입니다. 4월에 Claude가 FreeBSD 원격 커널 공격 코드를 4시간에 완성했을 때는 대상이 운영체제 하나였습니다. 이번 글은 범위를 주요 소프트웨어로 넓혔습니다.
- Chrome: 버그 넷을 이어 클릭 한 번으로 샌드박스 밖 코드 실행. Google은 CVE 62개를 배정했고 Chrome 156까지 수정했습니다.
- Safari: 클릭 한 번으로 같은 출처 정책을 무력화해 기록과 쿠키를 읽었고 Apple이 수정했습니다.
- Android: USB로 연결한 잠긴 Pixel 9에서 사진을 추출했고 Google이 수정했습니다.
- Windows: 커널 QUIC 코드의 결함으로 원격에서 서버를 재시작시켰고(CVE-2026-33096), Microsoft가 수정했습니다.
나머지 넷은 수정이 끝났고 일반 사용자는 업데이트만 하면 됩니다. Linux만 수정본이 서버까지 도착하지 못했습니다.
오늘 서버에서 확인할 것
개발자와 서버 운영자에게 해당하는 내용입니다. 개인 노트북은 외부에서 들어오는 연결을 받지 않으면 우선순위가 낮습니다. 호스트에서 커널과 MPTCP 리슨 소켓을 먼저 봅니다. 컨테이너 안에서 실행하면 결과가 달라질 수 있습니다.
uname -r
sudo ss -lnMp
sysctl net.mptcp.enabled
수정 커널이 없는 서버에는 AlmaLinux가 공개한 규칙처럼 IPv4 옵션이 달린 TCP 패킷을 버리는 임시 조치를 쓸 수 있습니다. TCP 자체의 옵션은 다른 위치에 있어 일반 연결에는 영향이 없습니다.
sudo nft -f - <<'EOF'
add table ip cve_2026_98432
delete table ip cve_2026_98432
table ip cve_2026_98432 {
chain prerouting {
type filter hook prerouting priority -300; policy accept;
meta l4proto tcp ip hdrlength > 5 counter drop
}
}
EOF
이 규칙은 재부팅하면 사라집니다. 같은 호스트의 컨테이너끼리 오가는 트래픽은 막지 못하고 CIPSO 라벨을 쓰는 망을 끊을 수 있습니다. Red Hat도 비슷한 규칙에 대해 노출을 줄일 뿐 완전히 막지는 못한다고 적었습니다.
외부에서 바로 접속되는 Ubuntu나 RHEL 서버를 운영한다면, 오늘은 그 서버부터 ss -lnMp로 MPTCP 리슨 소켓을 확인하고 임시 규칙을 시험 서버에 먼저 적용해 보세요. 수정 패키지가 나오면 설치 후 재부팅까지 해야 새 커널이 돌아갑니다.