Critical Alert: CVE-2023-6200 Exploits Linux Kernel with Code Execution Risk
2024/01/28 SecurityOnline — Linux カーネルの IPv6 実装に存在する、新たな脆弱性 CVE-2023-6200 (CVSS:7.5) が明らかになった。この脆弱性は、IPv6 プロトコルの重要コンポーネントである、ICMPv6 パケットの処理における深刻な競合状態に起因するものだ。
脆弱性 CVE-2023-6200 を理解するには、まず IPv6 ネットワークにおける ICMPv6 の役割を把握する必要がある。IPv4 における ICMP の後継である ICMPv6 は、エラー報告や診断にとって極めて重要なコンポーネントである。IPv4 と同様に動作し、”destination unreachable” のようなエラー・メッセージや、エコー・リクエスト/プライなどの情報メッセージを生成する。
しかし、IPv4 の ARP がブロードキャスト・アドレスを使用するのに対し、IPv6 の ICMPv6 では、マルチキャスト・アドレスによる近隣探索を使用する点が、大きく異なっている。
この、新たに確認された競合状態は、Linux カーネルが ICMPv6 router advertisement packets を処理する際に発生する。具体的に言うと、このようなパケットが受信されると、関数 ndisc_router_discovery() が呼び出される。対象となるパケットに有効期限付きのルート情報が含まれている場合には、その情報が fib6_set_expires() により gc_link にリンクされる。
問題が発生するのは、fib6_clean_expires() が struct fib6_info 内の期限切れの gc_link のリンクを解除したときである。このような状況が発生するのは、他の struct fib6_info が同一の gc_link にリンク/アンリンクしようとするとき、もしくは、gc_link がトラバースされるときである。
Red Hat のセキュリティ・アドバイザリには、「特定の条件下では、隣接するネットワークから、認証されていない攻撃者が ICMPv6 router advertisement packets を送信し、任意のコード実行を引き起こす可能性がある」と記されている。
この脆弱性を悪用する攻撃者にとっての前提条件は、自身がローカル・ネットワーク上にいて、パラメータnet.ipv6.conf.[NIC].accept_raで IPV6 が有効化されている必要がある。Red Hat Enterprise Linux を含む多くのディストリビューションにおいて、デフォルトでは net.ipv6.conf.[NIC].accept_ra が無効化されているため、この脆弱性の悪用はローカル・ネットワークからの攻撃に限定される。
CVE-2023-6200 の対処法は、必要な修正が含まれている Linux カーネルバージョン 6.7-rc7 へとアップデートすることだ。ユーザーは、cat /proc/sys/net/ipv6/conf/default/accept_raまたは、/proc/sys/net/ipv6/conf/eth0/accept_ra などのコマンドを実行し、accept_raパラメーターの有効/無効を確認できる。IPV6 を利用していないシステムでは、完全な無効化が推奨される。Red Hat のソリューション・ページの詳細な説明を参照してほしい。
Linux Kernel の IPv6 コンポーネントに脆弱性が発生したとのことですが、マニアックな固有名詞が多くて、なかなか分かり難い内容ですね。とは言え、こういうことで競合状態が起こることが分かり、なんとなく、頭の片隅に光が差し込んだ気もします。よろしければ、Linux Kernel で検索も、ご参照ください。

You must be logged in to post a comment.