LinuxのLinux Kernelにおける不特定の脆弱性
タイトル LinuxのLinux Kernelにおける不特定の脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。cephに関するページ配列の配置エラーがバッチエラーとして伝播しないように修正されました。fscryptが有効な場合、move_dirty_folio_in_page_array()は各フォリオの暗号化バージョンを格納するためのバウンスバッファを割り当てる必要があるため、失敗することがあります。最初のフォリオ以降の各フォリオはGFP_NOWAITでバウンスバッファを割り当てます。この割り当てモードでは失敗が一般的かつ予想されており、それらの失敗はバッチを中断せずにフラッシュすべきです。しかし、ceph_process_folio_batch()は自身の戻り値と呼び出しルーチンの戻り値の両方に同じ`rc`変数を使っているため、`rc`を0にリセットしないとエラーがメインの書き戻しループに伝播し、このループはここでのエラーを許容できません。`ceph_wbc.pages`が割り当てられた後は、必ずceph_submit_write()に渡して解放しなければなりません。もし次のイテレーションまで存続すると(例えばgoto文によって)、ceph_allocate_page_array()のBUG_ON()がワーカーをクラッシュさせます。この失敗モードは現在、同じ書き込みで複数の暗号化フォリオが選択されるのを防ぐ別のバグ(この修正シリーズで次に対応)があるためマスクされています。現在はフォリオを再度dirtyにするときに`rc`をリセットすることで、move_dirty_folio_in_page_array()のエラー伝播を防いでいます。move_dirty_folio_in_page_array()は最初のフォリオでエラーを返さないように慎重に設計されているため、その部分をチェックする必要はありません。この変更後、ceph_process_folio_batch()はエラーを返さなくなり、唯一残る障害指標は`locked_pages == 0`のみであり、呼び出し側はすでにこれを正しく処理しています。

想定される影響 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年5月6日0:00
登録日 2026年5月13日10:23
最終更新日 2026年5月13日10:23
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 6.15 以上 6.18.16 未満
Linux Kernel 6.19 以上 6.19.6 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月13日]
  掲載
2026年5月13日10:23

NVD脆弱性情報
CVE-2026-43188
概要

In the Linux kernel, the following vulnerability has been resolved:

ceph: do not propagate page array emplacement errors as batch errors

When fscrypt is enabled, move_dirty_folio_in_page_array() may fail
because it needs to allocate bounce buffers to store the encrypted
versions of each folio. Each folio beyond the first allocates its bounce
buffer with GFP_NOWAIT. Failures are common (and expected) under this
allocation mode; they should flush (not abort) the batch.

However, ceph_process_folio_batch() uses the same `rc` variable for its
own return code and for capturing the return codes of its routine calls;
failing to reset `rc` back to 0 results in the error being propagated
out to the main writeback loop, which cannot actually tolerate any
errors here: once `ceph_wbc.pages` is allocated, it must be passed to
ceph_submit_write() to be freed. If it survives until the next iteration
(e.g. due to the goto being followed), ceph_allocate_page_array()'s
BUG_ON() will oops the worker.

Note that this failure mode is currently masked due to another bug
(addressed next in this series) that prevents multiple encrypted folios
from being selected for the same write.

For now, just reset `rc` when redirtying the folio to prevent errors in
move_dirty_folio_in_page_array() from propagating. Note that
move_dirty_folio_in_page_array() is careful never to return errors on
the first folio, so there is no need to check for that. After this
change, ceph_process_folio_batch() no longer returns errors; its only
remaining failure indicator is `locked_pages == 0`, which the caller
already handles correctly.

公表日 2026年5月6日21:16
登録日 2026年5月7日4:08
最終更新日 2026年5月12日5:38
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.15 6.18.16
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 6.19.6
関連情報、対策とツール
共通脆弱性一覧