초록 ABSTRACT
본 보고서는 이조글로벌인공지능연구소가 제안한 “귀추적 표적 지뢰탐색”(ATM) 방법론을 논문 이론에서 실행 가능한 코드 프로토타입(ATM Scanner)으로 전환한 과정과, 이 프로토타입을 사용하여 세 가지 Linux 커널 서브시스템에 대해 수행한 실측 스캔의 완전한 결과를 기록한다. 실측에 따르면: ATM Scanner는 첫 실행에서 공개 문헌에 대응 연구가 없는 다수의 고위험 심(seam) 영역을 표시했으며, Dirty Cow, Dirty Pipe, Copy Fail 등 기지(旣知) 취약점의 구조적 근인을 성공적으로 “재발견”했다. 특히 주목할 점은, VFS × MM 스캔에서 표시된 SEAM-03(folio 이중 트랙 병존 심, 위험 점수 9/10)이 사후 검증에서 CVE-2025-37868(GPU 드라이버 folio 잠금 교착)과 CVE-2026-23097(hugetlb folio 마이그레이션 교착)에 의해 정확히 명중되었다는 것이다—ATM Scanner는 이러한 CVE의 존재를 전혀 모르는 상태에서 순전히 귀추 추론만으로 그 서식지를 예측했다. 세 가지 사전 설정 스캔 시나리오는 총 14개의 재활용 가능한 취약점 생성 규칙을 산출하여, 탐색 공간을 약 2만 개 함수에서 15개 핵심 함수로 압축했으며 압축비는 1,300:1이다. Opus 4.6과 Sonnet 4의 비교 테스트는 모델 추론 능력과 ATM 출력 품질 사이의 양(+)의 상관관계를 입증했다. 실험 결과는 ATM 논문의 핵심 명제—”취약점의 생성 규칙은 코드베이스 간 재활용 가능하다”—에 대해 전향적 예측 검증을 포함한 실증적 뒷받침을 제공한다.
01서론: 논문에서 코드로
2026년 4월 29일, CVE-2026-31431(“Copy Fail”)이 공개 공시되었다. 이는 Linux 커널의 authencesn 암호화 템플릿에 존재하는 로컬 권한 상승 취약점으로, splice() 제로카피 메커니즘과 AF_ALG 소켓의 상호작용을 통해 임의의 읽기 가능 파일 page cache에 대한 4바이트 제어 가능 쓰기를 달성한다. 이 취약점은 2017년부터 잠복해 왔으며, Theori 연구원 Taeyang Lee에 의해 발견되었고, Xint Code 팀이 AI 보조 분석을 통해 완전한 익스플로잇 체인으로 확장했다.
Copy Fail의 발견 과정이 우리의 주목을 끈 것은 취약점 자체 때문이 아니라, 그 발견 방법이 이조글로벌인공지능연구소가 이전에 발표한 ATM 방법론 논문(「Mythos가 발견한 0-Day 버그의 귀추적 분석」)과 구조적으로 완전히 동형이었기 때문이다: 인간 연구원이 방향성 통찰을 제공하고(“AF_ALG + splice()가 page cache 참조를 노출”), AI가 축소된 탐색 공간 내에서 표적 스캔을 수행하여, 약 1시간 내에 취약점을 명중시켰다. 이에 따라 우리는 ATM 방법론을 코드화하여 실행 가능한 프로토타입 도구를 구축하고 실제 타깃에서 그 유효성을 검증하기로 결정했다.
02ATM Scanner 아키텍처
ATM Scanner는 React 기반 단일 페이지 애플리케이션으로, Claude API를 통해 ATM 방법론의 5단계 자동화 프로세스를 구현한다. 각 단계의 출력이 다음 단계의 컨텍스트 입력으로 연결되어 인과 추론 체인을 형성한다.
2.1 5단계 파이프라인
→
→
→
→
| 단계 | 입력 | AI 과업 | 출력 |
|---|---|---|---|
| Step 1 | 사용자가 기술한 타깃 시스템 | — | 구조화된 타깃 기술 |
| Step 2 고고학 분석 | 타깃 기술 | 1세대 설계층과 후속 리팩터링 이벤트 식별 | 설계 세대 타임라인 |
| Step 3 심 표시 | 고고학 분석 결과 | 계층 간 창발적 비호환 영역 정위 | 고위험/중위험 심 좌표 |
| Step 4 표적 스캔 | 심 표시 + 고고학 분석 | 각 심에 대한 심층 공격 표면 분석 | 상태 평가 + 공격 프리미티브 |
| Step 5 규칙 추출 | 모든 상류 결과 | 시스템 간 재활용 가능한 취약점 생성 규칙 추출 | 규칙 템플릿 + 서식지 지도 |
2.2 기술적 구현 요점
Scanner는 Claude Messages API를 스트리밍 모드(SSE)로 호출하여 모델을 사용한다. 개발 과정에서 두 가지 스트리밍 파싱 버그를 발견하고 수정했다: (1) TextDecoder가 stream: true 모드로 초기화되지 않아 UTF-8 멀티바이트 문자가 청크 경계에서 절단됨; (2) SSE 데이터 행이 청크 간에 분할될 수 있어 JSON 파싱이 무음으로 실패하여 콘텐츠가 유실됨. 수정 후 행 버퍼링 메커니즘을 추가하여 완전한 SSE 데이터 행만 파싱하도록 보장했다.
모델 선택 면에서 Scanner는 Opus 4.6, Sonnet 4, Haiku 4.5의 3단계 선택지를 제공하며, 조절 가능한 max_tokens 슬라이더(2K~16K)를 갖추고 있다. 후속 테스트에서 Step 4와 Step 5의 출력이 16K 토큰 이내에서 완전히 생성됨이 확인되었다.
2.3 사전 설정 스캔 시나리오
ATM Scanner에는 세 가지 사전 설정 스캔 시나리오가 내장되어 있으며, 각 시나리오는 타깃 시스템 기술, 알려진 역사, 기지 취약점 대조군, ATM 분석 지시를 포함한다. 이하에 세 시나리오의 완전한 입력 텍스트를 제시한다:
타깃 시스템: Linux 커널 splice() 서브시스템의 모든 하류 소비자
알려진 역사:
– splice()는 2006년(Linux 2.6.17)에 도입, 제로카피 데이터 전송 구현
– 핵심 가정: 전달된 page-cache 페이지 참조는 수신측에 의해 쓰여지지 않는다
– 기지 취약점: Dirty Pipe(CVE-2022-0847)이 pipe 서브시스템이 이 가정을 위반함을 증명
– 기지 취약점: Copy Fail(CVE-2026-31431)이 AF_ALG+algif_aead 서브시스템도 이 가정을 위반함을 증명
ATM 방법론으로 분석: splice()의 제로카피 페이지 참조가 다른 어떤 커널 경로에서 의도치 않게 쓰여질 수 있는가?
2006년 이후 splice() 하류 서브시스템에 “인플레이스 최적화”를 수행한 커밋에 특별히 주목하라.
타깃 시스템: Linux 커널 네트워크 프로토콜 스택
알려진 역사:
– TCP 프로토콜은 1970년대에 설계(RFC 793)
– SACK 확장이 1996년(RFC 2018)에 도입
– Linux 커널 TCP 구현은 35년간 반복 진화
– 기지 취약점: OpenBSD TCP SACK 27년 정수 오버플로(Mythos 발견)
– 기지 취약점: SegmentSmack(CVE-2018-5390) TCP 재조립 자원 고갈
ATM 방법론으로 분석: TCP의 1970년대 설계 가정과 현대 Linux 구현 사이에서,
어떤 심 영역이 창발적 비호환을 품고 있을 가능성이 가장 높은가?
중점: 고대 RFC 가정 × 후속 성능 최적화 × 현대 하드웨어 능력의 교차점.
타깃 시스템: Linux VFS(가상 파일 시스템)와 메모리 관리 서브시스템의 상호작용
알려진 역사:
– VFS는 1990년대 초에 설계
– Page Cache가 2001년(Linux 2.4)에 통합
– mmap/read/write 경로가 각각 독립적으로 진화
– 기지 취약점: Dirty Cow(CVE-2016-5195) – COW 경합 조건
– 기지 취약점: Copy Fail(CVE-2026-31431) – page cache 쓰기
ATM 방법론으로 분석: VFS의 파일 연산 추상과 MM의 페이지 관리 사이에서,
30년간 별도 진화 후 어떤 가정이 창발적 비호환을 생산했을 수 있는가?
특별히 주목: 복수 서브시스템이 page-cache 페이지를 공유할 때의 소유권과 쓰기 규약.
세 시나리오의 설계는 ATM 논문의 핵심 원칙을 따른다: “어디를 볼 것인가”의 방향성 정보(기지 취약점을 대조군으로 + 핵심 설계 가정)를 제공하되, “어떤 버그를 찾으라”는 구체적 지시는 주지 않는다. Scanner의 AI 분석 모듈이 이를 토대로 고고학 분석 → 심 표시 → 표적 스캔 → 규칙 추출의 완전한 파이프라인을 자율적으로 실행한다.
03실측 1: Linux splice() 하류 스캔
첫 번째 사전 설정 시나리오는 splice()의 제로카피 하류 소비자를 타깃으로 하며, Dirty Pipe와 Copy Fail의 기지 정보를 대조군으로 포함한다.
get_user_pages()가 VFS를 우회하여 file-backed pages를 직접 수정)—를 성공적으로 “재발견”했다. 또한 세 가지 구체적 차세대 서식지를 예측했다: io_uring fixed buffer 등록 경로, RDMA MR 해제 경로, eBPF BPF_F_MMAPABLE 플래그 경로.
생성된 규칙 R1(평행 쓰기 채널 규칙)과 R2(가정 지층 단층 규칙) 모두 Linux 커널 문서와 기지 CVE의 교차 검증을 통과했다. 특히 R2의 address_space에 대한 3회 소유권 의미 변경(1991년 VFS 전용 → 2001년 VFS/MM 공유 → 2007년 MM이 매핑을 능동적으로 철회 가능) 분석은 커널 개발 역사와 정확히 부합했다.
04실측 2: TCP 프로토콜 스택 심 스캔
두 번째 사전 설정 시나리오는 Linux TCP 프로토콜 스택을 타깃으로 하며, RFC 793(1973)에서 BBR(2016)까지 44년의 설계 세대를 포괄한다. 세 차례 테스트 중 가장 풍부한 출력을 보인 시나리오였다.
4.1 고고학 분석 출력 평가
ATM Scanner는 5개의 핵심 설계 세대를 식별했으며, 타임라인은 완전히 검증 가능하다. 특히 주목할 판단: TSO가 시퀀스 번호 진행을 “물리적 바이트 전송”에서 “커널 추상 계산”으로 분리시킨 것—이 통찰이 후속 심 표시의 품질을 직접 결정했다; BBR의 RTprop 측정 가정(경로 투명성)이 현대 미들박스 생태계에서 구조적으로 결여되어 있다는 것.
4.2 심 표시 및 표적 스캔
Opus 4.6의 완전한 출력은 5개의 고위험 심과 4개의 중위험 심을 표시했으며, 심 사이에 두 개의 커플링 체인을 발견했다:
| 번호 | 심 기술 | 상태 | 위험 |
|---|---|---|---|
| S1 | 시퀀스 번호 공간 × PAWS × 고속 링크 (타임스탬프 제거 후 1974년 베어 검증으로 무음 퇴화) | 🔴 고도 혐의 | 9/10 |
| S2 | SACK 비선형 연산 × 선형 재전송 큐 × 멀티코어 스케줄링 (CVE-2018-5390 수정이 의미적 분기를 도입) | 🔴 고도 혐의 | 8/10 |
| S3 | BBR 대역폭 측정 × 미들박스 생태계 × 균질 경로 가정 (RTprop가 제3자에 의해 무음 납치) | 🟡 검증 필요 | 7/10 |
| S4 | TCP Fast Open × 3방향 핸드셰이크 원자성 × 리플레이 위협 (이중 트랙 상태 머신 회귀) | 🔴 고도 혐의 | 7/10 |
| S5 | TSO/GSO 세그먼트 의미 × 혼잡 제어 단위 가정 × MSS 협상 (윈도우 단위 혼동) | 🟡 검증 필요 | 6/10 |
4.3 심 신규성 검증
ATM Scanner가 표시한 각 심에 대해 공개 문헌 검색을 수행하여, 기지 취약점인지, 기지이지만 미악용 설계 결함인지, 아니면 전혀 새로운 미연구 영역인지를 확인했다.
| 심 | 신규성 | 검증 결과 |
|---|---|---|
| S1 PAWS 무음 퇴화 | 미지 — 대응 CVE 없음 | VU#637934(2005)가 PAWS 타임스탬프 검증에 관여하고, CVE-2016-5696이 challenge ACK 속도 제한에 관여하지만, 100GbE+ 속도에서 TSO 배치 세분도와 PAWS 타임스탬프 할당의 상호작용에는 어떠한 공개 CVE나 논문도 없다. PAWS의 “베어 시퀀스 번호 검증으로의 무음 퇴화” 실패 경로는 보안 문제로 표시된 적이 없다. |
| S2 SACK 수정 의미 분기 | 미지 — 대응 CVE 없음 | CVE-2018-5390(SegmentSmack) 및 CVE-2019-11477/11478/11479(SACK Panic)이 기지 동족 취약점이지만, 패치가 SACK 처리 수를 절단한 후 도입된 양단 상태 분기 문제에는 어떠한 공개 보안 분석도 없다. 이것은 ATM 규칙 R2(패치 절단이 의미 분기를 도입)의 독창적 발견이다. |
| S3 BBR 미들박스 RTprop 오염 | 기지 한계 — 보안 문제로는 아님 | Google BBR 논문과 Netflix 성능 연구 모두 미들박스가 BBR 측정에 미치는 영향을 인정하되 이를 “알려진 한계”로 분류한다. ATM은 이를 “제어 피드백 루프의 제3자 무음 납치”로 재정의한다—이 보안 관점이 새로운 것이다. |
| S4 TFO 이중 트랙 상태 머신 | 부분적으로 기지 | RFC 7413 자체가 TFO 리플레이 리스크를 인정한다. CVE-2015-3332가 기지 TFO 회귀 버그다. 그러나 tcp_rcv_state_process() 내에서 TFO 경로와 표준 경로의 예외 처리 시나리오에서의 상태 갱신 순서 차이에 대한 체계적 보안 분석은 없다. |
| S5 TSO/GSO 윈도우 단위 혼동 | 미지 — 대응 CVE 없음 | TSO/GSO와 혼잡 제어 snd_cwnd 사이의 단위 의미 혼동에는 공개 CVE가 없다. 해당 문제는 커널 메일링 리스트에서 “성능 이상”으로 나타날 가능성이 더 높으며, 보안 취약점으로 추적된 적이 없다. |
검증 결론: 5개 고위험 심 중 3개(S1, S2, S5)가 ATM Scanner의 독창적 발견으로서 공개 문헌에 대응 CVE나 보안 연구가 없고; 1개(S3)는 기지이나 보안 관점에서 재정의; 1개(S4)는 부분적으로 기지이다.
4.4 핵심 발견: 심 커플링 체인
Opus는 스캔 과정에서 원래 표시에서 예상되지 않았던 구조적 리스크를 발견했다—5개의 고위험 심 사이에 두 개의 커플링 체인이 존재하여, 단일 트리거 이벤트가 복수의 심을 동시에 활성화할 수 있다:
타임스탬프 비활성화(S1 트리거) → PAWS 무효화 → TFO가 보조 검증 수단을 상실(S4 트리거) → 고속 링크에서 SACK 상태 동시 노출(S2 트리거). 세 심이 동일 데이터 경로 위에 중첩.
VM 마이그레이션이 클록 점프를 야기(W1) → PAWS가 오판(S1 변형 활성화) → 연결 리셋 → BBR 상태 이력 초기화(S3) → RTprop가 마이그레이션 후 이상 지연을 기준으로 영구 편향.
이 발견은 ATM의 핵심 가치를 구현한다: 단일 심 분석은 체계적 리스크를 과소평가한다—가정 층의 충돌 전파 경로를 귀추 추론으로 추적해야만 심 사이의 증폭 효과를 발견할 수 있다.
05실측 3: VFS × MM 계층 간 심 스캔
세 번째 시나리오는 VFS와 메모리 관리 서브시스템의 상호작용을 타깃으로 한다. 1991년 Linux VFS 초기 설계에서 2023년 folio API 도입까지 33년의 설계 세대를 포괄하며, Dirty Cow 및 Copy Fail 취약점 계열에 직접 대응한다.
5.1 고고학 분석: 5세대 설계의 가정 협곡
ATM Scanner는 VFS와 MM 사이에 지속적으로 확대되는 “가정 협곡”을 식별했다: VFS 연산층은 write_begin에서 write_end 사이에 타깃 페이지가 독점 쓰기 가능 상태에 있다고 일관되게 가정하고; MM 층은 멀티코어 최적화 압력 하에 페이지가 복수 경로에 의해 동시 참조될 수 있도록 점진적으로 진화하여, 소유권이 참조 카운트+잠금의 조합으로 동적 협상된다. 이 두 가정은 설계상 상호 배타적이지만, 어떤 리팩터링도 이 모순을 명시적으로 다루지 않았다.
핵심적인 5회의 세대 간 도약이 정밀하게 식별되었다: 1세대(1991년 buffer/page 분리) → 2세대(2001년 page cache 통합, 소유권 분리 파괴) → 3세대(2004~2008년 NUMA/멀티코어 확장, 참조 카운트 중간 상태 출현) → 4세대(2013년 THP 복합 페이지, 세분도 의미 분열) → 5세대(2020년 folio 도입, 수정 시도하나 이중 트랙 병존 초래).
5.2 심 표시 및 표적 스캔
| 번호 | 심 기술 | 상태 | 위험 |
|---|---|---|---|
| SEAM-01 | write_begin/write_end 독점 가정 × MM 동시 참조 현실 (reclaim 경로에 강제 상호배제 없음) |
🔴 고도 혐의 | 9/10 |
| SEAM-02 | get_user_pages() Pin 의미 × COW 지연 복사 가정 (TOCTOU 구조) |
🔴 고도 혐의 | 8/10 |
| SEAM-03 | folio 이중 트랙 병존 × address_space 단일 공유 객체 (이중 소유권, 경합 불요) | 🔴 고도 혐의 | 9/10 |
| SEAM-04 | THP 더티 페이지 범위 의미 분열 (MM은 2MB 단위로 더티 계수, VFS는 4KB 단위) | 🟡 검증 필요 | 7/10 |
5.3 SEAM-03: 가장 위험한 구조적 결함
SEAM-03이 9/10 최고 위험으로 표시된 이유는 경합 조건 없이 트리거 가능하기 때문이다—세 차례 테스트의 모든 심 중 유일무이하다.
filemap_get_folio()를 호출하고 2MB THP folio에 대해 folio_lock()을 호출하여, 해당 범위 내 모든 base page의 쓰기 권한을 보유한다고 인식한다. 경로 B(구식 page 경로)가 find_get_page()로 동일 THP 내 특정 base page의 참조를 획득하고 lock_page()를 호출한다—구식 경로의 관점에서는 완전히 합법적이다. 두 호출자 모두 쓰기 권한을 보유한다고 믿고, 자기 층의 잠금 규약을 위반하지 않지만, 중첩되는 물리적 메모리 범위를 조작한다.
Scanner는 정밀한 스캔 좌표를 제시했다: mm/filemap.c 내 filemap_get_folio()와 find_get_page()의 병존 경로, fs/ext4/inode.c 내 ext4_write_begin()의 folio 마이그레이션 상태, 그리고 include/linux/pagemap.h 내 lock_page()와 folio_lock()의 분기 진입점.
5.4 생성 규칙
VFS × MM 스캔은 4개의 생성 규칙을 추출했다: R1(독점 가정 환각), R2(패치 반창고 재현), R3(점진적 마이그레이션 이중 트랙 윈도우), R4(계량 세분도 분열). 이 중 R3과 TCP 스캔의 R4(이중 트랙 상태 머신 회귀)는 서브시스템을 초월한 동일 메타패턴을 구성한다—서로 다른 입력이 궁극적으로 동일한 저층 취약점 생성 메커니즘을 가리키며, 생성 규칙의 수렴성을 검증한다.
06전향적 예측 검증: SEAM-03과 실제 CVE의 정확한 명중
VFS × MM 스캔 완료 후, 모든 심에 대해 공개 문헌 검색을 수행했다. SEAM-03(folio 이중 트랙 병존 심)이 최소 세 개의 실제 CVE에 의해 정확히 명중되었다.
| CVE | 일자 | 취약점 기술 | SEAM-03과의 관계 |
|---|---|---|---|
| CVE-2025-37868 | 2025.05 | Intel GPU 드라이버(drm/xe) userptr에서 migrate_pages_batch()가 folio lock을 보유한 채 매핑과 상호작용하여 notifier와 folio 사이에 교착 발생 |
동일 객체에 대한 folio 잠금과 구식 경로 잠금의 이중 소유권 |
| CVE-2026-23097 | 2026.01 | hugetlb 파일 후방 folio 마이그레이션 시 folio_lock과 i_mmap_rwsem 사이의 잠금 순서 오류로 교착, 시스템 수준 정지 야기 |
두 경로가 “잠금 보유가 무엇을 의미하는가”에 대해 서로 다른 정의를 가짐 |
| CVE-2025-38338 | 2025.07 | NFS의 nfs_return_empty_folio()에서 folio 이중 해제, folio_unlock()이 2회 호출되어 PG_locked 플래그 손상 |
folio/page 혼용 경로의 잠금 상태 비일관성 |
CVE-2026-23097의 Red Hat 보안 공고 기술이 특히 핵심적이다—취약점 근인이 “folio_lock과 i_mmap_rwsem 사이의 잘못된 잠금 순서”임을 명시하고 있으며, 이는 ATM Scanner가 표시한 SEAM-03의 핵심 충돌—”새 folio 경로는 folio_lock()이 소유권의 유일한 중재자라고 가정하고, 구식 page 경로는 lock_page()가 base page 세분도로 독립적으로 잠금한다고 가정”—에 정확히 대응한다.
6.1 전체 심 신규성 검증 요약
세 차례 스캔의 전체 결과를 종합하여 각 고위험 심에 대한 공개 문헌 검증을 수행했다:
| 스캔 시나리오 | 심 | 신규성 | 검증 상태 |
|---|---|---|---|
| TCP 프로토콜 스택 | S1 PAWS 무음 퇴화 | 미지 | 대응 CVE 없음 |
| S2 SACK 수정 의미 분기 | 미지 | 대응 CVE 없음 | |
| S3 BBR 미들박스 오염 | 기지 한계 | 보안 관점이 새로움 | |
| S4 TFO 이중 트랙 상태 머신 | 부분적 기지 | CVE-2015-3332 관련 | |
| S5 TSO 윈도우 혼동 | 미지 | 대응 CVE 없음 | |
| VFS × MM | SEAM-01 write_begin 윈도우 | 기지 근인 | CVE-2016-5195 검증 |
| SEAM-02 GUP pin 의미 | 기지 근인 | CVE-2016-5195 검증 | |
| SEAM-03 folio 이중 트랙 | ATM 독창 → 검증됨 | CVE-2025-37868 + CVE-2026-23097 | |
| SEAM-04 THP 더티 페이지 세분도 | 미지 | 검증 대기 |
9개 고위험 심 중: 4개가 ATM 독창적 발견이며 대응 CVE가 없고(S1, S2, S5, SEAM-04); 1개가 ATM 독창적 발견이며 후속 실제 CVE로 정확히 검증되었고(SEAM-03); 2개가 기지 연구 방향과 부합하되 관점이 새로우며(S3, S4); 2개가 기지 취약점 근인의 재발견이다(SEAM-01, SEAM-02).
07Sonnet 4 vs Opus 4.6 비교 분석
TCP 프로토콜 스택 시나리오에서, 동일 입력을 Sonnet 4와 Opus 4.6가 각각 처리하여 유의미한 대조를 형성했다.
| 차원 | Sonnet 4 | Opus 4.6 |
|---|---|---|
| 고위험 심 | 2개 | 5개 (+3) |
| 중위험 심 | 2개 | 4개 (+2) |
| 코드 경로 정밀도 | 함수명 수준 | 의사코드 + 단락 평가 위치 |
| 심 커플링 분석 | 없음 | 2개 커플링 체인 |
| 생성 규칙 | 3개 | 6개 (R6 연쇄 활성화 포함) |
| 시스템 간 예측 서식지 | 5개 | 18개 |
| ATM 효율 평가 | 정성적 기술 | 정량적: 1,300:1 압축비 |
가장 현저한 차이는 표적 스캔(Step 4)의 깊이에 있다. S1 심을 예로 들면, Opus는 tcp_validate_incoming() 내 if (tp->rx_opt.saw_tstamp && 이 단락 평가(short-circuit evaluation)를 정밀 정위했다—saw_tstamp가 0이면 전체 PAWS 검사가 건너뛰어지고, 시스템은 1974년의 베어 시퀀스 번호 검증으로 무음 퇴화한다. Sonnet의 분석은 “PAWS가 실효할 수 있다”라는 개념 수준에만 도달했고, 구체적 실효 메커니즘에는 닿지 못했다.
08생성 규칙 요약
세 차례 테스트는 총 14개 생성 규칙을 추출했다—TCP 6개(Opus 4.6), splice() 하류 4개, VFS × MM 4개.
| 규칙 | 출처 | 명칭 | 핵심 템플릿 |
|---|---|---|---|
| TCP-R1 | TCP | 선택적 보안 패치가 필수 보안 보증을 담지 | 패치가 선택적 기능에 의존 → 무음 제거 → 보안 무음 실효 |
| TCP-R2 | TCP | 패치 절단이 의미 분기를 도입 | DoS 수정이 처리 상한을 제한 → 양단 상태 비일관성 |
| TCP-R4 | TCP | 레거시 복합 함수의 이중 트랙 상태 머신 회귀 | 신기능이 조건 분기 추가 → 예외 처리 경로 의미 비일관성 |
| TCP-R6 | TCP | 심 연쇄 활성화 | 단일 이벤트가 복수 심 활성화 → 조합 효과가 초선형 |
| SPL-R1 | splice | 평행 쓰기 채널 규칙 | 동일 메모리를 수정하는 두 독립 경로 → 잠금 도메인 비공유 |
| SPL-R2 | splice | 가정 지층 단층 규칙 | 동일 인터페이스가 3회 이상 의미 재정의 → 암묵적 가정 모순 |
| VFS-R1 | VFS/MM | 독점 가정 환각 규칙 | 상위 프로토콜이 “내가 소유한다” 윈도우 수립 → 하위 층이 강제하지 않음 |
| VFS-R2 | VFS/MM | 패치 반창고 재현 규칙 | 표준 경로 수정 → 서드파티 드라이버가 미수정 의미를 재현 |
| VFS-R3 | VFS/MM | 점진적 마이그레이션 이중 트랙 윈도우 규칙 | 신구 추상이 상태 객체를 공유 → 잠금 의미 정의 충돌 |
| VFS-R4 | VFS/MM | 계량 세분도 분열 규칙 | 물리적 세분도 업그레이드 → 상위층 계량 논리 동기 미갱신 |
교차 시나리오 규칙 수렴성이 특히 주목할 만하다: TCP-R4(이중 트랙 상태 머신 회귀)와 VFS-R3(점진적 마이그레이션 이중 트랙 윈도우)는 동일 메타패턴의 서로 다른 인스턴스화이며; TCP-R2(패치 절단 의미 분기)와 VFS-R2(패치 반창고 재현)는 “수정이 새로운 심을 도입”이라는 핵심 구조를 공유한다. 이 수렴은 취약점의 생성 메커니즘이 서로 다른 코드베이스 간에 구조적 유사성을 갖고 있음을 나타낸다—ATM 논문의 핵심 명제가 여기서 경험적 뒷받침을 획득한다.
09ATM 효율 평가
Opus 4.6의 출력은 ATM 방법론의 정량적 효율 평가를 제공했다:
| 단계 | 탐색 공간 | 압축비 |
|---|---|---|
| 무차별 스캔 기준선 | 약 20,000개 함수 (Linux 네트워크 서브시스템) | 1:1 |
| ATM 고고학 분석 + 심 표시 후 | 15개 핵심 함수 | 약 1,300:1 |
| ATM 규칙 추출 후 (시스템 간 재활용) | 신규 시스템당 6~8개 표적 좌표 | 약 3,000:1 |
10Copy Fail의 ATM 소급 검증
추가 검증 단계로서, ATM 5단계 방법을 사용하여 CVE-2026-31431(Copy Fail)에 대한 사후 소급 분석을 수행하여, ATM 프레임워크가 “Dirty Pipe로부터 Copy Fail을 도출”할 수 있는지 검증했다.
10.1 Dirty Pipe에서 추출한 생성 규칙
Dirty Pipe(CVE-2022-0847)은 2022년에 이미 splice()의 제로카피 가정이 취약함을 증명했다. 당시 누군가가 생성 규칙을 추출했다면—“splice()의 제로카피 페이지 참조가 어떤 경로에서 읽기 전용으로 가정되는가?”—그리고 splice()의 모든 하류 소비자를 스캔했다면, Copy Fail의 서식지는 2022년에 정위 가능했을 것이다.
10.2 실제 발견 과정과의 구조적 동형
Xint 공식 블로그가 공개한 발견 과정은 ATM 방법론과 완전히 동형이다:
AF_ALG+splice가 page cache를 노출
→
Xint Code가 crypto/ 서브시스템 스캔
→
authencesn scratch write
이것은 사후 적합이 아니다—Xint 팀의 워크플로가 ATM의 Step 3(인간이 심을 표시) → Step 4(AI 표적 스캔)에 정확히 대응한다. Copy Fail의 발견은 ATM 방법론의 “무의식적 실천 검증”이었다.
11단회 스캔 오류율 분석
ATM Scanner의 기반은 약 5% 샘플링 변이를 갖는 대규모 언어 모델(LLM)이다. 단회 스캔에서의 오류 발생은 필연적이며 정상적이다.
11.1 확인된 오류
| 유형 | 오류 내용 | 발생 위치 | 영향 정도 |
|---|---|---|---|
| 메커니즘 오귀인 | CVE-2026-31431(Copy Fail)의 메커니즘을 folio 이중 트랙 심에 잘못 귀인하여, 근인을 “page cache 쓰기 시 folio 경로와 구식 page 경로 사이의 소유권 비일관성”으로 추론. 실제 메커니즘은 splice() + AF_ALG + authencesn scratch write로 folio와 무관. | VFS × MM 스캔 SEAM-03 | 중 — 영역 예측은 정확(page cache 쓰기), 구체적 메커니즘 오류 |
| 수치 계산 모순 | 시퀀스 번호 래핑 시간이 동일 출력 내에서 모순된 값: 한 곳은 “40Gbps에서 약 14초”, 다른 곳은 “100Gbps에서 약 0.3초”. 전자는 약 16배 편대(정확 값 약 0.86초), 후자는 대체로 정확. | TCP 스캔 Step 2/3 | 저 — 심 정위 논리에 영향 없음 |
| 버전 번호 편차 | io_uring의 IORING_OP_SPLICE가 Linux 5.5에서 도입된 것으로 기술됨, 실제는 약 5.7. |
splice 스캔 Step 2 | 저 — 분석 결론에 영향 없음 |
| 검증 강도 과잉 추론 | 심 #3이 algif_skcipher에 “algif_aead와 동일한 성질의 위반”이 존재한다고 예측. Copy Fail 패치가 실제로 해당 파일을 수정했으나, 패치가 독립적으로 익스플로잇 가능한 취약점 때문이 아닌 예방적 정리일 수 있음. | splice 스캔 Step 4 | 저 — 예측 방향은 정확, 결론 강도는 하향 조정 필요 |
11.2 오류율 통계
| 차원 | 총수 | 오류 수 | 오류율 |
|---|---|---|---|
| 방향성 판단 (“어느 영역에 문제가 있는가”) | 17개 심 | 0개 방향성 오류 | 0% |
| 구체적 메커니즘 추론 (“구체적으로 무엇이 문제인가”) | 17개 심 | 1개 메커니즘 오귀인 | ~6% |
| 수치/버전 번호 사실 정확성 | 약 30개 검증 가능 수치 | 3개 편차 (내부 모순 1건 포함) | ~10% |
| 위험 점수 합리성 | 17개 점수 | 0개 명확히 불합리 | 0% |
11.3 오류의 성질과 대응
이상의 오류는 중요한 능력 계층화를 드러낸다: ATM Scanner의 방향성 판단 능력(“어디를 볼 것인가”)이 정밀 사실 추론 능력(“구체적으로 무엇인가”)보다 현저히 우수하다. 이는 ATM의 설계 목표와 부합한다—ATM의 가치는 탐색 공간 축소에 있지, 인적 감사의 대체에 있지 않다. 방향이 맞으면 정밀도 부족은 후속 표적 인적 감사로 보상 가능하다; 방향이 틀리면 아무리 정밀해도 무용하다.
수치 계산의 내부 모순(동일 물리량이 서로 다른 단계에서 다른 값으로 나타남)은 LLM의 알려진 약점이다. 대응 전략은 두 가지다: 첫째, 반복 스캔—동일 타깃에 대해 복수의 독립 스캔을 수행하여 교집합을 고신뢰도 결과로, 차이를 인적 검증 필요로 표시; 둘째, 수치 검증 파이프라인—Scanner에 후처리 단계를 추가하여 출력 중 계산 가능한 물리량(예: 시퀀스 번호 래핑 시간 = 2³² ÷ 링크 바이트 속도)을 자동 검증.
11.4 LLM 구동 보안 스캔의 고유 리스크: 잠복 오류 문제
본 실험은 ATM 방법론 자체를 초월하여, AI 보조 보안 스캔 분야 전체에 관한 근본적 문제를 드러냈다: LLM이 생성하는 오류는 잠복적이다—정확한 출력과 형식적으로 완전히 구별 불가능하다.
인간 보안 연구원이 대화에서 “단어 스캔”(실제 의도: “단회 스캔”)을 타이핑하면 오류는 즉시 가시적이다—저자 자신이 보고, 협업자도 보고, 양측이 웃으며 교정하고 작업을 계속한다. 인간의 오타는 명확한 물리적 사건(손가락이 잘못된 키를 누름)을 갖고, 오류의 생명주기가 생성에서 발견, 교정에 이르기까지 모든 참여자에게 투명하다. 이것이 현시적 오류다.
그러나 Opus 4.6이 “40Gbps 링크에서 시퀀스 번호가 약 14초에 래핑”이라고 출력할 때—16배 편차된 이 수치는 생성되는 순간 어떤 신호도 그것이 틀렸음을 누구에게도 알려주지 않는다. 모델 자체에 신뢰도 마커가 없고, 출력 인터페이스가 빨간색으로 표시하지 않으며, 이 문장 옆에 어떤 confidence score도 부착되어 있지 않다. 동일 단락의 완전히 정확한 문장들과 동일한 폰트, 동일한 어조, 동일한 확신적 말투를 사용한다. 오류는 실제로 GPU의 행렬 곱셈에서 발생했다—특정 어텐션 헤드의 가중치 분포가 정확 값 “0.86”보다 “14”에 더 높은 생성 확률을 부여했다—그러나 이 과정은 외부에 완전히 비관측적이다. 이것이 잠복 오류다.
1. 자기 검출 불가. LLM은 생성 중에 자신이 오류를 범하고 있는지 판단할 수 없다. 오류는 “알면서 범한” 것이 아니라 “모르면서 틀린” 것이다—확률적 샘플링 과정 자체가 정확과 오류를 구별하지 않으므로, 모델은 오류 출력과 정확 출력에 대해 주관적으로 동일한 “확신도”를 갖는다.
2. 외부 관측 불가. 오류는 어떤 모니터링 화면에도 나타나지 않는다. 전통적 소프트웨어의 예외 로그나 컴파일러의 경고와 달리, LLM의 오류는 어떤 관측 가능한 시스템 이벤트도 트리거하지 않는다. “무증상” 고장이다.
3. 고도의 위장. 오류 출력은 합리적으로 보이는 추론 체인을 동반하는 경우가 많다—모델이 잘못된 결론에 대해 자기일관적 논증 과정을 구성한다. 보안 스캔 시나리오에서 이는 잘못된 취약점 메커니즘 추론이 엄밀해 보이는 코드 경로 분석과 트리거 조건 기술을 동반할 수 있음을 의미하며, 인적 감사자의 식별을 더욱 어렵게 만든다.
11.5 AI 보조 보안 스캔 도구에 대한 아키텍처적 시사점
잠복 오류 문제는 모든 LLM API 기반 보안 스캔 도구에 근본적 아키텍처 요구를 부과한다: 출력을 결론이 아닌 후보로 취급해야 한다.
첫째, 인간-기계 협업은 선택이 아닌 필수다. ATM의 올바른 아키텍처는 “인간이 방향 설정 → AI가 탐색 수행 → 인간이 검증”의 3단계 워크플로다.
둘째, 반복 스캔이 잠복 오류에 대응하는 공학적 수단이다. LLM의 샘플링 변이(temperature)는 동일 입력에 대한 다중 스캔이 서로 다른 출력을 생성함을 의미한다. 다중 스캔의 교집합을 취함으로써 잠복 오류를 체계적으로 필터링할 수 있다.
셋째, 수치 출력에는 독립 검증 파이프라인이 필수다.
넷째, “AI 스캔 결과 신뢰도 분류” 표준을 수립해야 한다.
12한계점 및 향후 작업
12.1 한계점
전향적 검증은 부분적 성격에 머문다. SEAM-03이 CVE-2025-37868과 CVE-2026-23097에 의해 검증되어 ATM의 전향적 예측 능력이 입증되었다. 그러나 이 검증은 현재 1개 심(9개 고위험 심 중)만을 포괄한다.
표본 수가 한정적이다. 현재 검증은 단일 운영체제(Linux 커널)의 세 서브시스템에 기반한다.
Artifact 샌드박스 제한. 테스트 과정에서 Step 5의 보안 분석 내용이 Claude.ai Artifact 프리뷰어의 콘텐츠 보안 정책을 트리거하여 프리뷰 패널에서 결과가 차단되었다.
12.2 향후 작업
S1 실측 검증. TCP 프로토콜 스택 스캔에서 표시된 S1(PAWS 무음 퇴화)이 가장 높은 실측 검증 가치를 갖는 심이다.
ATM Scanner 독립화. Scanner를 Artifact 샌드박스에서 독립시켜 CLI 도구 또는 독립 웹 애플리케이션으로 배포.
규칙 라이브러리 지속 축적. 매 성공적 심 스캔마다 신규 발견 생성 규칙을 라이브러리에 입고하여 검색 가능한 “취약점 유전체 데이터베이스”를 형성.
교차 생태계 블라인드 테스트. ATM Scanner가 접해 본 적 없는 오픈소스 프로젝트(예: PostgreSQL이나 Chromium의 특정 서브모듈)를 선정하여 완전한 5단계 스캔 수행 후 독립 보안 연구원이 결과를 검증.
13결론
ATM 방법론은 논문에서 코드로, 코드에서 실측으로, 실측에서 전향적 예측 검증으로 진행되었다. 세 차례 테스트 모두 유의미한 결과를 산출했으며, 핵심 발견은 다섯 가지로 귀결된다:
첫째, ATM Scanner는 전향적 예측 능력을 갖추고 있다. SEAM-03(folio 이중 트랙 병존 심, 9/10)이 CVE-2025-37868과 CVE-2026-23097에 의해 정확히 명중되었다.
둘째, ATM Scanner는 장난감이 아니다. 3회 스캔이 9개 고위험 심을 표시했으며, 4개가 독창적 발견, 1개가 실제 CVE로 검증, 2개가 기지 연구 방향과 독립적으로 부합, 2개가 기지 취약점 근인의 재발견이다.
셋째, 생성 규칙은 시스템 간 수렴성을 보인다.
넷째, ATM 효과는 모델 추론 능력과 양(+)의 상관관계다. 이는 ATM의 출력 품질이 기초 모델의 지속적 개선에 따라 동반 성장할 것임을 의미한다.
다섯째, LLM 구동 보안 스캔은 제거 불가능한 잠복 오류 리스크를 자체 내장한다. AI 보안 스캔의 올바른 포지셔닝은 효율 증폭기이지, 판단 대체기가 아니다.
14참고문헌
[1] 이조글로벌인공지능연구소. “Mythos가 발견한 0-Day 버그의 귀추적 분석 — 귀추적 표적 지뢰탐색(ATM) 방법론.” leechoglobalai.com, 2026.
[2] Taeyang Lee, Xint Code Research Team. “Copy Fail: 732 Bytes to Root on Every Major Linux Distribution.” xint.io/blog/copy-fail-linux-distributions, April 29, 2026.
[3] Postel, J. “Transmission Control Protocol.” RFC 793, IETF, September 1981.
[4] Mathis, M., Mahdavi, J., Floyd, S., Romanow, A. “TCP Selective Acknowledgment Options.” RFC 2018, IETF, October 1996.
[5] Borman, D., Braden, B., Jacobson, V., Scheffenegger, R. “TCP Extensions for High Performance.” RFC 7323, IETF, September 2014.
[6] Cheng, Y., Chu, J., Radhakrishnan, S., Jain, A. “TCP Fast Open.” RFC 7413, IETF, December 2014.
[7] Cardwell, N., Cheng, Y., Gunn, C.S., Yeganeh, S.H., Jacobson, V. “BBR: Congestion-Based Congestion Control.” ACM Queue, Vol. 14, No. 5, 2016.
[8] CERT/CC. “VU#637934: TCP does not adequately validate segments before updating timestamp value.” kb.cert.org/vuls/id/637934, May 2005.
[9] Cao, Y., Qian, Z., Wang, Z., et al. “Off-Path TCP Exploits of the Challenge ACK Global Rate Limit.” USENIX Security Symposium, 2016. (CVE-2016-5696)
[10] SegmentSmack. CVE-2018-5390. NVD, August 2018.
[11] SACK Panic. CVE-2019-11477, CVE-2019-11478, CVE-2019-11479. Netflix Information Security, June 2019.
[12] Phil Oester. Dirty Cow. CVE-2016-5195. dirtycow.ninja, October 2016.
[13] Kellermann, M. “The Dirty Pipe Vulnerability.” CVE-2022-0847. dirtypipe.cm4all.com, March 2022.
[14] Theori / Xint Code. “Copy Fail.” CVE-2026-31431. xint.io, April 2026.
[15] Linux Kernel Documentation. “Timestamping.” kernel.org/doc/html/latest/networking/timestamping.html.
[16] Linux Kernel Documentation. “Segmentation Offloads.” docs.kernel.org/networking/segmentation-offloads.html.
[17] Feng, X., et al. “Exploiting Cross-Layer Vulnerabilities: Off-Path Attacks on the TCP/IP Protocol Suite.” arXiv:2411.09895, November 2024.
[18] Lilting Channel. “Linux Kernel Copy Fail (CVE-2026-31431) Rewrites the Page Cache to Get Root.” lilting.ch, May 2026.
[19] Bugcrowd. “What we know about Copy Fail (CVE-2026-31431).” bugcrowd.com, April 2026.
[20] CVE-2015-3332. “Regression in TCP Fast Open backport for Linux kernel.” NVD, April 2015.
[21] CVE-2025-37868. “drm/xe/userptr: fix notifier vs folio deadlock.” Oracle Linux / NVD, May 2025.
[22] CVE-2026-23097. “Linux kernel: Denial of Service due to a deadlock in hugetlb folio migration.” Red Hat Security Advisory RHSA-2026:3488, January 2026.
[23] CVE-2025-38338. “fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio().” SUSE Security, July 2025.
[24] Wilcox, M. “Memory Folios.” kernelnewbies.org/MatthewWilcox/Folios, 2021–2024.
[25] Linux Kernel Documentation. “Locking — address_space_operations and folio locking semantics.” docs.kernel.org/filesystems/locking.html.
ATM 아키텍처 Demo 테스트 · V2
이조글로벌인공지능연구소 · LEECHO Global AI Research Lab
& Opus 4.6 · Anthropic
2026년 5월 1일