SIM フリーどさにっき 〜2014年10月中旬〜

by やまや
<< = >>

2014年10月14日(火)

couriertcpd is potentially shellshocked

_ qmail + bash 穴の続き。前回のあらすじ: qmail って、TCPREMOTEHOST や TCPREMOTEINFO からコード注入できるんじゃね? → できませんでした。

_ この前つついてたのは、ucspi-tcp に含まれる tcpserver だけだったけど、TCPREMOTEHOST/TCPREMOTEINFO を使うのは tcpserver だけじゃない。ということで、調査対象を広げてみた。結果、courier imapd などに含まれる couriertcpd が外部から任意の TCPREMOTEINFO を注入できることを確認した(TCPREMOTEHOST は注入不可)。tcpsvd や tcp-env はどちらも注入不可。

_ couriertcpd は (x)inetd や tcpserver 同様に任意のプログラムを起動できるいわゆるスーパーデーモンで、couriertcpd の子プロセスから穴ありの bash が呼ばれるとコード実行されることになる。ただ、通常の使い方ならば couriertcpd からは imapd や pop3d ぐらいしか呼ばず(courier mta を使ってる場合は esmtpd でも使われるけど、めったにいないよね)、bash が穴ありだったとしても影響することはまずないと思う。imapd のユーザ認証で bash が呼ばれたり、imapd とはまったく無関係な用途で inetd のかわりに couriertcpd を使って bash を呼んでたりするとひっかかる程度。

_ workaround: couriertcpd の起動時の引数に -noidentlookup を追加すればよい。

_ 外部からの値をそのまま環境変数に設定するのは、HTTP の CGI でもやってることなので、これが couriertcpd の脆弱性かというと違うと思う。が、そういう経路による攻撃がありうることは事実なので、潜在的な危険があるよ、と作者に連絡した。半月前、9/30 に。いまだ音沙汰なし。

_ なお、.qmail からのコマンド起動で注入されるのと同様のことが courier mta でも起きうるようで、こちらは ちゃんと告知されている。実際にそういう使いかたをしているところは少ないだろうとはいえ、couriertcpd でもコマンド注入の可能性があるんだから、告知しておいた方がいいと思うんだけどなぁ。


<< = >>
やまや