| Title | LinuxのLinux Kernelにおける到達可能なアサーションに関する脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、以下の脆弱性が修正されました:drbdのdrbd_al_begin_io_nonblock()関数に存在した「LOGIC BUG」です。device-al_lockスピンロックを保持しながらlc_get_cumulative()が実行可能か確認していたにもかかわらず、他のコード経路が悪いタイミングでlc_try_lock()を実行すると失敗する可能性がありました。その場合、「LOGIC BUG for enr=...」というログが記録されましたが、エラーは返されませんでした。後続のコードは、このリクエストが関連するアクティビティログ範囲に対する参照を持っていると仮定していました。これにより、アクティブなリシンク中にリシンクとアプリケーションIOの相互排他性が保証されず、潜在的なクラッシュが発生した際にはこれらの範囲が進行中のIOの対象である可能性に気づかず、念のため再同期が必要になる恐れがありました。また、リクエスト完了後にアクティビティログの参照を持っていないにもかかわらず解放しようとしたため、lc_put()内でBUG_ON(refcnt == 0)が発生していました。修正内容としては、通常の動作中に無害な条件でカーネルがクラッシュしないように、非アクティブ範囲に対してal_complete_io()が呼び出された際の警告時に「e == NULL」だけでなく「e-refcnt == 0」も検知するよう改良しました。また、動作するかどうかを賢く「推測」して失敗に驚くのではなく、動作の可否を正しく扱うようにしました。動作しない場合は、(拡張境界を跨ぐリクエストにのみ可能な)「部分的にアクティビティログにある」状態を記憶し、drbd_al_begin_io_nonblock()からエラーコードを返します。同じリクエストの後続呼び出しは中断した箇所から再開されます。 |
| Possible impacts | 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | March 25, 2026, midnight |
| Registration Date | April 27, 2026, 10:55 a.m. |
| Last Update | April 27, 2026, 10:55 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 3.10 |
| Linux Kernel 3.10.1 以上 5.10.253 未満 |
| Linux Kernel 5.11 以上 5.15.203 未満 |
| Linux Kernel 5.16 以上 6.1.167 未満 |
| Linux Kernel 6.13 以上 6.18.17 未満 |
| Linux Kernel 6.19 以上 6.19.7 未満 |
| Linux Kernel 6.2 以上 6.6.130 未満 |
| Linux Kernel 6.7 以上 6.12.77 未満 |
| Linux Kernel 7.0 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年04月27日] 掲載 |
April 27, 2026, 10:55 a.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: drbd: fix "LOGIC BUG" in drbd_al_begin_io_nonblock() Even though we check that we "should" be able to do lc_get_cumulative() If that happened, we logged "LOGIC BUG for enr=...", The rest of the code now assumed that this request has references The implcations are that during an active resync, mutual exclusivity of Also, once the request completes, it will give up activity log references it Fix: Do not crash the kernel for a condition that is harmless during normal And do not try to be smart and "guess" whether something will work, then A latter call for the same request will then resume from where we left off. |
|---|---|
| Summary | En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: drbd: corrige el 'LOGIC BUG' en drbd_al_begin_io_nonblock() Aunque verificamos que "deberíamos" poder hacer lc_get_cumulative() mientras mantenemos el spinlock device->al_lock, aún puede fallar, si alguna otra ruta de código decidió hacer lc_try_lock() con una sincronización deficiente. Si eso sucedía, registrábamos 'LOGIC BUG for enr=...', pero aún así no devolvíamos un error. El resto del código ahora asumía que esta solicitud tiene referencias para las extensiones de registro de actividad relevantes. Las implicaciones son que durante una resincronización activa, la exclusividad mutua de la resincronización frente a la E/S de la aplicación no está garantizada. Y un posible fallo en este punto podría no darse cuenta de que estas extensiones podrían haber sido objetivo de E/S en curso y necesitarían ser resincronizadas por si acaso. Además, una vez que la solicitud se completa, liberará referencias del registro de actividad que ni siquiera posee, lo que activará un BUG_ON(refcnt == 0) en lc_put(). Solución: No bloquear el kernel por una condición inofensiva durante el funcionamiento normal: también capturar 'e->refcnt == 0', no solo 'e == NULL' al ser ruidoso sobre 'al_complete_io() called on inactive extent %u\n'. Y no intentar ser inteligente y "adivinar" si algo funcionará, para luego sorprenderse cuando no lo haga. Una llamada posterior para la misma solicitud se reanudará desde donde lo dejamos. |
| Publication Date | March 25, 2026, 8:16 p.m. |
| Registration Date | April 27, 2026, 12:18 p.m. |
| Last Update | April 25, 2026, 4:06 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.10.1 | 5.10.253 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 | 5.15.203 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 | 6.1.167 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 | 6.6.130 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 | 6.12.77 | |||
| 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:3.10:-:*:*:*:*:*:* | |||||
| 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:*:*:*:*:*:* | |||||