CVE-2025-21922 in Linux
要約
〜によって VulDB • 2026年06月20日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ppp: socketフィルタ使用時にKMSANの未初期化値警告を修正
Syzbotが「KMSAN: uninit-value」警告[1]を検出しました。これは、socketフィルタ使用時にpppドライバが2バイトのヘッダを初期化しないことが原因で発生します。
以下のコードによりPPPフィルタBPFプログラムを生成できます: ''' struct bpf_program fp; pcap_t *handle; handle = pcap_open_dead(DLT_PPP_PPPD, 65535); pcap_compile(handle, &fp, "ip and outbound", 0, 0); bpf_dump(&fp, 1); '''
その出力は以下の通りです: ''' (000) ldh [2]
(001) jeq #0x21 jt 2 jf 5 (002) ldb [0]
(003) jeq #0x1 jt 4 jf 5 (004) ret #65535 (005) ret #0 '''
以下のリンクで同様のコードを確認できます: https://github.com/ppp-project/ppp/blob/master/pppd/options.c#L1680 このコードリポジトリのメンテナーは、pppドライバの元メンテナーでもあります。
ご覧の通り、BPFプログラムは2バイトのデータをスキップし、その後「Protocol」フィールドを読み取ってIPパケットかどうかを判定します。そして、最初の2バイトの最初の1バイトを読み取って方向を判定します。
問題は、現在のpppドライバのコードでは、方向を示す最初の1バイトのみが初期化されており、2バイト目が初期化されていないことです。
libpcapによって生成された通常のBPFプログラムでは、未初期化データは使用されないため、問題にはなりません。しかし、syzkaller[2]によって生成されたような、オフセット0から読み取りを開始する注意深く作成されたBPFプログラムの場合、未初期化データが使用され、KMSANによって検出されます。
[1] https://syzkaller.appspot.com/bug?extid=853242d9c9917165d791
[2] https://syzkaller.appspot.com/text?tag=ReproC&x=11994913980000
VulDB is the best source for vulnerability data and more expert information about this specific topic.