ikepyonのお気楽な日々〜技術ネタ風味〜 このページをアンテナに追加 RSSフィード

気になった日々のニュースとメモのためのリンクと戯言のページ

To Do(というかやりたいこと。何時終わることやら)
-ITIL導入のための成熟度チェックシートみたいなの(あると便利だよね?)
-Hacknotes Web Security Portable Reference和訳(出版社募集中)
-Webアプリケーションセキュリティ検査ツールの改良(一応完成)
-Hacker HighSchoolの資料の日本語訳
-OSSTMMの日本語訳
-「燃えるセキュアプログラミング」若しくは「サルでも分かるセキュアプログラミング」とか書いてみたいなぁみたいな。

これだけはチェックしときなはれ!!受入れテスト用セキュリティチェックリスト公開中
Webアプリケーションセキュリティはてなぐるーぷ(テスト中やで)
SQL Injectionの仕組みと対策公開中
RSS feed meter for http://d.hatena.ne.jp/ikepyon/
Secure Coding に入ろう!! [MLの詳細]
メールアドレス
SKUF Meeting なかのひと

2007-05-31 だるだる

[]最初に学ぶのにいいプログラム言語 最初に学ぶのにいいプログラム言語を含むブックマーク 最初に学ぶのにいいプログラム言語のブックマークコメント

プログラム言語は色々あると思うんだけど、オブジェクト指向型の言語を最初に学ぶのはインスタンスクラスオブジェクト概念の理解が必要なので難しいかなぁと思うのですよ。

http://itpro.nikkeibp.co.jp/free/NIP/NIPCOLUMN/20021126/1/

Javaだったら、こんな感じのことが分からないんじゃないかな?

public class Main {

public static void main(String[] args) {

Aclass a;

Aclass aa;

Aclass b;

Aclass bb;

a = new Aclass();

a.setA(5);

aa = a;

System.out.println("aa=a->" + (aa==a));

System.out.println("aa.equal(a)->" + aa.equal(a));

aa.setA(6);

System.out.println("a.a=" + a.getA());

System.out.println("aa.a=" + aa.getA());

b=new Aclass();

bb = new Aclass();

b.setA(7);

bb.setA(7);

System.out.println("bb=b->" + (bb==b));

System.out.println("bb.equal(b) ->" + bb.equal(b));

bb.setA(6);

System.out.println("b.a=" + b.getA());

System.out.println("bb.a=" + bb.getA());

}

}

public class Aclass {

int a = 0;

public void setA(int i) {

a = i;

}

public int getA() {

return a;

}

public boolean equal(Aclass aclass) {

return (a == aclass.getA());

}

}

これを実行した結果が、こんな感じになるけど、なぜ、aとaaは等しいのに、bとbbは等しくないのかが分からないかも知れない。

aa=a->true

aa.equal(a) ->true

a.a=6

aa.a=6

bb=b->false

bb.equal(b) ->true

b.a=7

bb.a=6

まあ、分かっている人には、「aa=a」はインスタンスコピーされているわけじゃないというのは分かるんだけど、普通数学の知識だけだと、インスタンスコピーされていると思うんじゃないかなぁ。

こういったことがあるので、初心者オブジェクト指向言語を教えるというのはあまり、お勧めしないんですよ。それに、呪文として教え込むと、ひどいプログラムしかかけなくなると思うし。

最初に理解して欲しいのはアルゴリズムだと思う。きれいなプログラムを書くことも重要だけど、それはまず、どうプログラムを書けばよいか?というのが分かってからだと思うんだよねぇ。

ただでさえ、プログラムの考え方というのは普段の思考とはちょっと違うのに、躓く概念が必要というのは挫折することが多いんじゃないかなぁと。

だから、私はCもポインタがあるので最初に教えるというのは良くないと思うんだよねぇ。

通りすがり通りすがり 2007/06/06 14:37 「普通の数学の知識」なら、方程式にしか見えないのでは?
a = b が、b を a に入れるという意味なるという発想がそもそも普通でないです。
それに気づかないのは、そういう言語で育ったためにすぎない。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070531

2007-05-29 原稿おわらねぇorz

締め切り間近なのに・・・

[]最初に覚えるプログラム言語 最初に覚えるプログラム言語を含むブックマーク 最初に覚えるプログラム言語のブックマークコメント

原稿からの現実逃避のために書いてみるw

世の中には幾つか言語があるけど、どういったものがいいのかなぁ?

Perl言語を覚えると、すごいこと(まあ、それこそ呪文のような一見すると分からんもの)になるのであまりお勧めできないし、CはCでポインタ概念が一般的でないので非常に苦労するだろうし、そこでつまずいて先に進めない気がする。

PHPPerlと同じ理由であまりお勧めできない。

