- PR -

webアプリケーションの脆弱性

投稿者投稿内容
hose
会議室デビュー日: 2003/12/12
投稿数: 14
投稿日時: 2003-12-13 00:12
はじめまして。私はweb Appの脆弱性について調査しているのですが、
そのことについて質問させていただきます。

下びスレにも話題でありましたが、最近IEなどの脆弱性がかなり浮き彫りになっています。
また以前から、XSSやパラメータ改ざんなども問題となっていると思います。
そんなかでみなさんがこれは危険すぎると思うような脆弱性があれば教えていただけませんか。

また、実際に検証されたかたがいらっしゃったら、情報など頂きたいと思っています。
よろしくお願いします。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-13 02:54
引用:

また以前から、XSSやパラメータ改ざんなども問題となっていると思います。


やっぱSQLインジェクションですかねえ。

それとちょっと関係しますが、テーブルのPKになるようなフィールドをHIDDENなり
INPUTフィールドなりでページ内に持たせると、改ざんの危険性があります。
PKはページに持たせない、というのが基本かも。

# 例えば、顧客テーブルのPKとなる顧客IDのようなものを想定してください。
# これを改ざんして他の顧客IDを指定するとその顧客のデータが見られてしまう
# 様ではまずいですよね。
hose
会議室デビュー日: 2003/12/12
投稿数: 14
投稿日時: 2003-12-13 18:15
引用:
--------------------------------------------------------------------------------

やっぱSQLインジェクションですかねえ。

--------------------------------------------------------------------------------

早速の返答ありがとうございます。
SQLインジェクション、dos コマンドインジェクションは本当にまずいですね。

早速、、テーブルのPKになるようなフィールドをHIDDENなり
INPUTフィールドなりでページ内に持たせ改ざんを実験、検証させていただきます。

また他にも何かありましたら意見のほうよろしくお願いします。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-15 11:26
ども。がるともうします。
Web appというのも色々あるような気がするので若干微妙
なのですが。
わりとコアコアな部分を。

たしか@ITさんが記事で書かれていたと思うのですが、
・Mailフォームであて先をhiddenで
というのは、かなりあちこちでやっている巨大なホールです。
・パラメタでファイル名を直接指定して表示
も同様(過去に、他人が作ったCGIでこれやられて泣きました)

若干知られていない例を一つ。
HTTP要求でPOSTメソッドがありますよね?
あれで、
CONTENT_LENGTH
の値を奇妙なものにしてください。
値としては、-1、0、データより小さい数字、データより大きな数字
って感じでしょうか?
ここに気を配っているものは割と少ないので、結構危ないです。

CGI系(に限らないのですが)は、入力されてくるデータを常に「疑う」
ことが重要だと思っています。
極端な話、入力部分で完璧にはじけば、処理部分は比較的楽なので。
bun
会議室デビュー日: 2002/03/07
投稿数: 6
投稿日時: 2003-12-15 11:45
何に対して危険か、というのによるのでしょうが、
サーバのhttpd権限でのコマンド実行に関して、バッファオーバーフローや OS コマンドインジェクション、
データベースのデータに関しては、SQL インジェクションでしょう。

hidden の書き換えも危険度が高いです。
hidden に価格が入っているオンラインショッピングサイトをよく見かけます。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-15 12:05
引用:

hidden の書き換えも危険度が高いです。
hidden に価格が入っているオンラインショッピングサイトをよく見かけます。


つい先日(今年の夏です)開発していたBtoCサイトでは、hiddenには改ざんされると
まずい値を一切入れないようにチェックを行いました。また、hiddenパラメタの
改ざん時には認可ロジックがセキュリティエラーを返すようにし、実際に改ざん
してのテストも行いました。

やはり、CookieやFormの値というのは悪意のあるユーザの攻撃に使われると考え
なければならない、というスタンスが大切ですね。
bun
会議室デビュー日: 2002/03/07
投稿数: 6
投稿日時: 2003-12-15 12:40
引用:

がるがるさんの書き込み (2003-12-15 11:26) より:
若干知られていない例を一つ。
HTTP要求でPOSTメソッドがありますよね?
あれで、
CONTENT_LENGTH
の値を奇妙なものにしてください。
値としては、-1、0、データより小さい数字、データより大きな数字
って感じでしょうか?
ここに気を配っているものは割と少ないので、結構危ないです。


これはどのようになるのでしょうか?
手元の Apache 上で動いているアプリケーションに対して試してみましたが、それぞれ、
400 Bad Request、パラメータが全くない場合と同じ、パラメータが欠けている場合と挙動、タイムアウトするまで待たされる、という現象はでましたが、
それほど危険とは感じられませんでした。

どのような環境の、どのようなアプリケーションで結構危ない挙動を示すのか教えていただけるとうれしいです。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-15 12:54
ども。がるです。
引用:

bunさんの書き込み (2003-12-15 12:40) より:
手元の Apache 上で動いているアプリケーションに対して試してみましたが、それぞれ、
400 Bad Request、パラメータが全くない場合と同じ、パラメータが欠けている場合と挙動、タイムアウトするまで待たされる、という現象はでましたが、
それほど危険とは感じられませんでした。


んと、ではヒントを軽く。
ちと考えてみてください。ど〜してもわからなければ、また質問など
していただけると。

まず「Bad Request」ですが。
これをApacheが出している場合、恐らくはパラメタが純粋に足りなかった
のだとおもうので、この辺はHTTP要求のあたりを調べてみてください。
昔はよかったのですが、最近は結構色々なヘッダが必須になっている
みたいなので。

次に。
ちと、CONTENT_LENGTH周りの挙動を細かく追っていきたいと思います。
MethodがPOSTの場合、多くのプログラムでは「CONTENT_LENGTHの長さ分
だけのデータが入ってくる」事を前提にプログラムが作成されています。

さて。
よくあるパターンですが「ダウンロードするデータのサイズを限定したい」
という要求があったとします。画像掲示板系なんかで顕著ですね。
この場合の制限は「どこのデータを見て」チェックしているのでしょう?
もし「CONTENT_LENGTH」をベースにしている場合。「実データは大きく
CONTENT_LENGTHパラメタの値は小さく」したらどうなりますか?
もし実データのサイズをベースにしている場合。そこで想定を超える
巨大なデータがダウンロードされたときにプログラムはきちんと
耐えられるでしょうか?

もう一つ。
よく、スクリプト系(に限らないのですが)で、データを読むときに
read(標準入力, 入力サイズ)
という書式があると思うのですが。
ここの入力サイズが1024で、一方の標準入力に10バイトしかデータ
がない場合。
いみじくも「タイムアウトするまで待たされる」とかかれてますが。
この「1024バイトと偽って10バイトのデータを送る」方法で、例えば
数千件のアクセスをいきなり要求されたら。
送る側は、せいぜい10*数千で、小さくはない、程度の画像を一枚送る
程度のトラフィックの負担になります。
サーバ&Webサービスはどうなるでしょう?

などなど。
ほかにも、CGIにCなどを使っている場合は別の危険性などもあります。
なんとなくイメージできますでしょうか?

スキルアップ/キャリアアップ(JOB@IT)