JVNDB-2026-031750 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。ovpn: CMD_NEW_PEERのエラーパスでピアの参照カウントを正しく尊重するように修正しました。ovpn_nl_peer_new_doit()のエラーパスは従来、ovpn_peer_put()ではなく直接ovpn_peer_release()を呼び出しており、krefをバイパスしていました。付随するコメント「peerはまだハッシュされておらず、いかなるコンテキストでも使用されていない」はUDPの場合には正しいものの、TCPの場合には成り立ちません。UDPの場合、ovpn_socketの共用体は.ovpnアームを使用し、決してピアを指し示しません。UDPのencap_recvはまだ初期化されていないハッシュテーブルを介してピアを検索するため、新しいピアはovpn_peer_add()が公開するまでは到達不能です。一方TCPの場合、ovpn_socket_new()はovpn_sock->peerを設定し、ovpn_tcp_socket_attach()はrcu_assign_sk_user_data()を通じてovpn_sockを公開します。エラーパスでovpn_socket_release()が切り離すまでの間、TCPのファイルディスクリプターは完全に結び付けられており、ユーザースペースのrecvmsg/sendmsg/close/pollやstrparser駆動のovpn_tcp_rcv()パスはsk_user_data -> ovpn_sock->peer経由でピアにアクセスし、ovpn_peer_hold()を介して参照カウントを増やすことが可能です。ovpn_tcp_socket_wait_finish()(ovpn_socket_release()内で呼び出される)はstrparserとtxワークを空にしますが、ピア参照をすでに保持しているユーザースペースのシステムコール呼び出しとは同期していません。もしovpn_nl_peer_modify()やovpn_peer_add()がそのような呼び出し中にエラーを返した場合、特にpeer->tcp.user_queueで__skb_recv_datagram()にブロックされたovpn_tcp_recvmsg()においては、直接的なovpn_peer_release()が参照を保持したままピアを破壊し、最終的にその呼び出しからのovpn_peer_put()が解放済みメモリ上で操作を行ってしまいます。これを防ぐため、直接的なデストラクタ呼び出しをovpn_peer_put()に置き換え、krefが最後の参照が切れるまで破壊を正しく遅延させるようにしました。一般的なケースでは同時にユーザーが存在しない場合でも、動作は変更されません。krefは即座にゼロに達し、ovpn_peer_release_kref()が同じデストラクタを実行します。この変更により、ovpn_peer_release()はpeer.c外からの呼び出しがなくなり、同じ翻訳単位内のovpn_peer_release_kref()のみが残るためstatic化され、peer.hからの宣言を削除しました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.8 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/19 |
| 登録日 | 2026/09/03 |
| 最終更新日 | 2026/09/03 |



