JVNDB-2026-028288 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。l2tp: l2tp_session_unhashにおけるlist_del_rcuの使用に関して、権限を持たないローカルユーザが、同じトンネル上でL2TP_CMD_SESSION_GETをL2TP_ATTR_IFNAME付きで同時に発行するとともに、L2TP_CMD_SESSION_CREATEおよびL2TP_CMD_SESSION_DELETEを発行することで、l2tp_session_get_by_ifname()内でホストCPUを無期限に固定できる問題です。これら3つのコマンドはいずれもGENL_UNS_ADMIN_PERM権限を必要とするため、netnsユーザ名前空間内のCAP_NET_ADMIN権限があれば十分です。l2tp_coreがロードされている任意のホストでは、標準的な`unshare -Urn`サンドボックスからこのトリガーを実行可能です。l2tp_session_unhash()はlist_del_init()でセッションをtunnel->session_listから削除しますが、このリストはrcu_read_lock_bh()の下でl2tp_session_get_by_ifname()によってlist_for_each_entry_rcu()で走査されます。list_del_init()は削除されたエントリのnextおよびprevポインタを自己参照状態にします。エントリを読み込んだリーダがpos->list.nextを次に進めた場合、&session->listを読み取り、container_of()によって同じセッションに戻ってしまい、list_for_each_entry_rcu()はリストの先頭に達しません。walker内のstrcmp()でCPUが停止し、BHおよびプリエンプションが無効になるため、ホスト上のRCUグレース期間がそこにて停止し、停止したスレッドはkillできません(シグナルSIGKILLはシステムコールの戻り時に配信されます)。l2tp_session_register()の既存のlist_add_rcu()に合わせてlist_del_rcu()の使用に変更しました。削除されたセッションはl2tp_session_free()内のkfree_rcu()が解放するまで、一貫性のあるnextおよびprevポインタでフライト中のwalkerに対して可視のまま残ります。tunnel->session_listにはlist_del_init()の呼び出しは1箇所だけであり、l2tp_core.cの533行目にあるlist_del_init(&session->clist)はRCU下で走査されないper-collisionリストに対して行われています。unhashポイント以降ではnet/l2tp/内においてlist_empty(&session->list)はどこでも使用されていないため、削除後の自己初期化の破棄は安全です。この修正によりユーザ空間に見える振る舞いに変更はありません。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/19 |
| 登録日 | 2026/08/17 |
| 最終更新日 | 2026/08/17 |



