PoC Exploit Releases for CVE-2023-52447: A Linux Kernel Flaw Enabling Container Escape
2024/10/07 SecurityOnline — 先日に発見された、Linux Kernel の脆弱性 CVE-2023-52447 (CVSS:7.8) に対する、技術的な詳細と PoC エクスプロイトが、研究者たちにより公開された。この use-after-free 脆弱性は、Linux Kernel のバージョン v5.8〜v6.6 に影響を及ぼし、セキュリティ分離のためにコンテナ化に依存しているシステムで、甚大な被害を引き起こす可能性を持つ。

脆弱性 CVE-2023-52447 の原因は、Linux Kernel 内の BPF サブシステムにおける use-after-free の欠陥であり、具体的に言うと、BPF プログラムが配列マップ・ポインターを管理する方法に関連している。BPF とは、カーネル内でユーザーにカスタム・プログラムを実行させる強力なフレームワークであり、ネットワーク・パケット・フィルタリングや、パフォーマンス監視などの、セキュリティ・アプリケーションで多用される。ただし、今回のケースでは、BPF プログラムでの不適切な参照カウントから、この脆弱性は生じている。
この問題は、BPF プログラムが参照カウントを適切に増やすことなく、array_of_maps からの arraymap ポインタをホールドすることで発生する。したがって、時間のかかる操作が BPF プログラムにより実行されると、別のスレッドが arraymap を解放してメモリを再利用できるようになり、use-after-free 状態の可能性が生じる。
2つのスレッド間での、競合状態を慎重に調整することで、この脆弱性が悪用される可能性がある:
- 被害者の arraymap における max_entries と index_mask を変更する。
- 被害者の arraymap を使用して、array_of_maps における値のインデックス 0 付近の、arraymap を “core_pattern-struct_bpf_array_offset” として変更する。
- array_of_maps を更新して core_pattern を変更する。
- コンテナ・エスケープを実行する。
前述のとおり、セキュリティ研究者により、PoC エクスプロイトが GitHub で公開されている。それにより、脆弱性 CVE-2023-52447 と悪用方法を、セキュリティ チームは深く理解できる。したがって、この PoC は防御策にとって重要なリソースとなるが、攻撃者によるエクスプロイト・コードへのアクセスも可能であり、パッチ適用と緩和策の緊急性が高まっている。
幸いなことに、先日のカーネル・パッチで、この脆弱性は対処されている。この問題は、Linux カーネルへのコミットにより修正されているため、ユーザー組織に対して強く推奨されるのは、このパッチを取り込んだ最新のカーネルバージョンへの更新である。
この Linux Kernel の脆弱性 CVE-2023-52447 ですが、お隣のキュレーション・チームに聞いてみたら、2024年3月にレポートしていると言っていました。CVSS 値は、7.1 → 7.8 と上がり、8月27日には 9.1 に達しています。この PoC が登場したことで、さらに上がるかもしれません。ご利用のチームは、ご注意ください。よろしければ、カテゴリ Container も、ご利用ください。
You must be logged in to post a comment.