Linux Daily Topics

2016年10月5日「最初の設計がダメすぎる」― systemdをめぐる終わりなき論争

Fedora、Ubuntu、Debianなど、いまやほとんどのメジャーなLinuxディストリビューションではsystemdが最初の起動処理システムとして採用されている。だがsystemdはその登場時から「仕様、とくにセキュリティに問題が多い」として議論のネタになりやすく、また、メイン開発者であるLennart PoetteringKay Sieverseの言動がやり玉に挙がることも少なくない。

そして最近になってふたたび、1つのバグをきっかけにsystemdをめぐる論争がヒートアップしはじめている。

9月28日、サンフランシスコ在住のAndrew Ayerという開発者が自身のブログに「1ツイート(140字以内)でsystemdをクラッシュさせる方法(How to Crash Systemd in One Tweet⁠⁠」というエントリを投稿した。それによれば

NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""

というたった1行のコマンドを実行するだけで、rootユーザに限らずローカルユーザであってもsystemdをかんたんにクラッシュさせることができるという。このコマンドを実行すると、最初のプロセスID(PID 1)がハングしてしまい、システムコールの呼び出しが中断、システムが不安定になりユーザは再起動すらできない状態になるとAyerは指摘、DoS攻撃の温床にもなりかねないと警告している。

このバグはすでにパッチがリリースされており、Ubuntuはこれを反映したフィックスを9月29日にリリースしている

だがAyerは本質的な問題はこのバグ自体ではなく「なぜ、こんなシンプルで重大なバグが2年ものあいだ(sytemd 209以来)放置されていたのか、いったいどんな品質保証プロセスを通ってきたのか」という点にあると主張、⁠systemdはそもそもの設計からして欠陥品」⁠systemdの開発者たちはバグを少なくする努力の重要性を少しも理解していない。そのかわりに途方もない複雑性をPID 1にかぶせていて、しかもそれはrootとして動作し、アンセーフなメモリアクセスをもたらす言語で書かれている」と言い切っている。

このAyerの批判に対し、systemdのメンテナーであるDavid Straussは「1ブログポストで癇癪を起こす方法(How to Throw a Tantrum in One Blog Post⁠⁠」というAyerのブログを皮肉ったタイトルのブログエントリで応戦、Ayerの主張はただのsystemdへのいら立ちであり、ミスリーディングな言い分だとしている。この後も両者の間ではブログやTwitterを通して「Straussの反論は何もかもがゴミな言い分」⁠Ayer⁠⁠、⁠systemdがどの言語で書かれるべきか、Ayerはそれを決める立場にない」⁠Strauss)などと応酬を続けている。

systemdの脆弱性が指摘されるケースはこれまでも何度かあったが、⁠そもそもの開発理念、設計思想がダメすぎる」というAyerの主張は、現在のLinux界隈に小さくない波紋を呼んでいる。1つのバグに端を発した論争は、収束までにまだ時間がかかりそうだ。

おすすめ記事

記事・ニュース一覧