sudoってヤバいの?
久々にセキュリティーネタでびっくりしましたよ。
Linuxのsudoコマンドに、本来root権限をとれないユーザーがそれを奪取できるようになる脆弱性が発見されました。この脆弱性を突けば、sudoを利用する際の権限設定ファイルsudoersを適切に設定していても、sudoを使えるユーザーなら完全なrootレベルでコマンドを実行できるようになるとのこと。すでに修正が施されたsudoコマンドがリリースされています。
これだけ読んだら、「え!、sudoなんて良く使うコマンドじゃんヤバイ」となります。ちょっと深呼吸した上で正しい情報を集めました。
参考資料
元ネタ
Potential bypass of Runas user restrictions
https://www.sudo.ws/alerts/minus_1_uid.html
(日本語訳)
概要:
ユーザーがRunas仕様のALLキーワードを介して任意のユーザーとしてコマンドを実行できるようにsudoが構成されている場合、ユーザーID -1または4294967295を指定することにより、rootとしてコマンドを実行できます。これは、Runas仕様でALLキーワードが最初にリストされている限り、Runas仕様が明示的にルートアクセスを禁止している場合でも、rootとしてコマンドを実行するのに十分なsudo特権を持つユーザーが使用できます。
この方法で実行されたコマンドのログエントリは、ターゲットユーザーをルートではなく4294967295としてリストします。また、PAMセッションモジュールはコマンドに対して実行されません。
RedHat Document
CVE-2019-14287
https://access.redhat.com/security/cve/cve-2019-14287
説明
sudoが任意のユーザーIDでコマンドを実行する方法に欠陥が見つかりました。攻撃者がroot以外のユーザーとしてコマンドを実行できるようにsudoersエントリが記述されている場合、攻撃者はこの欠陥を利用してその制限を回避できます。
Qiita
CVE-2019-14287 [sudo] Potential bypass of Runas user restrictions の確認
CVE-2019-14287 [sudo] Potential bypass of Runas user restrictions の確認 - Qiita
影響を受けるユーザアカウントは限定的
既にsudoers登録がある
"どのユーザとして実行できるか"でALLキーワードがある
アップデートは実施したほうが良い
リスク次第で、緊急 から 次のメンテタイミング、までの間で実施したい。
大半のシステムでは 緊急には該当しない と推定される
考察
sudoの利用なんて、root実行権限の委譲でしか使ったことがなかったです。
visudoコマンドをつかって、rootじゃないユーザーにroot権限で実行させたいコマンドを登録しておく。
この使い方なら、今回の脆弱性に当てはまりません。
だからこそ、こんな基本的なバグがいつまでも放置されていたんだろうな・・と思います。
上記記事を読めばわかりますが復習です。
実行するユーザーの指定を、ALLかつ[root以外]とすると、root以外というところをすり抜けてしまうというバグです。
セキュリティーの権限設定の場合、アンド条件の場合厳しい方が当てはまる、という感覚を逆手に取った大バグですね~。
どれだけのLinuxでこんな書き方をしているシステムがあるかわかりませんが、たくさんのユーザーがいるLinuxでこんなバグが2019年まで放置されていたとは驚きです。
セキュリティーの盲点って案外こういうところにあって、絶対そんなバグないだろと思っているとてもシンプルな部分こそ、テストをすり抜けがちだと思います。
どんなに正しく運用設計したところで、本当に正しく機能しているか、ゼロベースで定期的にチェックしないといけない理由でもあります。
バックアップはきちんと取られているか。
監視はきちんと機能しているか。
セキュリティーは想定通り機能しているか。
攻撃されているのに気が付いていないということはないか。
・・・と言われると冷や冷やするのが運用エンジニアの正常な感覚だと思います。
「あ・・、できてなかった(てへぺろ)」、なんて体験は一度や二度じゃないですよ。
はたから見ると、もう安定しているんだからそんな仕事不要じゃないか、と見られがちですが、このレベル(てへぺろ)の障害が隠れている現状を考えると、油断大敵だと思いますね。
運用エンジニアは、「てへぺろ」をいかに防ぐか、がスキルだ。
ちなみに「てへぺろ」の意味はこちら。