SELinuxはddによる破壊を防げるか

技術ネタ

昨日Twitterでこんな話してて


確かに。検証してないのでこれは試さないと!

環境

  • VMware Fusion
  • CentOS7 minimal
  • パーティションとかは特にいじらず、デフォルトのままインストール

検証

まずはちゃんとSELinuxが「Enforcing」になってることを確認。

んで mount | fgrep ' / ' | awk '{print $1}' でちゃんとrootデバイスファイルが特定できることも確認。

いざ!

ddに「そんなオペランドねえよ」って怒られてしまった。やり直してどういうコマンド列になってるか、単純に echo してみたら

そっかー、こんな感じになってたらofに指定したのがなにか伝わらんわー。てかxargsとか使わなくても別にシェル変数で渡せば良くない?改変版としてこれを実行

DEV=$(mount | fgrep ' / ' | awk '{print $1}'); dd if=/dev/urandom of=$DEV

動いた動いた。
HDDアイコンがしばらく点滅して、auditがコンソールになんか文句言ってきたあと何も動かなくなった。

おもむろにVMを再起動。grubの選択画面を抜けてOSの起動に入ると…?

Emergency modeに入った!期待通りOSが起動しなくなってる!journalctlでログ見れるってので確認すると。

/dev/mapper/centos-rootは見えるけど、fsckが見えなくなってるわファイルシステムが判別できないわでどうにもならない状態になってるのがわかる。

結論

当たり前といえば当たり前なのかもだけど、SELinux有効の状態でもデバイススペシャルファイルへの書き込みさえできれば簡単に破壊できるのは確認できました。

良い子は真似しない!

コメント

タイトルとURLをコピーしました