あなたが開いたブラウザやエディタが、パスワードを一度も聞かれずに、パソコンの中のファイルをどれでも読めた。Linuxには、パソコンの中身すべてに手が届くrootという権限がある。ふだんはパスワードを入れたときだけ使える。このパスワードだけが、勝手に使われるのを止めている。開発者向けのLinux配布版Omarchyでは、デスクトップから起動したほぼどのプログラムも、パスワードを一度も聞かれないままrootになれた。
なぜパスワードなしでrootになれたのか
dockerグループに入った利用者は、rootで動きつづけるDockerに命令を送るためのファイル(/var/run/docker.sock)に触れる。プログラムを閉じこめて動かす箱(コンテナ)を1つ作り、パソコンのディスクを丸ごと読めるようDockerに命じる。ファイルを実際に開くのは、rootで動くDockerだ。
Omarchyは Arch Linux をもとにした開発者向けの配布版で、Ruby on Railsを作ったデイヴィッド・ハイネマイヤー・ハンソンが公開している。初期設定の利用者アカウントをdockerグループへ入れているため、docker runにパスワードがいらない。
報告者が示した手順は3行だった。まずcat /etc/shadowと打つと、権限がないと断られる。次にidと打つと、自分の所属に967(docker)が並ぶ。そのうえでdocker run --rm -v /:/hostroot alpine cat /hostroot/etc/shadowと打つと、さきほど断られたパスワードの保管ファイルが画面に流れた。
Dockerのroot権限がどこまで広がっていたか
dockerグループに入った利用者が開いたプログラムには、同じ権限がそのまま付く。デスクトップから起動したプログラムは、その利用者のdockerグループの権限をそのまま引き継いでいた。報告者は、ログイン後に立ち上がったプログラムを一つずつたどって確かめた。
ダウンロードして動かすプログラムは、どれもrootで動くのと変わらない。ブラウザ、エディタ、npmのスクリプト、拾ってきた開発用の道具、そしてAIのコーディングエージェントが並ぶ。どれか1つが乗っ取られれば、パソコンごと乗っ取られたのと同じだ。
厄介なのは、利用者が自分で選んだ設定ではないことだ。Dockerを一度も動かさない人のアカウントにも同じ設定が入っていた。パソコン全体の権限を渡す設定だとは、どこにも書かれていない。Omarchyの開発ツールの解説には「Dockerをrootではなく通常の利用者として動かすために必要なグループ変更」とあり、読んだ人はむしろ安全のための変更だと読めてしまう。実際に入っていたのは、その逆の設定だった。
4.0.1へ上げたあとに何をしておくか
まず4.0.1へ更新する。3系の最新の配布ファイル(3.8.4)も同じ状態だったと報告者は書いており、古い配布ファイルから入れたパソコンは放っておいても直らない。
同じことはOmarchy以外でも起きる。利用者をこのグループに入れるのは、root権限を渡すのと同じだ。手元のLinuxでidと打ち、画面に出た一覧にdockerがあるなら、そのアカウントで動くプログラムにはroot権限があると考えたい。報告者はDockerをやめ、裏で動きつづけるプログラムがいらないPodmanへ移って数か月になるという。コンテナは自分と同じ権限の子プロセスとして動くので、rootを渡さずに済むと書いている。
AIのコーディングエージェントに端末の操作を任せる人ほど、初期設定のひと項目が、そのまま被害の大きさになる。4.0.1に上げたあともidと打ち、表示からdockerが消えているかどうかを、その場で確かめることになる。
出典
- Omarchy: Any User Process Can Escalate to Root(0xcc.io、2026年8月28日)