![日記 日記](https://srad.jp/static/topics/journal_64.png)
Cookieを使用したSQLインジェクション 33
タレコミ by schiavona
schiavona 曰く、
Cookieを使用したSQLインジェクションについて、LACから注意喚起のリリースが出ている。対象となるのは、IIS/ASP/ASP.NET上で開発されたWebサイト。攻撃内容がCookieに埋め込まれているため、そこを見ていないIDS/IPSによる検知をくぐり抜け、デフォルト設定だとCookieの内容はログに記録されないため、痕跡が残っていないケースが多そうだ。
攻撃元IPアドレスも公表されているため、ひとまずはこれをチェックすることはやっておいたほうがいいかもしれない。もちろん、ほかのIPアドレスからの攻撃も十分あり得る。
ちなみに、リリースとほぼ同じくしてゴルフダイジェスト・オンラインがやられているため、これも同じ攻撃だったかもしれない。
ASPがひどすぎる (スコア:4, 参考になる)
ASP.NETで入力されたデータを HttpRequest.Params を使って取得すると、GET, POSTの他にCookieの値も混ざっている、ということですね。この仕様はPHPの $_REQUEST と同じ。こんなWebサイトがIDSなどに頼っていた場合はいつもの被害が発生。SQLインジェクションでやり放題、もしくはXSSでセッションや秘密情報が盗まれると。
しかし、HttpRequest.Paramsで検索 [google.com]しても887件しか引っかからないところをみると、ほとんどの人はRequest.QueryString, Request.Formを使っているようです。
# そもそもHttpRequest.Paramsを知らない?
それよりも驚いたのは以下の部分。
どういう理由でこんな仕様になってるんでしょうね。
訂正されてます (スコア:4, 参考になる)
なので、さすがに%を除くという通常の発想の範囲外な実装では無いようです。
Re: (スコア:0)
久しぶりに見た気がする。
Re:ASPがひどすぎる (スコア:1)
Microsoftがこういう訳の分からない仕様にするときって、
のどちらかだから、今回もそうだと思うのですが...どうなんでしょうか。
Windowsなんてそんなののカタマリですしね。クジラの内臓がはみ出たOSです。
Re: (スコア:0)
それにIDS/IPSはURLエンコードが不正な時点で弾くべきだとも思いますが。
# そーいや、IISにゃそんなフィルタ [microsoft.com]があったな。
Re: (スコア:0)
ASP.NET + VB.NETだと
HttpRequest("paramname")
で値が取得できるのですが、この場合の挙動は HttpRequest.Params と同じようです。
HttpRequest.FormやHttpRequest.QueryStringを明示的に指定していないHttpRequest("paramname")なコードの方が引っかかりそうな気がします。
PHP? (スコア:1)
> (Cookieにてパラメータを受け取れるフレームワークは
> IIS/ASP/ASP.NET以外にPHPも同様と確認していますが、
> 現時点では他のフレームワークの状況は当研究所では未確認です。)
とありますが、実際のところPHPはどうなんですかね?
#自分で確認したいけど今忙しいので!
Re:PHP? (スコア:2)
#確かに、Sessionはテイントチェックしてなかった気がする。前のバイト先のプログラムをうすらぼんやり思い出してみると。
Re: (スコア:0)
いや、それぜんぜん今回の問題に関係ないでしょ。
Re:PHP? (スコア:1)
Re: (スコア:0)
Re: (スコア:0)
・CookieにSQLインジェクションの攻撃コードがある
・Cookieの内容(=セッションID)をDBに保存する
・DB保存のコードにSQLインジェクション脆弱性があるとSQLインジェクションが成功
ということでSQLインジェクションが発生しやすくなりますね。
今回のケースはASPのRequest()で書いたコードが引っかかる可能性が高そうなのですが、あちこちにバラまいたコードを修正する、という意味ではSQLインジェクション対策とどっちがマシか状態になるかもしれません。
Re: (スコア:0)
Re: (スコア:0)
サニタイズ言うな! (スコア:0, 興味深い)
# と私は解釈しているのだが間違ってますかね。
Re:サニタイズ言うな! (スコア:1, すばらしい洞察)
Re:サニタイズ言うな! (スコア:1, すばらしい洞察)
考える力が足りないから何度も同じようなSQLインジェクションに引っかかるし、サニタイズ言うなキャンペーンも誤解する
全くどうかしてる
Re:サニタイズ言うな! (スコア:1)
- そのようなコードを書いた本人
- そのようなコードがあることを見逃して納品した開発チーム or 開発チームリーダ or プロジェクトマネージャ
- そのようなコードがあることを見逃して検収を完了させた発注元
- そのようなコードがあることを知らずにサーバ上に乗っけているインフラチーム
- そのようなコードがあることを知らずに運用させている発注元の経営者
- そのようなコードがあることを知らずに利用しているユーザ
ちなみにこの時、一番被害を蒙るのはどこでしょうか。Re: (スコア:0)
ところでサニタイズ言うなキャンペーンは誰が対象ですか?
ちなみにこの時、サニタイズwやら文字のエスケープを意識すべきなのはどこでしょうか。
#なんなの?この人??
Re:サニタイズ言うな! (スコア:1)
被害を蒙らないことをいいことに意図して罠にかかっている場合を考慮しているのかどうか。
もし、そういう人もマヌケと呼ぶのなら、タブン私と #1432720 のAC氏とはマヌケの定義が違うのでしょう。
と、それはおいといて。
プログラムの作成を発注して意図して穴を残された場合、どこまで瑕疵責任を負わせることができるのでしょう。
IT法務ライブラリ [nikkeibp.co.jp]の記述を見ると、 とあるわけですが、セキュリティホールはどうなるのでしょう。
私は法律の専門家ではないので推測しかできませんが、意図しての行為だとしても「滅多に無いことだ」とか「製造時は予想できなかった」と言い張られると追求が厳しそうな。
また、意図してかどうかは、どの程度立証可能なのかとか。考えると厳しそうですけど…。
# 法律の専門家の方、突っ込み願います
もし、もし瑕疵責任を取らせることが難しいとなると、SQLインジェクションによる問題はいつまでもなくならないのかもしれないと危惧してしまうわけです。
そこで、法律上もある程度は瑕疵責任を特別に認定できるようにしておく必要性というものが見えてくるのですが、それはそれで問題がでそうですね。
そんなわけで、開発者は納期に追われて厳しいと言われている昨今、啓蒙だけではSQLインジェクション問題が無くならないのではと思ってしまうわけですが、いかがでしょうか。
Re:サニタイズ言うな! (スコア:1)
原因が把握され対応もできる脆弱性が敢えて放置されるのはそれを放置しても(利用者はどうかしりませんが)企業は困らないからだと思いますよ。
そして既にそれがデファクトスタンダードになりつつあるから自分のとこがそうでも気にしないのでは?ならば、そもそものところでSQLインジェクション問題が無くなるわけがないと思われ。
◆IZUMI162i6 [mailto]
Re: (スコア:0)
jbeef たんが言いたかったのは「必要なところでエスケープしようキャンペーン」だと思ってたのだけど、
いずれにしてもその真意を誰も理解していないという点でキャンペーンとしては失敗だったんじゃないかな。
# と半可通がデレッとした顔で言ってみる
Re:サニタイズ言うな! (スコア:1, すばらしい洞察)
・「必要なところ」って何?「出力する直前」という概念は本当にwell-definedか?
・何らエスケープされないデータがプログラム内を広く流通する(かもしれない)状況を作り出したとき、リスク増大しない根拠は?
どう考えても結局データ形式の選択と管理は徹頭徹尾プログラマの責任であり、
エスケープの有り様は要件と周辺状況に応じて適切に選択されるべきという
分かりきった結論しか残らんとです、、
「サニタイズするな」キャンペーン賛同者の大半が「誤解してるかもしれませんが、、」と恐る恐る私的解釈を述べるのも、
キャンペーンの主張が曖昧であることの裏返しだと思う。
なおプログラムの階層設計と絡めて上記キャンペーンを理解しようとしてる人もいるようですが、
階層設計で綺麗にすれば問題解消、というのは数学的根拠に欠けた単なる経験知にすぎず、一般性に疑問符。
Re: (スコア:0)
Re: (スコア:0)
ここが笑うところですか。
着眼点 (スコア:0)
着眼点はすごいなと思う。
だが所詮、糞は糞だ。
攻撃元IPが判っているのに (スコア:0)
当局ってこういうのには無力なの?
Re:攻撃元IPが判っているのに (スコア:1)
2.実際に攻撃を行うのは「踏み台」。 延々とモグラたたきをしたいですか?
notice : I ignore an anonymous contribution.
Re: (スコア:0)
Re: (スコア:0)
が、
> 頭がいいのにやり方が下手
と言う貴方の評価の表現なのだとしたら、貴方は頭が悪いのだと思いますし、
自分が他人を評価出来るなどと思わない方がいいんじゃないかな。
それどころじゃないですから、
本気でそう思いますよ。
皮肉とかからかいの気持ち無しに、