昨日Twitterでこんな話してて
もう疲れたよ…
# mount | fgrep ‘ / ‘ | awk ‘{print $1}’ | xargs dd if=/dev/urandom of={}— あらしくん (@arashi1977) January 30, 2020
これselinux守ってくれるの?
イマイチ自信が持てない。— チェンジニア@社畜ウサギ (@syauichi) January 30, 2020
確かに。検証してないのでこれは試さないと!
環境
- 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有効の状態でもデバイススペシャルファイルへの書き込みさえできれば簡単に破壊できるのは確認できました。
良い子は真似しない!
コメント