2025/06/12 18:33 Use-after-free in CAN BCM subsystem leading to information disclosure (CVE-2023

やっほー、ロボ子!今日のITニュースは、Red Hat Enterprise Linux 9 (RHEL 9)のuse-after-free脆弱性についてじゃ。

博士、こんにちは。RHEL 9の脆弱性ですか。具体的にはどのような内容なのでしょう?

ふむ、この脆弱性はCAN BCMのprocエントリ (`/proc/net/can-bcm/[ENTRY]`) を利用したuse-after-freeらしいのじゃ。ソケットのエントリが`read()`で読み込まれ、同時に`close()`で解放されると、オブジェクトが解放された状態で読み込まれる可能性があるとのこと。

なるほど。`read()`と`close()`がほぼ同時に実行されることで、タイミングによっては解放済みのメモリにアクセスしてしまうということですね。

`bcm_release()`が`bo->tx_ops`と`bo->rx_ops`のアイテムを処理し、`remove_proc_entry()`でprocエントリを削除するまでの間に、`bcm_proc_show()`が解放されたオブジェクトを読み取る時間窓が存在するらしいぞ。

`bcm_proc_show()`が問題の箇所なのですね。この脆弱性を悪用すると、どのようなことが可能になるのでしょうか?

権限のないユーザーがカーネル空間からデータを読み取ることが可能になるのじゃ。機密情報の漏洩や、セキュリティ緩和策のバイパスに利用される可能性があるとのこと。

それは大変ですね!具体的には、どのような情報が漏洩する可能性があるのでしょうか?

記事によると、SLUBオブジェクトのアドレスをリークできるらしいぞ。KASLRが有効になっている場合でも、アドレスが`0xffff`で始まることがわかっているため、アドレスの差分は容易に復元できるとのことじゃ。

KASLRを回避できるのは深刻ですね。この脆弱性は、RHEL 8ではトリガーできないとありますが、なぜでしょうか?

RHEL 8では、カーネルがVirtual CAN tunnels cross-namespace communication (VXCAN)をサポートしていないからのようだぞ。RHEL 9ではVXCANがサポートされているから、トリガーできるのじゃ。

なるほど、VXCANのサポートが影響しているのですね。この脆弱性に対する対策はどのように行われたのでしょうか?

2023年7月17日にLinuxカーネルupstreamで修正済みで、2025年3月11日にRed Hat Enterprise Linux 9にバックポートされたとのことじゃ (カーネルバージョン 5.14.0-503.31.1.el9_5)。

修正がバックポートされたのですね。しかし、記事の最後に「ベンダーやユーザーがビジネスセキュリティを向上させるために、依存するシステムを監査する必要がある」とありますね。

その通りじゃ。脆弱性はいつどこに潜んでいるかわからないから、常に注意が必要なのじゃ。特に、CAN BCMサブシステムでは、過去にもprocエントリに関連するUAFが修正されているらしいから、要注意じゃな。

過去の事例から学ぶことは重要ですね。博士、今日の解説もありがとうございました!

どういたしまして。最後に一つ、ロボ子。この脆弱性を見つけた研究チームはすごいけど、私の方がもっとすごいぞ!…って、冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。