JVNDB-2026-014963 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。btrfsにおいて、ログ再生後にサイズが非ゼロであるにもかかわらず、ゼロサイズのinodeが設定される問題が修正されました。新しい名前のログ記録やディレクトリの新しいエントリのログ記録の一部としてinodeの存在をログ記録する際、ログされたinodeアイテムの世代は常に0に設定されます。これはログ再生時(overwrite_item()内)に、inodeが存在することだけをログしているためにi_sizeを設定すべきではなく、サブボリュームツリー内のinodeのi_sizeを保持する必要があることを示しています(新しい名前やinodeの存在だけをログするときはextentsはログしません)。しかしこれは、すでにフルモードでinodeがログされた場合や、過去のトランザクションで作成されたinodeを初めてログするときに、そのinodeの新しいi_sizeが0になる点に問題があります。新しい名前のログ(新しいハードリンクやリネームによる)を行うと、inodeのi_sizeが0かつ世代が0としてログされ、この場合ログ再生コードはinodeのi_sizeを0に更新しない(overwrite_item()内)という問題が発生します。具体的なシナリオ例は以下の通りです。mkdir /mnt/dir xfs_io -f -c "pwrite 0 64K" /mnt/dir/foo sync xfs_io -c "truncate 0" -c "fsync" /mnt/dir/foo ln /mnt/dir/foo /mnt/dir/bar xfs_io -c "fsync" /mnt/dir 電源断。ログ再生後、ファイルのサイズは64Kのまま残ります。これは最初にinodeをログするとき、fooファイルをfsyncした際に現在のi_sizeである0をログし、その後ハードリンクを作成するとinodeを存在モード(LOG_INODE_EXISTS)で再度ログしますが、ログツリーに追加するinodeアイテムの世代を0に設定しているため、ログ再生中にoverwrite_item()は世代とi_sizeの両方が0であることを検出し、inodeのi_sizeを64Kから0に更新する処理をスキップするためです。修正はfill_inode_item()において、現在のトランザクションでログしたi_sizeとともに実際のinodeの世代を常にログするようにし、過去のトランザクションで作成されたinodeが存在モードのみでログされた場合でも、コミットルートから取得したinodeアイテムのi_sizeをログすることで、複数回inodeの存在をログしても正しいi_sizeを得られるようにしました。fstests用のテストケースは近日中に提供される予定です。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/05/06 |
| 登録日 | 2026/05/11 |
| 最終更新日 | 2026/05/11 |



