悪用可能なSUID実行可能ファイルは、基本的な権限昇格ベクトルです。しかし、そのようなすべてのファイルを検索するだけで、どのLinuxシステムでも大量の結果が表示されます。そのほとんどまたはすべてが安全であると推定されます。
Linuxシステムでの長い経験以外に、find / -perm -u=s -type f 2>/dev/null
によって返されたリストをスキャンして、干し草の山の潜在的な針を探すにはどうすればよいですか?比較できる既知/安全/予想されるSUID実行可能ファイルのリストはありますか?または、これを行うスクリプトですか?
比較できる既知/安全/予想されるSUID実行可能ファイルのリストはありますか?
そうではありません。主に、すべての最新のLinuxディストリビューションがパッケージベースであるためです。インストールは、インストールするパッケージに基づいて簡単に異なるため、単一のモノリシックな標準ファイルセットはありません。とはいえ、パッケージにはインクルードファイルのリストも含まれているため、SUIDバイナリが正当にインストールされているかどうかを簡単に確認できます。
または、これを行うスクリプトですか?
これに取り組むには2つの簡単な方法があります。パッケージに対して個々のファイルを検証する方法と、すべてのパッケージからSUIDファイルのリストをダンプする方法です。
たとえば、/ usr/binを見ていて、chfn SUID実行可能ファイルが心配だとします。 RPMベースのディストリビューションでは、パッケージに対してファイルを確認できます。
# rpm -Vf /usr/bin/chfn; echo $?
0
#
(0の終了コードは、不一致が見つからなかったことを示します。ファイルは、パッケージパラメーターに基づいて期待どおりです。 RPM Verifyが実行するチェック のリストを確認できます。)
Debianベースのディストリビューション(Ubuntu、Mintなど)では、RPMよりも集中化されたアプローチではないdebパッケージを扱います。 apt-fileとdebsumをインストールした後も、同じ全体的な効果が得られます。
# apt-file search /usr/bin/chfn
passwd: /usr/bin/chfn
# debsums passwd | grep /usr/bin/chfn
/usr/bin/chfn OK
#
パッケージリストを列挙してSUIDファイルを見つけ、それらを検証し、find
を介してファイルシステムに実際にあるもののリストとリストを比較するツールを作成できます。 (RPMを使用すると、少なくとも、すべてのパッケージのすべてのファイルをrpm -Va
、しかしそれは少しおしゃべりで、単なるSUIDファイルではありません)。
たとえば、インストールされているすべてのパッケージ(rpm -qa
)そして、パッケージごとに、SUIDおよびSGIDファイルをリストします。
# rpm -qlv util-linux-ng-2.17.2-12.28.el6_9.2.x86_64 | awk '$1 ~ /s/ {print $0}'
-rwsr-xr-x 1 root root 77560 Dec 5 2017 /bin/mount
-rwsr-xr-x 1 root root 53480 Dec 5 2017 /bin/umount
-rws--x--x 1 root root 20184 Dec 5 2017 /usr/bin/chfn
-rws--x--x 1 root root 20056 Dec 5 2017 /usr/bin/chsh
-rwxr-sr-x 1 root tty 12016 Dec 5 2017 /usr/bin/write
#
それを使用して、予想されるSUIDファイルのリストを作成します。