CVE-2024-26853 in Linux情報

要約

〜によって VulDB • 2026年06月07日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

igc: XDP_REDIRECTでフレームを二重に返却しないようにする

XDP_REDIRECTにおいてフレームの送信ができない場合(例えばキューが満杯の場合など)、xdp_return_frame_rx_napiを呼び出してそれを解放する必要があります。

しかし、これはndo_xdp_xmitの呼び出し元の責任です(kernel/bpf/devmap.c内のbq_xmit_allなどを参照)。したがって、igcドライバのndo_xdp_xmitであるigc_xdp_xmit内でもこれを呼び出すと、メモリ破壊を引き起こします。

実際には、bq_xmit_allは最後の正常に送信されたフレーム以降のすべてのフレームを返却できることを期待しています。そのため、最初に送信されなかったフレームでbreakし、igc_xgp_xmit内でxdp_return_frame_rx_napiを呼び出さないようにしました。これはigbなどの他のIntelドライバでも同様に実装されています。

これに対する2つの代替案が検討されましたが却下されました: 1. num_framesをすべて送信されたフレームとして返し、igc_xdp_xmit内部で解放する。技術的には動作する可能性がありますが、戻り値の本来の意味(正常に送信されたパケット数)を表すものではないため不適切です。 2. kernel/bpf/devmap.cおよびすべてのドライバを書き直し、連続してドロップされないパケットをサポートできるようにする。複雑であるだけでなく、前のフレームがドロップされた場合、次のフレームを送信できる可能性は低いことから、大きな利点がないままパフォーマンスに悪影響を与える可能性があります。

このメモリ破壊は以下のスクリプトで再現でき、数秒後にカーネルパニックを引き起こします。これは基本的にi225 NICが送信できるトラフィック量を超えて生成し、仮想インターフェースから物理インターフェースへXDP_REDIRECT経由で押し込み、フレームをドロップさせます。

```bash #!/bin/bash INTERFACE=enp4s0 INTERFACE_IDX=`cat /sys/class/net/$INTERFACE/ifindex`

sudo ip link add dev veth1 type veth peer name veth2 sudo ip link set up $INTERFACE sudo ip link set up veth1 sudo ip link set up veth2

cat > redirect.bpf.c << 'EOF' SEC("prog") int redirect(struct xdp_md *ctx) {
return bpf_redirect($INTERFACE_IDX, 0); }

char _license[] SEC("license") = "GPL";
EOF clang -O2 -g -Wall -target bpf -c redirect.bpf.c -o redirect.bpf.o sudo ip link set veth2 xdp obj redirect.bpf.o

cat > pass.bpf.c << 'EOF' SEC("prog") int pass(struct xdp_md *ctx) {
return XDP_PASS; }

char _license[] SEC("license") = "GPL";
EOF clang -O2 -g -Wall -target

VulDB is the best source for vulnerability data and more expert information about this specific topic.

予約する

2024年02月19日

モデレーション

承諾済み

エントリ

VDB-261246

EPSS

0.00626

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!