The Hacker Newsはこのほど、「New Linux Kernel Exploit Technique 'SLUBStick' Discovered by Researchers」において、グラーツ工科大学(Graz University of Technology)の研究者たちがLinuxカーネルのメモリ操作を可能にするエクスプロイト(脆弱性を突いて不正な動作を行うプログラム)「SLUBStick」を公開したと報じた。SLUBStickの論文は「(PDF) SLUBStick: Arbitrary Memory Writes through Practical Software Cross-Cache Attacks within the Linux Kernel」から閲覧することができる。

  • New Linux Kernel Exploit Technique 'SLUBStick' Discovered by Researchers

    New Linux Kernel Exploit Technique 'SLUBStick' Discovered by Researchers

SLUBStickの概要

Linuxカーネルのメモリアロケーターはページ単位(通常は4キロバイト)でメモリを割り当てる。これは数バイトの要求に対して数キロバイトのメモリ空間を割り当てることを意味するが、これでは効率が非常に悪いため、スラブアロケーターと呼ばれる細分化したメモリ割り当ての仕組みが存在する。

このスラブアロケーターには脆弱性が存在し、クロスキャッシュ攻撃と呼ばれる攻撃手法が発見されている。しかしながら、この攻撃手法の成功率は40%程度と低く、成功してもシステムクラッシュなどを引き起こすとされ、サービス運用妨害(DoS: Denial of Service)以外では実際の攻撃に使用できないとされる。

そこで研究者たちは成功率を向上させ、実用に耐える攻撃が可能か研究を行った。その結果、高い成功率でメモリ操作を可能にするSLUBStickが誕生した。SLUBStickの基本的な動作は次の2ステップとなる。

  1. アロケーターへのタイミングサイドチャネルを使用してメモリーチャンクの割り当ておよび開放の正確な瞬間を認識し、クロスキャッシュ攻撃の成功率を99%以上に引き上げる
  2. クロスキャッシュ攻撃を実行し、ヒープ脆弱性(多重開放、解放後使用、OOBなど)をメモリ操作プリミティブに変換する
  • ヒープ脆弱性をメモリー操作プリミティブに変換する手順 - 引用:研究論文

    ヒープ脆弱性をメモリー操作プリミティブに変換する手順 引用:研究論文

影響と対策

SLUBStickを悪用するには既知のヒープ脆弱性が必要となる。研究では2021年から2023年までに発見された次の脆弱性を悪用しており、Linuxカーネルバージョン5.19から6.2にて動作が実証されている。

  • CVE-2023-21400
  • CVE-2023-3609
  • CVE-2022-32250
  • CVE-2022-29582
  • CVE-2022-27666
  • CVE-2022-2588
  • CVE-2022-0995
  • CVE-2021-4157
  • CVE-2021-3492

SLUBStickのエクスプロイトは「GitHub - IAIK/SLUBStick」にて公開されている。研究者たちはSLUBStickを使用してカーネルメモリ内部に存在するパスワード(/etc/passwd)を改ざんし、管理者権限を取得する実験動画を公開している。

SLUBStickは権限昇格の他にサンドボックスの脱出や、カーネル構造の変更、カーネルフックによる永続性の確保などさまざまな攻撃に悪用される可能性が指摘されている。このような攻撃を回避するためにLinuxシステムを運用している管理者には、カーネルにヒープ脆弱性が存在するか確認し、必要に応じてアップデートすることが推奨されている。