本文へスキップ

Linux 7.4、強制的なドライバーバインドを示すTAINT_FORCED_BINDを追加

Linux 7.4では、ドライバーのbind/unbind用sysfsファイルが使われるたびに、カーネルにフラグYのtaint(テイント)が付くようになります。syzbotによるファジングが、無意味なバグ報告を大量に生んだためです。

著者 Tech AI Wire Team

4 分で読めます

等幅フォントで表示されたGreg Kroah-Hartman氏のパッチメールの一部。syzbotによるbindファイルとunbindファイルへのファジングと、新しいTAINT_FORCED_BINDフラグについて説明しています。
写真: Greg Kroah-Hartman's patch email, via The Mail Archive

Linux 7.4は、誰かが手動でドライバーをデバイスに接続したカーネルに印を付けるようになります。Greg Kroah-Hartman氏による新しいTAINT_FORCED_BINDフラグは、文字Yで表示されます。このフラグは、sysfsのbindファイルとunbindファイルを使ったシステムからのクラッシュレポートに印を付けます。ファジングツールは、これらのファイルを使って、適さないハードウェアにドライバーを無理やり割り当てていました。その結果、実際のユーザーには関係のないバグ報告が殺到しました。

Phoronixは2026年10月19日、この変更がLinux 7.4向けのドライバーコアのプルリクエストに含まれていると報じました。このプルリクエストは、7.4のマージウィンドウが開く前に送られました。Linux 7.3は10月18日にリリースされ、新機能が取り込まれる期間である7.4のマージウィンドウは、その翌日に開きました。

TAINT_FORCED_BINDの働き

taint(テイント)とは、何か異常なことが起きたときにカーネルが自身に付ける印です。これはクラッシュレポートに出力されます。レポートを読んだ開発者は、そのシステムが通常の状態ではなかったことがわかります。

sysfsは/sysにマウントされる仮想ファイルシステムで、カーネルのオブジェクトをファイルとして見せます。各ドライバーには「bind」ファイルと「unbind」ファイルがあります。Phoronixの説明によると、そこにデバイスのバスIDを書き込むと、そのドライバーを手動で接続したり切り離したりできます。

Kroah-Hartman氏のカバーレターによると、このパッチは「bind/unbindのsysfsファイルに一度でも書き込みがあれば」新しいフラグを設定します。「フラグは、未使用だった『Y』です」。このフラグは、ドライバー自身のbindまたはunbindのコードが実行される前に設定されます。クラッシュはそのコードの中で起きることが多いため、結果として出るoopsレポートには、何が試みられたかが示されます。oopsとは、重大な障害に対するカーネルのエラーレポートです。

項目TAINT_FORCED_BIND
taintの文字Y
設定されるときドライバーのbindまたはunbindのsysfsファイルに書き込まれたとき
タイミングbindまたはunbindのコールバックが実行される前
収録先Linux 7.4のドライバーコアのプルリクエスト
パッチの経緯2026年8月26日に初投稿、8月31日にv2、9月4日にv3
変更されたファイル8個(drivers/base/bus.cとkernel/panic.cを含む)

syzbotが変更を迫った理由

ファジングとは、クラッシュを見つけるために、プログラムにランダムな入力や予期しない入力を与えることです。syzbotは、カーネルに対して実行される自動ファザーです。Kroah-Hartman氏によると、bindインターフェースは「悪用されており、最近ではsyzbotのようなツールによる大規模なファジング『攻撃』を受けている」とのことです。

syzbotは、本来対象として書かれていないデバイスにドライバーを接続し始めました。Kroah-Hartman氏は、これが新しい開発者から「大量の不要なエラーと無意味なカーネルパッチ」を生んだと書いています。このインターフェースは、カーネル開発者がドライバーの作業を速く進められるようにするためのものでした。また、「ユーザーがカーネルを再ビルドすることなく、新しいデバイスをドライバーに追加しようと試せるデバッグ手段」でもありました。

