검사해야 할 두 크기
FUSE는 사용자 공간 파일 시스템 서버의 응답을 커널에서 처리합니다. CVE-2026-31694의 대상은 fs/fuse/readdir.c의 fuse_add_dirent_to_cache()입니다. 기존 코드는 엔트리가 현재 페이지의 남은 공간보다 크면 새 페이지로 이동했지만, 엔트리 자체가 PAGE_SIZE를 넘는지는 검사하지 않았습니다. 수정은 한 페이지에 담을 수 없는 엔트리를 캐시에 복사하기 전에 거부합니다.
전체 레코드 길이와 페이지 용량을 비교합니다. 페이지보다 크면 캐시에 복사하지 않습니다.
한 페이지에 들어가는 레코드라도 현재 남은 공간이 부족하면 새 페이지가 필요합니다.
복사는 검증된 페이지 범위 안에서 이루어져야 합니다. 페이지 이동만으로 길이 검사를 대신하지 않습니다.
공식 결함과 연구자의 영향 사례를 구분합니다
2026년 5월 1일 커널 공지는 4 KiB 페이지에서 직렬화된 4,120 B 레코드가 24 B를 초과해 쓰는 사례를 설명합니다. 이것은 페이지 경계 오류의 확인이며, 모든 시스템에서 같은 권한 상승이 가능하다는 판정은 아닙니다.
Stanley Shaw는 자신의 연구 환경에서 읽기 전용 파일의 메모리 내 페이지 캐시를 바꿔 로컬 권한을 높인 사례를 보고했습니다. 이는 연구자에게 귀속한 결과이며 이 글에서 독립 재현하지 않았습니다. 디스크에 저장된 파일 변경과 메모리 캐시 손상은 같은 사건이 아닙니다. 공격 코드·배치 도식·재현 절차는 다루지 않습니다.
실제 커널 패키지로 수정 여부를 확인합니다
커널 공지는 6.6.136·6.12.84·6.18.25·7.0.2·7.1-rc1의 수정 지점을 열거합니다. 이것을 모든 배포판에 공통인 취약 버전 구간으로 읽으면 안 됩니다. 코드 도입 시점과 각 배포판에서 문제가 도달 가능한 시점도 구분해야 합니다.
2026년 10월 27일 확인한 Ubuntu 공지에는 커널 패키지·릴리스에 따라 Fixed·Vulnerable·Not affected가 함께 표시됩니다. 같은 배포판 이름만으로 다른 커널 계열의 상태를 대신할 수 없습니다. 설치한 패키지와 실제 실행 중인 커널을 확인하고, 공급자의 보안 공지에서 해당 계열의 수정 패키지를 찾으십시오. 업데이트 후에는 수정된 커널이 실행 중인지 확인합니다.
블록 무결성과 메모리 경계 검사는 별개입니다
dm-verity는 블록 장치 데이터를 읽을 때 암호학적 해시로 무결성을 검사합니다. 이미 읽은 페이지 캐시의 바이트를 CPU가 접근할 때마다 다시 검증하는 기능으로 해석해서는 안 됩니다. 저장 장치의 무결성 검사가 커널의 모든 런타임 메모리 오류를 대신 막아 주지는 않습니다.
코드 검토에서는 외부 길이가 버퍼의 전체 용량 안에 있는지와 현재 남은 공간에 들어가는지를 별도로 확인합니다. 이 글의 흐름도는 이 두 판단을 설명하기 위한 자체 도식이며, 공격 메모리 배치나 완전한 커널 구현을 나타내지 않습니다.