OSカーネルの品質を向上することが急務
Google社が開発したファジングテスト(※1)用システムであるsyzbotが、LinuxなどのOSカーネルの不具合をものすごい勢いで発見し続けて(※2)います。(図1)あまりにも次から次へと不具合を発見してしまうことから、Linuxカーネル開発者コミュニティでは、今年のエイプリルフールのネタ(※3)にされてしまったほどです。
図1:syzbotの動作イメージ
「コンテナ」による仮想化方式(※4)では、「仮想マシン」による仮想化方式とは異なり、ゲストを動かすためのOSカーネルを使用しません。これは、アプリやミドルウェアの脆弱性により攻撃者に乗っ取られてしまった場合に、ホストを動かすためのOSカーネルに対して攻撃者がダイレクトに攻撃できてしまうことを意味しています。仮想マシンという隔壁が存在しない分、他のコンテナへの影響伝搬を防ぐために、ホストを動かすためのOSカーネルの品質を向上させることが求められます。そのため、syzbotなどによるファジングテストを通じて不具合を発見するための努力と、発見された不具合を修正していくための努力が続けられています。
問題が発生したことを捕捉するための小さな一歩
ファジングテストでは、普段行われないような動作を繰り返したり、普段指定しないような値を意図的に指定したりするので、大量のカーネルメッセージが出力されます。(図2)問題が発生したかどうかを判定するためには、問題に関連したメッセージを確実に抽出できることが重要になりますが、大量のカーネルメッセージの海に埋もれてしまい、うまく抽出できませんでした。(図3)
図2:複数のスレッドが同時にカーネルメッセージを出力してしまうことがある。
図3:Linux 5.0までは、スレッド毎に分離できなかったため、解析に失敗することが多かった。
2019年5月にリリースされるであろうLinux 5.1カーネルには、カーネルが出力するメッセージを機械的に処理しやすくするためのパッチ(※5)が採用され、問題に関連したメッセージを抽出する能力が飛躍的に向上(※6)します。(図4)syzbotが「問題が起きたようだけど何が起きたのかを理解できなかった」と報告していた状況が改善され、新しい不具合を発見し、原因となったパッチを特定する上で活躍することが期待されています。
図4:Linux 5.1からは、スレッド毎に分離できるようになるため、解析の成功率が向上する。
syzbotをどんどん活用して、不具合の改善につなげ、OSカーネルの不具合に追い回されることのない未来(※7)を目指してみませんか?
普通の使い方では用いられないような「予想外の入力値」を与えることで、入力値の検査やエラーハンドリングなどが適切に行われているかどうかを確認するための試験です。適切に行われていなかった場合、プロセスがハングアップしたりクラッシュしたりするなどの形で不具合が表面化します。
syzbotが見つけたLinuxカーネルに対する不具合の内、未修正の不具合の一覧をhttps://syzkaller.appspot.com/upstreamから、修正済みの不具合の一覧をhttps://syzkaller.appspot.com/upstream/fixedから参照できます。
https://github.com/google/syzkaller/issues/491によると、およそ1回/秒のペースでクラッシュが発生するほどの規模(並列度)で稼働しているようです。
不具合報告の嵐を終わらせるために、ファジングテストを行うプロセスがファイルをオープンすることを拒否するパッチhttps://lkml.kernel.org/r/20190401090113.22946-1-jthumshirn@suse.deが投稿されました。なお、エイプリルフールパッチなので、鵜呑みにしないようにご注意ください。
注目を集める仮想化技術「コンテナ」、そのセキュリティ対策とは?
https://www.nttdata.com/jp/ja/data-insight/2019/0131/
printk: Add caller information to printk() output.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=15ff2069cb7f967d
pkg/report: support CONFIG_PRINTK_CALLER
https://github.com/google/syzkaller/commit/7da2392541a49c3f17b2e7d24e04b84d72b965fb
syzbotの能力が向上することで、ますますOSカーネル開発者たちがsyzbotに追い回されるようになるという説も…?