| Title | LinuxのLinux Kernelにおける到達可能なアサーションに関する脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、匿名inode上のファイルに対する透明巨大ページ(THP)の処理に問題がありました。file_thp_enabled()関数は、例えばguest_memfdやsecretmemのような匿名inode上のファイルに対して誤ってTHPを許可していました。これらのファイルはalloc_file_pseudo()を介して作成され、通常の書き込みアクセスカウントが増加しないため、本来THPの対象外であるべきですが、誤って読み取り専用の通常ファイルとして認識されてしまっていました。この誤認により、khugepagedやMADV_COLLAPSE機能が無効とすべき動作をしてしまい、guest_memfdではカーネル内で警告が発生し、secretmemではカーネルクラッシュや誤ったメモリ障害報告が引き起こされる可能性がありました。修正としてfile_thp_enabled()にIS_ANON_FILE(inode)のチェックを追加し、すべての匿名inodeファイルに対してTHPを拒否するように変更しました。 |
| Possible impacts | 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | March 25, 2026, midnight |
| Registration Date | April 27, 2026, 10:54 a.m. |
| Last Update | April 27, 2026, 10:54 a.m. |
| CVSS3.0 : 警告 | |
| Score | 5.5 |
|---|---|
| Vector | CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| Linux |
| Linux Kernel 6.13 以上 6.18.17 未満 |
| Linux Kernel 6.19 以上 6.19.7 未満 |
| Linux Kernel 6.8 |
| Linux Kernel 6.8.1 以上 6.12.78 未満 |
| Linux Kernel 7.0 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年04月27日] 掲載 |
April 27, 2026, 10:54 a.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: mm: thp: deny THP for files on anonymous inodes file_thp_enabled() incorrectly allows THP for files on anonymous inodes Anonymous inodes can never pass the inode_is_open_for_write() check For guest_memfd, this allows khugepaged and MADV_COLLAPSE to create For secretmem, collapse_file() tries to copy page contents through the BUG: unable to handle page fault for address: ffff88810284d000 Secretmem is not affected by the crash on upstream as the memory failure Memory failure: 0x106d96f: recovery action for clean unevictable Check IS_ANON_FILE(inode) in file_thp_enabled() to deny THP for all |
|---|---|
| Summary | En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: mm: thp: denegar THP para archivos en inodos anónimos file_thp_enabled() permite incorrectamente THP para archivos en inodos anónimos (por ejemplo, guest_memfd y secretmem). Estos archivos se crean a través de alloc_file_pseudo(), que no llama a get_write_access() y deja inode->i_writecount en 0. Combinado con que S_ISREG(inode->i_mode) sea verdadero, aparecen como archivos regulares de solo lectura cuando CONFIG_READ_ONLY_THP_FOR_FS está habilitado, haciéndolos elegibles para el colapso de THP. Los inodos anónimos nunca pueden pasar la verificación inode_is_open_for_write() ya que su i_writecount nunca se incrementa a través de la ruta de apertura VFS normal. Lo correcto es excluirlos por completo de la elegibilidad para THP, ya que CONFIG_READ_ONLY_THP_FOR_FS fue diseñado para archivos de sistemas de archivos reales (por ejemplo, bibliotecas compartidas), no para inodos de pseudo-sistemas de archivos. Para guest_memfd, esto permite a khugepaged y MADV_COLLAPSE crear folios grandes en la caché de páginas a través de la ruta de colapso, pero el gestor de fallos de guest_memfd no soporta folios grandes. Esto activa WARN_ON_ONCE(folio_test_large(folio)) en kvm_gmem_fault_user_mapping(). Para secretmem, collapse_file() intenta copiar el contenido de la página a través del mapa directo, pero las páginas de secretmem se eliminan del mapa directo. Esto puede resultar en un fallo del kernel: BUG: unable to handle page fault for address: ffff88810284d000 Secretmem no se ve afectado por el fallo en upstream ya que la recuperación de fallos de memoria maneja la copia fallida con elegancia, pero aún así activa informes confusos de falsos fallos de memoria: Memory failure: 0x106d96f: recovery action for clean unevictable Verificar IS_ANON_FILE(inode) en file_thp_enabled() para denegar THP para todos los archivos de inodos anónimos. |
| Publication Date | March 25, 2026, 8:16 p.m. |
| Registration Date | April 27, 2026, 12:19 p.m. |
| Last Update | April 25, 2026, 1:31 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.8.1 | 6.12.78 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 | 6.18.17 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 | 6.19.7 | |||
| cpe:2.3:o:linux:linux_kernel:6.8:-:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:* | |||||
| cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:* | |||||