CVE-2026-64130 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 20.

리눅스 커널에서 다음 취약점이 해결되었습니다:

mm/page_alloc: init_on_free를 사용하여 거대 영문 folio의 태그 초기화 수정

현재 __GFP_ZEROTAGS의 의미론은 다소 이상하지만, 효과적으로 이 플래그는 항상 __GFP_ZERO 및 __GFP_SKIP_KASAN과 함께 설정됩니다.

init_on_free로 실행할 경우, 할당 경로에서 영문화를 건너뛰기 위해 __free_pages_prepare() 동안 페이지를 0으로 초기화합니다.

그러나 __GFP_ZEROTAG가 설정되어 할당하는 경우 post_alloc_hook()은 결과적으로 페이지 콘텐츠 지우기를 건너뜁니다. 또한 태그 메모리도 지우지 않습니다.

__GFP_ZEROTAGS를 통해 태그를 지우지 않는 것은 나중에 set_pte_at()을 통해 사용자 공간에 매핑될 대부분의 페이지에는 관련이 없습니다: set_pte_at() 및 관련 함수들은 태그가 아직 초기화되지 않았음을 감지하고(PG_mte_tagged 설정 안됨), 이를 초기화합니다.

그러나 특수하게 표시된 PMD를 통해 매핑되는 거대 영문 folio의 경우, 이 초기화가 수행되지 않아 페이지에 여전히 설정되어 있던 모든 태그가 노출됩니다.

문서(Documentation/arch/arm64/memory-tagging-extension.rst)는 페이지가 사용자 공간에 처음 매핑될 때 할당 태그가 0으로 설정된다고 명시합니다. init_on_free가 활성화되면 거대 영문 folio의 경우 더 이상 해당되지 않습니다.

__GFP_ZEROTAGS를 __GFP_ZERO에서 분리하여 tag_clear_highpages()로 페이지 콘텐츠도 지우기를 원하는지 여부를 전달함으로써 이를 수정합니다.

tag_clear_highpages() 반환 값의 의미를 반전시켜 의미론을 명확하게 합니다.

check_buffer_fill arm64/mte 자기 테스트를 수정하여 2 MiB 영역을 사용하도록 한 후, 해제 시 페이지에 비-0 태그가 설정되어 있는지 확인한 다음 거대 영문 folio로 재현했습니다(부팅 중에는 실제로 태그를 초기화하지 않고 페이지 플래그에서 KASAN_TAG_KERNEL만 설정한다는 점에 유의).

$ ./check_buffer_fill 1..20 ... not ok 17 Check initial tags with private mapping, sync error mode and mmap memory not ok 18 Check initial tags with private mapping, sync error mode and mmap/mprotect memory ...

이 코드에는 더 많은 정리 작업이 필요합니다. 다음 단계로 __GFP_ZEROTAGS를 __GFP_SKIP_KASAN에서 분리하는 작업을 처리할 예정입니다.

[[email protected]: David의 요청에 따라 s/__GPF_ZERO/__GFP_ZERO/]

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-380197

EPSS

0.00000

활동

낮음

출처

Do you know our Splunk app?

Download it now for free!