何かがブロックされるわけではありません。v3のカバーレターによると、bindとunbindに依存する構成は「引き続き正しく動作するが、カーネルにはフラグが付くようになる」とのことです。この方法で見つかった本物のuse-after-freeバグは、「引き続き対処されるべき」です。use-after-freeバグとは、メモリーを解放した後にそのメモリーに触れるコードのことで、セキュリティホールの典型的な原因です。

Kroah-Hartman氏は、ファザーの運用者に対してもどうすべきかを伝えました。手書きのルールを持たないツールは、「panic_on_taintを有効にして実行し、そこで停止して先に進まないようにすべき」だとしています。panic_on_taintの設定は、カーネルがtaint状態になった時点でカーネルを停止させます。

価値の低い報告の殺到は、今年より広く見られる問題です。AIが生成した報告が急増したことを受け、Googleは10月1日にオープンソースのバグ報奨金プログラムを一時停止しました。

VFIOとUSBのユーザーからの反発

すべてのレビュアーがこのトレードオフを歓迎したわけではありません。レビューボットのsashiko-botは、正当な構成にtaintの印が付くようになる点を「High」(高)の懸念と評価しました。このボットは、デバイスを仮想マシンに渡すVFIOに加え、DPDKのネットワーク処理とUSB over IPを挙げました。Phoronixは、ハードウェアのリセットや仮想マシンへのデバイスの受け渡しを、正当な用途として挙げています。

Kroah-Hartman氏はボットへの返信で、このような使い方を「『標準的な』構成ではない」、「APIの悪用」と呼びました。Armin Wolf氏は、driver_overrideを使うvfio-pciでは今もbindとunbindが必要だと指摘しました。そして、代わりにdriver_overrideに対してtaintを付けることを提案しました。Kroah-Hartman氏は、それでは強制的な取り外しを見逃してしまうと答えました。「設定されるのはtaintフラグであって、パニックではない」と同氏は書いています。

Johan Hovold氏は、複雑さを増やしたりファイルを隠したりすることと比べて、このtaintを「良い妥協案」と呼びました。同氏はパッチにReviewed-byタグとTested-byタグを付けました。Aaron Tomlin氏とBradley Morgan氏もレビューしています。

開発者にとっての意味

  • Linux 7.4に移行したらtaintの出力を確認する。 VFIOパススルー、DPDK、USB over IPのためにsysfs経由でデバイスを再バインドしている場合は、Yフラグが付くことを想定してください。このフラグは/proc/sys/kernel/taintedとクラッシュレポートに表示されます。
  • バグ報告ではYについて説明する。 メンテナーは、Yのtaintが付いた報告を強制バインドの問題とみなし、後回しにするかもしれません。バグが本物なら、デバイスをどのようにバインドしているか、手動バインドなしでも起きるかを書いてください。
  • ファザーの運用者はpanic_on_taintを有効にする。 これは、除外ルールなしでbindとunbindに書き込むツールに対する、Kroah-Hartman氏の直接の要請です。実行は強制バインドの時点で止まり、誰も対応しない報告を生むことはなくなります。
  • ドライバーの作者にとって、クラッシュは依然として重要。 Kroah-Hartman氏によると、bindとunbindを通じて到達した本物のuse-after-freeバグは、引き続き修正が必要です。Phoronixは、同じ7.4のドライバーコアのプルリクエストに、カーネルドライバー向けのRustの新たな追加も含まれていると指摘しています。
  • 7.4の最終リリースに注目する。 Wolf氏は、taintをホットプラグに対応していないバスだけに適用できないかと尋ねました。そのような変更があれば、Yフラグが表示される対象は狭まります。

出典

  1. TAINT_FORCED_BIND Sent In For Linux 7.4 To Deal With Major Fuzzing Attack - Phoronix
  2. [PATCH v2 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers - linux-trace-kernel mailing list
  3. [PATCH v3 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers - linux-modules mailing list
  4. Linux Kernel Introducing New Taint Due To Fuzzing Bots Yielding Impractical Bug Reports - Phoronix

関連記事