なぜこれがセキュリティの問題なのですか?
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=820331
>
> very predictable temporary files (like
> /tmp/cronic.out.$$) that depends only on PID:
> OUT=/tmp/cronic.out.$$
> ERR=/tmp/cronic.err.$$
> TRACE=/tmp/cronic.trace.$$
> "$@" >$OUT 2>$TRACE
Use CVE-2016-3992.
隠すことによるセキュリティは、最新のハッキングソフトウェアの速度を低下させることはなく、常にデバッグを困難にします。
/tmp
ディレクトリには常にスティッキービット(drwxrwxrwt)が設定されているので、悪意のあるユーザーによる削除と置換が妨げられませんか?
Lie Ryanの回答に基づいて、次の結果を実験しました...
System
Puppy Linux 5.2.8 (based on Ubuntu 10.04)
Privileged User
root
/etc/passwd
root:x:0:0:root:/root:/bin/bash
$PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
> groups root
root : root tty
> id -nG root
root tty
Unprivileged User
spot
/etc/passwd
spot:x:502:502:Linux User,,,:/home/spot:/bin/sh
$PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
> groups spot
spot : spot
> id -nG spot
spot
Owners, Groups, Permissions
> ls -l /bin/busybox /bin/cat
-rwxr-x--- 1 root root 637960 2011-08-17 11:04 /bin/busybox
-rwxr-xr-x 1 root root 50820 2011-08-17 11:04 /bin/cat
> ls -l /usr/bin/less
lrwxrwxrwx 1 root root 17 2011-08-17 10:49 /usr/bin/less -> ../../bin/busybox
> ls -l /home/spot/myless /home/spot/text
lrwxrwxrwx 1 spot spot 13 2016-05-08 12:23 /home/spot/myless -> /usr/bin/less
-rw-r--r-- 1 spot spot 12 2016-05-08 13:01 /home/spot/text
Expected Behavior
Thus, unprivileged user 'spot' should be able to run 'cat', but not 'less'.
Attempt to run 'less' via the symlink (indented for clarity)
root@LX03:~ su spot
spot@LX03:~ pwd
/home/spot
spot@LX03:~ echo $PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
spot@LX03:~ ls -l myless text
lrwxrwxrwx 1 spot spot 13 2016-05-08 12:23 myless -> /usr/bin/less
-rw-r--r-- 1 spot spot 12 2016-05-08 13:01 text
spot@LX03:~ cat text
sample text
spot@LX03:~ myless text
sh: ./myless: Permission denied
私が正しく理解していれば、pidサフィックスが付いたtmpファイルの脆弱性は、悪意のあるプログラムの所有者が実行できるようにするために、悪意のあるプログラムが「特権ファイルへのシンボリックリンク」(おそらく実行可能ファイル)を作成することです。それ以外の場合は、そうするために必要な権限を持っていません。これは正しい理解ですか?
もしそうなら、私は何かが欠けています。
所有権、グループ、およびアクセス許可(OGP)は、ディレクトリエントリではなく、実際のファイルにあります。シンボリックリンクは、別のディレクトリエントリを指すディレクトリエントリです。
シンボリックリンクがどのように脆弱性を開くことができるのかわかりません。
私が理解し、私の実験がサポートしているように、OGPは、ファイルの場所に関係なく、ファイルシステム全体に対してグローバルです。 $PATH
ディレクトリを検索するか、パス全体を直接入力することによって、ファイルがシンボリックリンクによってアクセスされるかどうかは関係ありません。
実行可能ファイルを表示する唯一の方法は、実行可能ファイルの所有者がアクセスできるディレクトリとファイルにアクセスできますが、実行可能ファイルを実行しているユーザーは、実行可能ファイルでSETUIDまたはSETGIDが有効になっている場合です。
私は何を誤解していますか?
問題は、攻撃者が脆弱なプログラムよりも先にシンボリックリンクを作成できることです。たとえば、プロセスリストを監視するスクリプトを作成すると、適切な名前のプログラムがリストに表示されるとすぐに、脆弱なプログラムが実行する前に、スクリプトが特権ファイルへのシンボリックリンクを作成しようとします。脆弱なプログラムが特権プロセスとして実行されている場合(cronジョブがよくあるように)、これにより、攻撃者が書き込む特権を持たないファイルに攻撃者が書き込むことができる可能性があります。
場合によっては、プログラムが開始する前にシンボリックリンクの作成を開始することもできます。これは、PIDが順番に割り当てられ、脆弱なプログラムが開始する前に別のプログラムが常に/頻繁に開始することがわかっている場合は、事前にいくつかのPIDファイルをプリエンプティブに作成できるためです。 。
ファイルが作成されると、スティッキービットのために脆弱性は問題になりません。