🇰🇷 한글 설명
Linux kernel의 fs/buffer 모듈에서 try_to_free_buffers() 함수가 버퍼가 없는 folio를 처리할 때 null pointer dereference를 유발할 수 있습니다. AS_RELEASE_ALWAYS 플래그가 설정된 파일 매핑에서 발생하며, 패치로 버퍼 존재 확인 및 WARN_ON_ONCE 방어 코드가 추가되었습니다.
💡 쉬운 설명
Linux 커널의 파일 메모리 관리에서 버퍼 정리 중 오류로 인한 시스템 충돌이 발생할 수 있습니다. 최신 커널로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs/buffer: add alert in try_to_free_buffers() for folios without buffers
try_to_free_buffers() can be called on folios with no buffers attached
when filemap_release_folio() is invoked on a folio belonging to a mapping
with AS_RELEASE_ALWAYS set but no release_folio operation defined.
In such cases, folio_needs_release() returns true because of the
AS_RELEASE_ALWAYS flag, but the folio has no private buffer data. This
causes try_to_free_buffers() to call drop_buffers() on a folio with no
buffers, leading to a null pointer dereference.
Adding a check in try_to_free_buffers() to return early if the folio has no
buffers attached, with WARN_ON_ONCE() to alert about the misconfiguration.
This provides defensive hardening.
📍 영향받는 시스템
Linux kernel (최신 개발 버전 및 특정 배포판의 LTS 커널)
⚔️ 공격 벡터
로컬 사용자가 특정 파일시스템 작업으로 null pointer dereference를 트리거하여 커널 패닉 유발 가능
🛡️ 대응 방법
Linux kernel을 최신 버전으로 업데이트 또는 git에서 해당 패치 적용
🔧 검증 코드
'Patched'가 출력되면 방어 코드 적용됨, 'Not verified'가 출력되면 미적용 또는 커널 헤더 미설치
grep -A 3 'try_to_free_buffers' /usr/src/linux-headers-$(uname -r)/fs/buffer.c 2>/dev/null | grep -q 'WARN_ON_ONCE' && echo 'Patched' || echo 'Not verified'