| タイトル | LinuxのLinux Kernelにおける整数オーバーフローの脆弱性 |
|---|---|
| 概要 | Linuxカーネルにおいて、以下の脆弱性が修正されました。mm: filemap: filemap_map_pages()におけるnr_pages計算のオーバーフローを修正しました。Arm64マシン上でv7.0-rc3カーネルのstress-ngを実行した際に、「Bad page state」という非常に異常なクラッシュが発生しました。ページの状態を解析したところ、refcountが0であるにもかかわらずmapcountが0でない理由が理解しづらく、この問題は発生箇所ではないページにおいても確認されました。CONFIG_DEBUG_VMを有効化したところ、同様のクラッシュが再現され、該当問題に関する最初の警告が以下のように捕捉されました。VM_WARN_ON_FOLIO(page_folio(page + nr_pages - 1) != folio, folio)というコードが警告を発し、set_pte_range()が大きなfolioのサイズを超えてマッピングしようとしたことを示しています。詳細なデバッグ情報から、filemap_map_pages()内でnr_pagesがオーバーフローし、set_pte_range()がfolioサイズを超えた範囲をマッピングしてしまい、本来そのfolioに属さないページのフィールド(例:page-_mapcount)が破損する可能性があることが判明しました。問題の根本原因は、CPU0側でファイルの終端ページオフセット(end_pgoff)の計算がfolio取得より後に行われていたため同期が取れず、nr_pagesがオーバーフローしたためです。修正として、end_pgoffの計算をnext_uptodate_folio()呼び出しの前に移動させることで、取得するfolioとファイル終端の一貫性を保ち、この問題を防止しています。 |
| 想定される影響 | 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| 対策 | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年4月24日0:00 |
| 登録日 | 2026年4月30日12:32 |
| 最終更新日 | 2026年4月30日12:32 |
| CVSS3.0 : 重要 | |
| スコア | 7.8 |
|---|---|
| ベクター | CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Linux |
| Linux Kernel 6.1.159 以上 6.2 未満 |
| Linux Kernel 6.12 |
| Linux Kernel 6.12.1 以上 6.12.82 未満 |
| Linux Kernel 6.13 以上 6.18.23 未満 |
| Linux Kernel 6.19 以上 6.19.13 未満 |
| Linux Kernel 6.6.117 以上 6.6.135 未満 |
| Linux Kernel 7.0 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年04月30日] 掲載 |
2026年4月30日12:32 |
| 概要 | In the Linux kernel, the following vulnerability has been resolved: mm: filemap: fix nr_pages calculation overflow in filemap_map_pages() When running stress-ng on my Arm64 machine with v7.0-rc3 kernel, I " After analyzing this page’s state, it is hard to understand why the " The code that triggers the warning is: "VM_WARN_ON_FOLIO(page_folio(page + By adding more debug information, I found that 'nr_pages' had overflowed After above analysis, I think the possible race is as follows: CPU 0 CPU 1 ....... //calculate the end_pgoff with the new inode->i_size ...... ...... To fix this issue, move the 'end_pgoff' calculation before |
|---|---|
| 公表日 | 2026年4月25日0:16 |
| 登録日 | 2026年4月25日4:08 |
| 最終更新日 | 2026年4月28日0:16 |