そうなるとJavaとかRubyとなるんだけど、Rubyは使ったことがないので分からんけどJavaクラスとかポリモーフィングと言ったオブジェクト指向概念で苦労するんじゃないかなぁ?

残ると言えば、BASIC(というかVisual Basic無印Basic関数概念がなかった気がするのでお勧めできない)、FORTRANPASCALCOBOLだよなぁ。これらでアルゴリズムの基礎を理解すると言うのが一番いい気がするですよ。

どれか1つでプログラムでも組んで、習得できたら、後はリファレンス見るだけで、どんな言語でもつかえるようになると思う。ただ、その言語独特の書き方があるから、その部分はサンプルプログラムを参考にする必要が歩けどね。

修正)VBはOKだけど、無印Basicはダメと書いたつもりだったんですが、両方ダメと読めるため修正しました)

ya_taya_ta 2007/05/29 19:36 漢なら「CASL」でしょ(マテ
#Z80と言う手もアリ

ikepyonikepyon 2007/05/29 19:40 www
いやぁ、アセンブラは苦労しすぎですってw
最初は、ロジックの考え方が分からないとプログラムって組めないですし

yamagata21yamagata21 2007/05/29 21:07 手続き型だったらPascal、オブジェクト指向だったらJavaですかねw

まーまー 2007/05/29 22:09 COBOLは、書く前に設計をきちんとやらないと後で大変だよ〜、順序良く書かないと大変だよ〜という面から見ても、まだまだ情報処理教育課程で現役なのがわかる気がします。(メインフレームも現役だしー)

F.KoryuF.Koryu 2007/05/30 09:54 今……という条件が付くならVBS(WSH)かなぁ……。Windows環境限定だけれど、別途コンパイラ等を入れる必要も無く、関数(Function)や簡易的なクラス(Class)の概念もあるので、安価でお手軽にプログラミングのさわりを覚えたいならアリかもです。

ikepyonikepyon 2007/05/30 16:46 COBOLはがちがちですから、設計する癖をつける意味ではいいのかもしれませんね。妙な癖もありますが>まーさん
クラスの概念は、構造化ができてうれしい概念だと思うので、全く知らずにクラスの概念を理解するというのは厳しいと思うのですよ。個人的な意見ですが>F.Koryuさん

はせがわはせがわ 2007/05/30 17:20 N88-BASICならDEFFNでいちおう関数定義できますよ。それよりグローバル変数しか使えないとか、IF文がブロック化されてないとかが問題かと。

ikepyonikepyon 2007/05/30 17:33 おお、そうでしたか、それは知らなかったです。基本GOTOとGOSUBしかないものだと思ってました。ま、GOSUB使って関数化というのはありかもしれませんが・・・
無印Basicには構造化という概念がなかったですしね。

ockeghemockeghem 2007/05/30 23:25 DEFFNは、確か一行の式で書かないといけないので、C言語などの提供するモジュール化のための関数とは趣がちがいますよね。まだGOSUBの方がましではないかと思います。

田中.ROM田中.ROM 2007/05/31 00:17 IT系企業で新人研修の時に使うプログラム言語は何か?アンケートとると面白いかも知れません。
それで集計とって一番多い言語が初心者に向いている言語といえると思うのですが。
企業によってスタンスが違うでしょうから、結構ばらつきますかね。
でも手間とか色々大変ですね(汗)。

ya_taya_ta 2007/05/31 10:15 PL/Iで(マテ<新人研修

ikepyonikepyon 2007/05/31 10:27 う〜ん、新人研修のときに使うプログラム言語=初心者に向いている言語ではないと思います。というのも、即戦力になることを企業は期待しているので、企業が一番良く使っている言語になると思うので。そして、それがイコール初心者に向いているか?となると別だと思うのですよ。

まーまー 2007/05/31 22:23 それ以前に「IT系企業」の意味だけでも、いろいろありますよね。業務システムまで扱う有名大手ベンダとWeb2.0系とかでも全然違うし。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070529

2007-05-25 参った

[]検査ツール 検査ツールを含むブックマーク 検査ツールのブックマークコメント

例のツールのhttpsにバグ発覚orz

配布した人には申し訳ないです。テスト漏れがありましたm(_ _)m

頑張ってバグ取りしてるけど、原因不明。

う〜ん単純なことなんだろうなあ。

(追記)

なんとなく、理由が分かった気がする。どうやら当たりだったっぽい。うち帰って直そう。

直したものは後ほど、何らかの方法で配布します>All

[]本 本を含むブックマーク 本のブックマークコメント

頼んでた本がキタ〜〜〜〜

Professional Pen Testing for Web Applications (Programmer to Programmer)

Professional Pen Testing for Web Applications (Programmer to Programmer)

未だ、ぱらぱら見ただけだけど、ハゲ親父の方は、WebInspectを使ったWebアプリのPenetration Test(あえて言ってみるw)の方法が書かれていた。

もう1つはCDつき。

両方ともなかなかよさげだけど、実際には読んでみないことにはなんとも。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070525

2007-05-24 ぎゃ〜〜

いきなり締め切りすぎてますけどと言われたorz

いや、こちらは、全く書くことが決まっていると思ってなかったんですが・・・

[]NOD32 Antivirus Two Buffer Overflow Vulnerabilities NOD32 Antivirus Two Buffer Overflow Vulnerabilitiesを含むブックマーク NOD32 Antivirus Two Buffer Overflow Vulnerabilitiesのブックマークコメント

http://secunia.com/advisories/25375/

昨日メール見てたらNOD32バッファオーバーフローがとかいうのが流れているなあと思ったら、これだったか。

うち帰ってバージョン調べんとな。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070524

2007-05-23 ぐはっ

仕事WSH書かんといけなくなったorz

VBScriptでXMLDOMで処理しようとするとむちゃくちゃ汚くなったのでイヤになったorz(まあ、じぶんがむの〜なのが悪いんですがorz

SAXはつかえないっぽいし、綺麗に書く方法はないものか?

[][]Webアプリ検査ツール Webアプリ検査ツールを含むブックマーク Webアプリ検査ツールのブックマークコメント

何人かに渡したんだけど、未だ反応がないw

テストサイトを使ってテストしただけなので、ほんちゃんで使われているアプリで、どの程度検査できているのか知りたいんだけど・・・。まあ、あのドキュメントじゃテストは無理かなぁ?

本腰入れて、ドキュメントを作るとするか。

[]フェイルセーフ フェイルセーフを含むブックマーク フェイルセーフのブックマークコメント

http://www.ffortune.net/comp/tidbit/failsafe.htm

なかなか面白い

kikuzoukikuzou 2007/05/23 19:44 ぐはっ、すみません。本業が忙しくまだツールを試用することが出来ません・・・_| ̄|●

ikepyonikepyon 2007/05/23 19:49 あっいえ、そんなすぐに反応がもらえるとは思ってません。
なんかせかしたようで、すみませんm(_ _)m

はせがわはせがわ 2007/05/23 22:13 VBScriptだとWithを使ってくくってやると、若干見やすくなります<DOM操作。JScriptだと、その場しのぎの局所関数(closure)とかを作ってやるとか…。

ikepyonikepyon 2007/05/24 01:34 なるほど、ちと使ってみます。
でも、作ったやつは、再帰使わずに書いてたから、後で見たら何やっているかわからないorz
ちゃんと再帰使って書き直そうかなぁ?

h-ふじたh-ふじた 2007/05/24 12:11 すんません。こっちも本業でちょとばたばたしてます。でも、本ちゃんにかけれたらなぁ、、と思ってます。来週あたり。

ikepyonikepyon 2007/05/24 13:53 ぁぅ、こちらこそすみません。
使用感などをワクワクしながら期待して待ってます

h-ふじたh-ふじた 2007/05/24 16:33 で、かけられるかなぁ、、と思ったのですが、すんません。 httpsには対応してないですよね。こいつ。なのでできない。。。

h-ふじたh-ふじた 2007/05/24 16:41 ただ、デモ(というか自分のツールの検証用?)のサイトで試したときは、生のリクエストとレスポンスが見えないので、それはちょっと使いにくいかなぁ、、とおもいました。

ikepyonikepyon 2007/05/24 17:12 今回のバージョンではhttpsも一応対応しているはずです、多分。
検査結果の生のリクエストとヘッダーは見えると思いますけど・・・
巡回時の生リクエストとレスポンスはつけてないですけどね。
そこは次回バージョンで追加します

ikepyonikepyon 2007/05/24 17:13 httpsのサイトはアクセスできることは確認してありますが、ダメでした?

h-ふじたh-ふじた 2007/05/24 17:42 ちょこっとためしてみたところではだめでした、、うーん

ikepyonikepyon 2007/05/24 17:47 うーん、サーバとの接続がうまくいかないみたいですね。確認しました。Proxyは動いているみたいですけど・・・
HttpClientのバージョンの問題かなぁ?

ikepyonikepyon 2007/05/24 17:48 JREのバージョンっていくつ使ってます?

ikepyonikepyon 2007/05/24 17:52 テストしたときは1.5で接続できてたんですが、会社のPCは1.6でダメでした。
これが関係しているかも・・・

h-ふじたh-ふじた 2007/05/24 17:54 えっちです。動作させた環境では、JREのバージョンは1.5です。1.6は使用していません。。

ikepyonikepyon 2007/05/24 18:12 ぬ〜調べてみます。すみません。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070523

2007-05-22 体が思い

[]XSS XSSを含むブックマーク XSSのブックマークコメント

http://www.darknet.org.uk/tag/xss

こんなものを見つけてしまったw

トラックバック - http://d.hatena.ne.jp/ikepyon/20070522

2007-05-21 だるい

[]Webアプリセキュリティ検査ツール Webアプリセキュリティ検査ツールを含むブックマーク Webアプリセキュリティ検査ツールのブックマークコメント

一応書いておくと、現状シグネチャコードテスト用のものが各検査モジュールごとに1個しか作ってないので、これだけで検査するというのはかなり無理があったりする。

そのうちシグネチャはつくっていこうとは思うけど、かなり優先順位は低いんで、できれば誰かに作ってほしいなぁと希望してたりしてw

その前に、ドキュメントを作らんといかんのですが・・・

[]Webアプリセキュリティ検査ツールの検出ロジック Webアプリセキュリティ検査ツールの検出ロジックを含むブックマーク Webアプリセキュリティ検査ツールの検出ロジックのブックマークコメント

原理的にはこんな感じ。

http://webapplicationsec.g.hatena.ne.jp/ikepyon/20041201

モジュールロジックはこんな感じ

http://d.hatena.ne.jp/ikepyon/20070402#p1

まあ、目玉としては、SQLインジェクションの検出ロジックだと思っていたりする(自画自賛w)

そうそう、頂いているツールの試用希望はうち返ったら処理しますので、夜まで待ってください。

あと、ソースも一緒に送りますんで、そこんとこよろしくお願いします。

ソースコメント入ってない&とっても汚いですが^^;

追記)脆弱性検出の原理はこっちの方がいいかも

http://matcha139.hiemalis.org/doc/WebApliSec.pdf

yamagata21yamagata21 2007/05/21 17:01 SQLインジェクションの検査で「or」を使ってしまうと、もしも脆弱なアプリだった時に、データが全件更新されてしまう恐れがありそう。(^-^;

ikepyonikepyon 2007/05/21 18:05 あはは、確かにw
シグネチャ直しておきます。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070521

2007-05-19 だるい

とりあえず、出かけるかなぁ

[]Webアプリ検査ツール(from Web Security Memoさんとこ) Webアプリ検査ツール(from Web Security Memoさんとこ)を含むブックマーク Webアプリ検査ツール(from Web Security Memoさんとこ)のブックマークコメント

http://websec-memo.blogspot.com/2007/05/blog-post_19.html

たいしたものじゃありません。とはいえ、現在の商用検査ツールでは難しい複数ページ遷移後に脆弱性があるアプリ脆弱性検出くらいはできます。

http://www.webappsec.org/lists/websecurity/archive/2007-03/msg00046.html

ツールでは見落としているのかもしれないけど、そんなに労力かかってないしw

コード書き出して大体3ヶ月ってとこかな?しかもオフタイムに。なので、いうほど面倒じゃないと思うんだが。

脆弱性の検出方法は独自だけど、検査方法は単にproxyリクエストを受け付けて、パラメータを分析して、変更して投げてるだけだし。

検出ロジックだって、ちょっとプログラマプログラムを書くときのことを考えて、作りやすいミスを検出できるようにしただけだし・・・

ていうか難しく考えすぎのような・・・

セッション維持のロジックだって、たいしたことないっしょ。普通アプリならばね。

まあ難しいのが、あれだけど回数制限のあるサイトだけど、それも何とかする予定だし・・・漠然としたアイデアはある、でも実装は難しいかも・・・

h-ふじたh-ふじた 2007/05/19 19:11 こんにちは。えっちです。 複数画面遷移のときの脆弱性をけんしゅつできるのは便利ですよね。自分のにも、それをツけたいなぁ、と思っているんですが、なかなか手ごわいです.

ikepyonikepyon 2007/05/19 20:07 複数画面遷移の脆弱性を検出ってのは画面遷移を覚えておいて、順番にリクエストを投げればいいかなぁと思ってます。攻撃パターンを投げたリクエスト以降のリクエストに対するレスポンスをすべてチェックすることで、できるのではないかと。
問題はURLが毎回動的に作成される場合ですが、これは現在サポートできてません^^;

h-ふじたh-ふじた 2007/05/19 20:15 そうですね。複数画面遷移を持って、それに対するレスポンスを追跡する、というのがやはり常套手段ということになるのでしょうか。
URLやリクエストパラメータの一部が動的に使われている場合は、、たしかに厄介ですね。自分も悩んでたりします。
どこまでツールでがんばるか、というのも問題になるような気もしています。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070519

2007-05-18 何かに憑かれています

朝から、だるだる。明日は近場の温泉に行くかなぁ?

[][]検査ツールの次期バージョン 検査ツールの次期バージョンを含むブックマーク 検査ツールの次期バージョンのブックマークコメント

ま、一応一通りは動くことを確認したので、次期バージョンに組み込む機能とか要望で思いついたものを書いてみる。

シグネチャファイルフォーマット変更

 書き方が冗長だというツッコミがあったのでw、まあ、それほど難しいことでもないし。

検査結果の手動確認ツール

 む〜、これは要望として上がったけど、別のツールで実現できるし・・・というわけで、却下w

検査モジュールの外だし

 やり方の問題なので、できれば実装したいなぁ。あっ、そうか、インターフェースと、abstract class使えばいいのか?

・BufferedStreamを使ってない

 これは今一わからんのだよねぇ。ずいぶん前に試したことだし、再度挑戦してみるか?

現在どのセッションを開いているのか、一目で分かると、使いやすくなると思います。

 これも理由が分からないorz。おかしいなぁ?

リクエストの削除

 21氏以外にも要望もらったので、がんばってみますw

・「Test Result View」のフィルタ機能

 結構簡単にできそうなので実装

・「Test Result View」の「Response」で、脆弱として判断した根拠の部分を太字&色づけなどで強調表示して欲しい。

 これ、すごく面倒そうだけど、ふゅ〜ちゃ〜りり〜すでということでw

バグトラッキングシステムとの連携

 これあると、開発のとき便利だよねぇ。何れは入れたい機能だな。

マルチパートリクエスト対応

 実はこれ実装できてないしorz。次のリリースで入れようっと。

・複数のセッションIDの取得

 現在セッションIDは1個しかダメなのよ。ロジック部分は大まかに考えているので、早急に実装だな。

レスポンスデータDBへの格納

 現在レスポンスデータファイルとして保存してるんだよね。これって、でっかいアプリ検査することになったら、ファイルに保存できなくなる可能性(i-nodeだっけ?が足りなくなる)があるので、できればDBに保存したい。これも何とかなりそうなので、次のリリースで実装しようっと。

といったところかな?その前にドキュメント整備して公開しないといけないけど。

未だあった。

検査中に結果が見えるようにする。

 これは別スレッド検査ルーチンを動かしゃいいと思うんだけど、StatusLineにプログレスバーを表示しているせいかうまくいかない。このあたりはちょっと再度コードを見直さないと。

HTTP認証を追加する

 これも忘れてたw。ApacheのHttpClientを使ってるから、そちらにお任せしちゃえばいいので、実はそれほど面倒じゃないのに実装してなかったり・・・

・設定をGUIでできるようにする

 これもだったり・・・今は設定をXMLファイルで行っているけど、最終的にはGUIで出来るようにしたいなぁ。

yamagata21yamagata21 2007/05/18 13:52 ボクだけからの要望だったら頑張ってくれないのか〜w

ikepyonikepyon 2007/05/18 14:22 いや、そういうわけじゃなくてw
内部的な話をしてしまうと、リクエストのインデックスを1からの連番で取っているandインデックスに歯抜けがないことを前提にプログラムを組んでいるので、面倒なんです^^;
それに、検査後にリクエストを削除されるとデータの整合性が取れなくなる(まあこれは、リクエストを削除するときに同時に全検査結果を削除すればいいんですが)といった問題があちこちに発生する(つくりが悪いのが原因なんですがorz)ため、要望が少なければ、最後のリクエストしか削除できないように使用かなぁと思ってたんです(これは非常に簡単)。
でも、要望として、任意のリクエストを削除したいんだろうなぁということで、コードの大幅見直しから入るしかないんです。
まあ、思いついたままコーディングしてる自分が悪いんですけどね。

yamagata21yamagata21 2007/05/18 15:14 削除フラグみたいなのを持たせれば良さそう?
(実際に配列から消すのではなく、検査を実施しないだけ。)

ikepyonikepyon 2007/05/18 16:19 お〜、それならいけそう。
早速実装してみます。何でこんな単純なこと思いつかなかったんだろうorz

h-ふじたh-ふじた 2007/05/18 18:09 うーん 使えてません。ごめんなさい。 でも、次期バージョンは欲しいかも。自分の方もツールつくってるけど、そっちはフィードバックしてるのは自分自身だけなので、なんかひとりでもぞもぞ、、の世界になってます。まぁ、他のツールに寄生するようなつくりなので、、自分のは、、
ということでよろしくです。

h-ふじたh-ふじた 2007/05/18 18:10 あ、次期というか、今のバージョンです。 よろしくです。

ikepyonikepyon 2007/05/18 18:19 了解です。後ほど送りますね。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070518

2007-05-16 眠い

[]ツールの公開 ツールの公開を含むブックマーク ツールの公開のブックマークコメント

さて、どうやって公開しようか思案中。

一応、一般公開ではなく、メールでほしいといってきた人に対して、限定で公開したいのだけど(不正アクセス禁止法幇助対策w)、メールコードを渡すのが一番手っ取り早いんだが、でかいしなぁ(ソースコードだと2Mぐらい、バイナリコードEclipseも含むので17Mもあるし)。

となるとどこかのサイトに置くというのがいいのだけど、そうすると何らかの認証をかけたいし。

自由に認証がかけられて、ログが取れる場所なんかないかなぁ?

いい場所があれば、すぐにでも公開するのだけど・・・(ドキュメントはまだまだだけどw)

[] プラグイン拡張できるJavaプログラムを作る  プラグインで拡張できるJavaプログラムを作るを含むブックマーク  プラグインで拡張できるJavaプログラムを作るのブックマークコメント

http://codezine.jp/a/article/aid/1271.aspx

うーんインターフェースがいいのか?共通部分は別クラスにするのか?今一よく分からんので、今度調べてみる。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070516

2007-05-15 今日も電車が遅れてたorz

ikepyon2007-05-15

今日は、人が踏切内に入ったらしい。昨日は人身事故で行きも帰りも電車が遅れたし・・・

いい加減、全てのホームに柵を作ればいいのにと思う今日この頃

[]XSS XSSを含むブックマーク XSSのブックマークコメント

XSSが何故起こって、どういう被害があるのか?と言う解説があったほうがいいかなぁと思った。

単純に言えば、リクエストで渡したデータをそのままレスポンスで返してくることが原因なんだけど、レスポンスとして返すデータの場所というか状態というかそういうのにあわせて対策が変わってくるので・・・

どうもそこら辺を整理しなおさないと、わからない人にはわからないかもと思った。

[]訳してねっと 訳してねっとを含むブックマーク 訳してねっとのブックマークコメント

http://www.yakushite.net/cgi-bin/WebObjects/YakushiteNet.woa/wa/main

こんなものがあったんだ。知らなかった。

[]国民のための情報セキュリティサイト 国民のための情報セキュリティサイトを含むブックマーク 国民のための情報セキュリティサイトのブックマークコメント

http://www.soumu.go.jp/joho_tsusin/security/j_enduser/ippan06.htm

イタタタタ。未だにWEPかorz

しかも、MACアドレスによるフィルタリングって・・・

WPAに変更してよ・・・

はっもしかしてDS対応で直してないのか?w

[][]Webアプリセキュリティ検査ツール Webアプリセキュリティ検査ツールを含むブックマーク Webアプリセキュリティ検査ツールのブックマークコメント

とりあえず、一通りのテスト終了。

さて、どうやって公開しようかなぁ。

まずは、欲しい人にはメールで申し込んでもらうか?

まだ、ドキュメント類が全く整ってないけど・・・

2007-05-14 眠すぎる

[]検査ツール 検査ツールを含むブックマーク 検査ツールのブックマークコメント

昨日テストしていたら、結構うまく動いている感じ。でも、直した記憶がないんですが・・・w

どうやら、小人さんデバッグしてくれていたらしいw。

というわけで、ソバには間に合いそう。もうちょっとテストして、コードフィックスしようっと。

さて、ドキュメントコメントを書いていくかなぁ。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070514

2007-05-12 結局こんな時間w

デバッグしてたら、5時だったorz

[]本質の議論なら大歓迎だ 本質の議論なら大歓迎だを含むブックマーク 本質の議論なら大歓迎だのブックマークコメント

http://d.hatena.ne.jp/ockeghem/20070511

http://d.hatena.ne.jp/ikepyon/20070511#p3:これ]に対して、突込みがいただけた。しかも、具体的な対策つき。すばらしい。

さて、今回と前回ので、通常のWebアプリの対策としてはかなりいけていると思う。でも、AJAXの場合はどうなんだろう?

AJAXでのデータのやり取りはXMLJSONというものがあるようなんだけど、まあ、XMLは通常のXSS対策でいいと思うんだが、JSONの場合はどうなるんだろう?このあたり、AJAXをしっかり調査してないのでわかってないんだけど・・・

一応課題として後で調べようと思う。

トラックバック - http://d.hatena.ne.jp/ikepyon/20070512

2007-05-11 ぐはっ

某ツールのセッション管理ロジックに問題発見orz

あの機能削れば解決するんだろうなぁ。昨日酔っ払ってデバッグしてたから、ちょっと今日見るのが怖いのは内緒ですw

そろそろコードフィックスして、ドキュメント作成に移りたいんだけどなぁ。

[]成りすまし犯罪:本当の話 成りすまし犯罪:本当の話を含むブックマーク 成りすまし犯罪:本当の話のブックマークコメント

http://zone-h.jp/content/view/189/9/

怖いなぁ。身に覚えがないのに、いきなりサツのガサ入れがあって逮捕か・・・

こういうことが起こる可能性があるから、個人情報の管理はしっかりして欲しいなぁ。こういったことが起こって冤罪だった場合、個人情報を盗まれたところに、多大な損害賠償って請求できるかなぁ?できないともし自分のみに起こったら、辛いよなぁ。

しかし、情報窃盗って、物がなくなるわけじゃないからわからないんだよねぇ。

[]検索エンジン 検索エンジンを含むブックマーク 検索エンジンのブックマークコメント

って、うまく使えば、マンインザミドル攻撃XSS攻撃の入り口*1に利用できるよなぁ。

検索した結果を表示するリンクXSSの攻撃を仕掛けるなんてこと簡単にできるし^^;

多くの人は、検索結果のリンクを調べてからアクセスするなんてしないだろうし。しかも、使い勝手がよければ、人が流れてくるだろうしね。

と、某MLで流れていた検索エンジンの話をみて思いついたネタw

つか、検索エンジンフィッシングサイト作ってみるとか・・・

有名どころのECサイトフィッシングサイト対策に躍起らしいけど、検索エンジンってあまりないだろうし・・・

そしてECサイトXSS脆弱性があったら、個人情報結構取れそうだよなぁorz

[]Tipsと考え方とXSS対策 Tipsと考え方とXSS対策を含むブックマーク Tipsと考え方とXSS対策のブックマークコメント

http://blog.goo.ne.jp/t_iwano/e/b8850d157baab2e7382e5f4edf15ee0a

とか、

http://d.hatena.ne.jp/ockeghem/20070510/1178813849

とか見て思ったんだけど、本質を見極めてないと、対策に漏れが発生するよなぁと。

つまり、XSS対策はエスケープさえしておけばOKとかいうTips的な対策をとっていると、状況によっては漏れが発生するよねぇ。ま、これはXSS対策だけにとどまらないけど。

徳丸さんの対策は、多くのケースにおいては正しいけど、レアなケースにおいてはこれだけではダメだったりする。当然徳丸さんは理解していると思うけど。

例えば、こんな場合。

  <input type= text onmouseclick="javascript:location='入力データ';">

あるいは、こんな場合。

  <script>alert("hoge" + 入力データ + "hogehoge");</script>

どちらも、単純なエスケープだけでは対応できなかったりが難しかったりする。しかし、これらのケースの場合、XSSが何故起こるか?ということが分かっていれば、対策が取れるし、こういったつくりは危険だということが分かるかと。

Tipsだけでなく、物事の本質を見極め、何が危険で、何が安全なのかということを考える必要があると思う。

言っちまえば、今言われている、エスケープ処理も、入力データ妥当性検証の内容も多くの場合に適用できるTipsに過ぎない。

本当に安全にしようと思ったら、本質を理解し、少しでも危険が少なくなるような設計が必要になると思う。

でないと、今度はエスケープ処理が今のサニタイズという言葉に取って代わるだけじゃないかなぁ?

*1:5/12追記:高木先生に指摘を受けた。確かに調べてみたら用語が間違ってた。いい加減に記憶していた概念を書いちゃだめだよなぁ

2007-05-09 暑すぎ

もう夏か?

[]検査ツール 検査ツールを含むブックマーク 検査ツールのブックマークコメント

昨日のうちに、ResultViewのソートは実装完了。やっぱり簡単だったw

後は、コマンドインジェクションモジュールテストして、公開しようかなぁ?

TDDで作ってないから、基本結合テストなのは、突っ込まないお約束でw

トラックバック - http://d.hatena.ne.jp/ikepyon/20070509

2007-05-08 ねむすぎっ

[]検査ツール 検査ツールを含むブックマーク 検査ツールのブックマークコメント

とりあえず、少々手直しして公開すっかな?

要望として上がって直っていないのは以下のもの。

検査モジュールの外だし

がんばって、いろいろやってみたのだけど、結局やり方がわからなかったorz

Guardian@JUMPERZ.NETも内部に持ってるんですよねぇ。何か参考になるものはないかなぁ?

ごめんなさい>■帝さん

・BufferedStreamを使ってない

色々試行錯誤して結局うまくいかなかった気が・・・でも、まとめて一気に読み込めるようにした気が・・・

もうちょっと努力します。

ごめんなさい>■帝さん

現在どのセッションを開いているのか、一目で分かると、使いやすくなると思います。

これも色々試行錯誤しているんだけど、何故かうまくいかないorz

ごめんなさい>■帝さん

リクエストの削除

・「Test Result View」に、ゆくゆくは「Vulnerable」のみ表示、みたいなフィルタ機能とか、ソート機能とかが欲しいw (←贅沢w)

・「Test Result View」の「Response」で、脆弱として判断した根拠の部分を太字&色づけなどで強調表示して欲しい。(←将来の話w)

ちと、大きな手直しが入るので、未実装だったり^^;

ごめんなさい>某21な人

シグネチャパターンの構造

やり方はわかっているので、修正すればいいだけなんだけど、面倒なんでw

・「Test Result View」の「Response」で、レスポンスボディ部分も、表示して欲しい。(ブラウザ部分で右クリックすれば出せますがw)

これも、ちと大きな手直しが入るので、未実装で・・・代替手段もあるし・・・

ごめんなさい>某21な人

というわけで、これらはちと積み残す感じで。

しかし、アイコン作るのめんど〜w

誰かいいの作ってくれないかなぁw

金床金床 2007/05/08 23:15 ■帝さまがお怒りですか(;´Д`)ガクブル

ikepyonikepyon 2007/05/09 17:06 ■帝さまはお怒りではないと思いますが、結構痛いとこついてきますw

トラックバック - http://d.hatena.ne.jp/ikepyon/20070508

2007-05-07 ぐったり〜

連休明け(だけじゃないけど)で、今一です

[]数に型のない言語におけるSQLインジェクション対策に対する考察(3)(from id:ripjyrさんとこ) 数に型のない言語におけるSQLインジェクション対策に対する考察(3)(from id:ripjyrさんとこ)を含むブックマーク 数に型のない言語におけるSQLインジェクション対策に対する考察(3)(from id:ripjyrさんとこ)のブックマークコメント

http://d.hatena.ne.jp/ockeghem/20070503

結構思っていることと同じだったりして。

入力データ妥当性検証というのは、セキュリティ対策という要請からではなく、適切なデータアプリケーションが常に正しく処理する必要があるので、必要だと思う。なぜなら、データの内容によって、意図しないデータの書き込みや、変な状態での異常終了とかが起こってほしくないというわけで(これ自体、セキュリティインシデントの1つなんだけどね)。

これを防ぐには、入力データが正しいかどうか(数値項目に数値だけが含まれているかとか、選択肢の中のデータだけかとか)を確認するのが最も確実で、簡単な方法だと思う。

でも、あくまで、入力データ妥当性検証でできるのは、型チェックだとか構成データフォーマットチェックだとかそういった形式的な確認であり、意味的な確認(SQL文としてつかったとき、どうなるか?とか、XSSが発生しないか?)にはこの段階では、どの様な場面で使われるか判断つかない(最初の段階で、仮に分かったとしても、今後の拡張でどういう使われ方をするか分からない)から実装すべきではないと思う。意味的な確認、対策を入力データ妥当性検証でやってしまうと1つのデータを複数のアプリケーションへの出力として利用している場合(可能性も含む)があると、非常に複雑になり、プログラムが汚くなる。

実際に意味的な対策(SQLインジェクションが起こらないかとか)は入力データを使う直前になって、初めて可能となるのだと思うのですよ。それまでは、どういったことに入力データが使われるか分からないので、下手にデータの内容を変更しない方がいいのは当たり前(変な変換を最初にしてしまって、別のところで問題が出るのは良くあることだし)でしょ?

なので、そのデータが、数値か文字か、変数に型のある言語かどうかに関らず、入力データフォーマット等の妥当性検証は必ず行うことがプログラムとして自然だし、出力時に意味的な対策(エスケープ処理)を行うこともプログラムとして自然だと思うのですよ。

ホスト系の開発では、結構こういったことが経験上普通の気がするのだけど、どうなんでしょ?

http://d.hatena.ne.jp/ikepyon/20061201#p2

[]検査ツール 検査ツールを含むブックマーク 検査ツールのブックマークコメント

こんな感じf:id:ikepyon:20070508004019j:image:right

なんとなく、様になったかなぁ?

ockeghemockeghem 2007/05/07 19:58 そうですね。ホスト系というか、基幹業務系の開発では妥当性検証は当たり前だと思います。エスケープ処理は、ホスト系ではあまり出てこないような気がしますね。テキストインターフェースを使うわけではないので。SQLをどう記述するかにもよるでしょうけど。

ikepyonikepyon 2007/05/08 00:43 確かに、エスケープ処理というのはホスト系ではあまり出てこないかも知れませんね。ホスト系の場合、型ががっちり決まってたりするので・・・

トラックバック - http://d.hatena.ne.jp/ikepyon/20070507

1900 | 01 | 06 |
2003 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 02 | 03 | 04 |
2011 | 01 | 02 |