2007年5月29日火曜日

合法な攻勢防壁



日本のネットワーク内では2000年ごろにできた不正アクセス禁止法によって、攻勢防壁は違法なのよね。


(それまでは電子威力妨害って法律だから、相手が損害を申告しなければOKだったらしいけど。。)


でもボットに限って言えば、SSHブルートフォースアタックに関して、応答を意図的に遅延させることでボットの拡散速度を抑えられないかなぁ?


これなら合法だし。ボットホストを落とすまではいかないけれども、低速化させることができるはず?


確かにip denyっていう方法もあるんだろうけど、、どうせならいかにも認証中ってしたほうが時間がかせげるだろうし。


もちろん、そのあいだ本物のTCPを張りっぱなしだとこちらのホストのバッファがつらいので、IP層での工夫がいるけど。





そこのところどうなんだろう。ボットのソースよめばわかるかなぁ。。。めどいなぁ。











追記:


意外と簡単に実装できるかも、


ipfwでport 22だけdivertしといて、そこでIP層フック(以後IPフックデーモン)。


SSDH側でこいつまただよ!って思ったら、応答途中でIPフックデーモンにこいつまたせといていって、IPを教えてからshutdown;


フックデーモンは通知があったIPに対してはFIN,RSTを送らないようにマスクする。





もちろんデーモンじゃなくてipfwのルールを追加してもいいけど


port22のためだけにあまりにも重いルールになるのはいやげなので。





PHP/Perl CGIにて、ファイル名に記号を使わせなければ安全っていうのは嘘。



windows限定の話になってしまって恐縮なのだが。。。。


例えば以下のコードはDoS脆弱性を抱えている。


試しにfile=COM1とするとロックがかかった状態でプロセスが刺さってしまう。


(COMポートがないノートPC等では再現できない)


lock中にこの状態に陥るので全てのアクセスが凍る事になる。


希にファイル名=セッションIDにしてセッション文字列を[a-zA-Z0-9]+としてチェックをかけている実装をみかけるが、windows上でCGI/PHPを動かす事を考えると危険であると言える。


せめて^[a-zA-Z0-9]{32}$とかにしないとやられちゃうです。



$fp=fopen("lockfile","w");
if(flock($fp,LOCK_EX)){
print("lcokGet");
$file=$_GET["file"];
if(preg_match("[^a-zA-Z0-9]",$file)){
print("Attacked so Abort");exit();
}
$ffp=fopen("./data/".$file,"w+");
$contents = fread($ffp,10);
fwrite($ffp,"hoge");
fclose($ffp);

}
fclose($fp);





追記:pukiwikiは外部リクエストから作られるファイル名は[A-F0-9]+に拡張子を足した物にかぎってるみたいですね。これに引っかかる変態OSはたしかにまずなさそうだ。





2007年5月28日月曜日

インテリマウスのチャタリング修理



intelliMouse Explorer 4.0Aに関して、どうもチャタリングがでる。


開けてみたら、回路があやしげ。


左上のC11とR9でCRフィルタにしてるんだろうけど、順番が逆。


RをとおしたあとにCがこないとダメでしょ。


ってことで右下のIC部分(多分マイコン)にコンデンサ足して対策


とりあえず、症状はおさまったっぽい。 





http://shimadzu.dip.jp/~akira/DSCF1643.JPG





:追記


まじめに回路おってないから別の理由かもよ~。嘘かもよ~。





2007年5月27日日曜日

pg_dumpのメモ





pg_dump -Fc 元DB
createdb -E EUC_JP 実験環境DB
pg_restore -O -S pgsql -d 実験環境DB -C -i -Fc < dump.sql





2007年5月26日土曜日

セキュリティホール探し 本日までの成果




5本中4本IPAに届出。



ちなみに、明確に個人情報を抜き出すルートはないけど、不安な実装だよね~ってのは届出の範囲外っす。


いやぁ、なかなかの戦果orz


無料配布CGIの状況見てると、↓のような商売が成り立つのも納得かも。


http://www.dino.co.jp/business/solution/inspection.php





2007年5月25日金曜日

そんなこといちいちC言語で書くなよ~



同僚のデータ見ていて、コレの時間差分データ見せて、っていったらCのソースを修正しはじめた。。。


まぁ、書いている途中だからいいんだろうけど。。。



awk 'BEGIN{a=0}{print $1-a;a=$1}' <data


だけでよかったのに...そんなことってあるよねぇ。。。


だからそこ、スイスアーミーナイフ一つで料理しない!





セキュリティホール探しで脳トレ



ここ3日ぐらい趣味でセキュリティホールを探して、IPAに報告してるんだけど。。。。


なんだか、仕事(信号処理)のほうでもアイディアがぽんぽん湧くようになってきた。


実はセキュリティホール探しって脳に良い?


まぁ、普通にパズルだしね。


気になる人は「無料配布 CGI」「無料配布 PHP」で検索して片っ端からセキュリティホールを探してみよう。





あまり大きいのは読むのが大変だけど。(へたれ)





無料配布CGI/PHP作者同士のレビュー制度を作ってはどうだろうか?



おそらく一人で開発して無料配布として公開しているCGI/PHP開発者は他の人と仕事を一緒にしない人がおおいんだろうねぇ。普通ならやらない。っていうやり方をやってる人が多い気がする。まぁ、ソースを読んだのは3.5人分だけど(0.5人はコードが長いので数行よんでやめた)


(私が普通ならやらないっていうのは「セキュリティ」を確保するための定石的な書き方って意味ね)


もし上の仮説が正しいならば、各作者さんがちゃんとした実装を出来るようになるのは結構遠い未来になってしまう気がする。なにせ、新参者が出てくるたびに指導が必要だからね。その間に危ないコードが拡散してしまう。それは避けなければいけない。そこでこんなのはどうだろう。




  1. CGI/PHPを配布するときに他のCGI/PHP作者にレビューを受けてその署名をしてもらう。

  2. 利用者は署名が多ければ安心して使う

  3. セキュリティホールを見つかるとそのレビュー網を通じて各開発者に啓蒙が行われる。


これぞ、オープンソースってかんじやないですか?


相互リンクを張る感覚で相互レビュー。いいとおもうんだけどなぁ。





(ちなみに、調べたのは4人の作者5本のプログラム、うち3本届け出済、1件休憩中、1件大きな問題はなし。プログラムのジャンルは社会的影響を考え個人情報を取り扱う事がメインのプログラムに限定)





2007年5月24日木曜日

javascript勉強しなきゃなぁ。。。



ちと大手の無料CGIでセキュホをみつけたんんだけど。。。。


どうせならインパクトのあるexploitでどれだけ危険か作者に示したいわけだが。。。。


javascript。。。なんでmozillaとIEでこーちがうのかのぉ。。。(涙





2007年5月22日火曜日

ウェーブレットの勉強



えっと、離散フーリエ変換とか勉強したことあるひとなら、連続ウェーブレット変換よりも離散ウェーブレット変換のほうが簡単に理解できる。という結論で。。。wikipediaをDWTで検索して、はぁフィルタバンクでわけてるのか~っとおもうと簡単。





ウェーブレット変換ではなくなるけど、低周波がわのほうをメディアンとか変な関数で求めると面白いかも。


もちろんその場合は高周波のぶぶんがHaarのようにX(n)-X(n-1)といった1次元じゃなくて、(X(n)-med(n),X(n-1)-med(n)/2)とかいった二次元になってしまうけど。逆変換は出来るので。





2007年5月21日月曜日

KBUG第2会勉強会資料おきました(UMAL)



UMAL説明分の資料をおきました。


http://shimadzu.dip.jp/~akira/umal_kbug2.pdf


KBUGでどんな発表してたか気になる暇人はどうぞ。





コレは釣りなのか?古典的なセキュホを配布するサイト



とりあえずぐぐったかぎり、利用されてなさげなので。。。。


http://www.bc-ad.net/service/cgiservice/shoppingcart_basic.html


とか。。実はディレクトリトラバーサルなセキュホを抱えている。


プログラマが見れば一目瞭然なので隠してもしょうがなさげ。


もっと非道いサイトもあって、そいつはPHPをつかってた無料配布サイトなんだけど


SQL-injectionもXSSもある。しかもぐぐるとPowered by ~~~ってかいてあるから


セキュホがあるサイト一覧がぐぐれてしまう。。。orz


いくらオープンソースっていっても開発者が一人だと検証効果としては無力なのかなぁ?


pukiwikiとか何人かいるところはやっぱりしっかりしてる。。。








で、ふと思ったんだんだけど。。。。


わざとセキュホをうめこんで、さらに検索できるような単語を埋め込むことで


あとで悪用しようとか、有償アップグレードを求める。。。。凄くない。この手法いけてるかも。(ぉぃ





2007年5月18日金曜日

うほ、以外なところでラジオでてるのね



西フェスで去年より著しく音がよくなっているユニットがいて、


今年は演奏してもらおうって思ったけれども,会場・スケジュールの都合で


見送らざるをえなかったバンドが・・・・


なんかαステーションでてるし。ってか、、レギュラー?


まぁ深夜だけどねぇ。。。





へぇ、がんばってるなぁ。。。今後もがんばってほしいなぁ、来年こそはスケジュールにねじこもう。





自衛隊とエンジニアの共通点



http://www.asahi.com/komimi/TKY200705150111.html



「隊員の人はよく言えば、まじめ。言い方を変えると、シャイで人慣れしていない人も多いので、出身地と天気から話題が先に進まないのが困る」と手厳しい。

あうあう、ごめんなさい。どうせダメ人間です。





2007年5月17日木曜日

ドメイン制限がかかっているプロクシの越え方



Delegateオンリーかもしれないけれども、ドメインごとにアクセス制限がかかってても回避する方法があることに気がついた。


やり方は単純。




  1. firefoxにTamperDataをいれる。http://tamperdata.mozdev.org/

  2. nslookup CGIのサイトなどで繋ぎたいサイトのIPアドレスをしらべる

  3. IP直指定で繋ぐ、そのときドメイン名がないと違うwebサイトが表示される場合があるのでTamperDataをつかってHost:ヘッダの中身をIPアドレスからホスト名に書き換える。


delegateはhttp://~~~/のところのドメイン名を検査はするものの、


Hostに違うドメイン名が書いてあっても気にしないようです。


なので、それを利用してドメイン指定を回避できる場合があります。





ただし、httpsが必要なようなサイトに繋ぐときは気をつけて下さい。


ブラウザが証明書の検証にこけるようになります。





2007年5月16日水曜日

まちがったPHP講座 flockについて



http://www.phppro.jp/school/phpschool/vol27/2


いやぁ、勘違いしているようだ。。。


LOCK_SHすればwrite関数が実行できなくなるのと勘違いしてるのかな?


まぁ、それをLOCK_EXになおしてもflushしわすれてるので、綺麗にロックはかからない。


どーせ君らにロックの正しい理解は無理だ。


ロックはロックファイルを別につくってそれをLOCK_EXでロックしよう。


と最近おもいだした。。。。


だったらひたすらコピペで十分ミスしないから。


同時アクセスが多いときのスループットは最悪に悪いけどま、OKしょや


なので、スクリプトの先頭に以下をたして。



/*基本的にはデータを弄るスクリプトの最初でロック*/
$lfp=fopen("/some/where/lockfile","w");//ロックファイルは絶対パスで指定すること
if($lfp){エラー処理(スクリプトをちゃんと中断すること)}
if(! flock($lfp,LOCK_EX)){エラー処理(スクリプトをちゃんと中断すること)}


スクリプトの最後にこれを足す。



/*データを弄るPHPスクリプトの最後にアンロック*/
fclose($lfp);//ここでロック終了


適当にクラスをつくってコンストラクタでロックして、デストラクタでcloseして


そのインスタンスをPHPのauto prepend機能をつかって自動的によぶといいかも。


そうすればPHPが事実上シングルタスクでしか走らなくなので、


マルチタスクなプログラムを書けない人でも多少安心。














って皮肉ですよ~(たぶん)。





UMALの解説for KBUGを書いた。



http://shimadzu.dip.jp/~akira/umal_kbug.pdf


こんな感じ。


急いで書いたので、タイプミスが有りそうで怖いですわ(笑


推敲しなきゃ。





2007年5月15日火曜日

意外と私、レアキャラ?



西院ミュージックフェスティバルのスタッフやって所謂普通の音楽に触れる機会がおおいのに。


今、自室でかかっている音楽は I've だったり。


振り向けば音楽CDよりも工学書が多い、典型的なオタクなへや。


そのギャップに気がついて、自分で笑ってしまった。





NHKのみんなの歌のような



http://www.nicovideo.jp/watch/sm173922


http://www.nicovideo.jp/watch/sm47660


昔smile-fm(FM長崎)の番組で奥井亜紀さんが「NHKの歌のおねぇさんみたいやね」って


言われるって話を思い出した。


そのころ、無茶苦茶好きだったなぁ。


今、涙がでるなぁ。この曲。


確かに、アニメに使われたってことで、単なる萌え系と思われてるかもしれない。


でも、歌詞には共感出来る事があると思う。


ということで。注文決定!ニコニコ動画がなければ、このCDを買うこと無かったかと思うと。


私の役に立ってるなぁって思う。


関係ないけど、、、


あのころ親父の使わなくなったTK-85であそんでたな~なつかしす。


アドレス7C00(7800?)だっけ。。ぱちぱちうってた記憶が。。。


一日が過ぎていく恐怖。でもその上に居る私。あのころの自分があったから。


今立派なオタッキーエンジニアとして会社で暮らせると思う。


明日をがんばるっす。





2007年5月12日土曜日

flockの使い方を勘違いしちゃいないかい?



こんなコードじゃ、正しくロック出来ない。



FILE *fp=fopen("somefile","r+");
flock(fileno(fp),LOCK_EX);
//readやらwriteやら
flock(fileno(fp),LOCK_UN);
fclose(fp);


バッファが存在するために、fclose時に書き込まれるデータが有り、その分だけロックで保護されない書き込みが発生する。


なのでflock(fileno(fp),LOCK_UN)のまえにfflushする必要がある。


ってのが、即答出来ない同僚がいたり。。平和な会社だぁ。


(ちなみに、flockfileはflockに名前は似てるけど、機能が違うので間違って使わない要にしないと罠なのねんん。。。)














だいたいの言語で同じような事が起きるので、注意が必要なのです。


ちなみにPHPも同じはずで、


http://www.atmarkit.co.jp/flinux/rensai/mysql5_03/mysql5_03a.html


に書いてある以下の説明は勘違いな説明になってるっす。


OSのバッファを書き出すのはsyncとかで。。。関係ないっす。


PHPのマニュアルにも「ストリームのバッファ」としかかいてないっす。


なので、たんに障害対策ならいらないでよ。って思ってバッファサイズゼロにするのをやめると、正しくロックされなくなるっす。



「set_file_buffer("ファイルポインタ", 0)」で書き込みバッファを使用しないようにします。書き込みバッファはOSがメモリ上に用意する一時的な記憶領域です。ハードディスクなど物理的なファイルシステムに書き出す前に利用されます。


 バッファを利用することで、書き込みパフォーマンスを上げることができる一方、極めて短時間ですが、バッファ上のデータとファイルシステム上のデータに差異が発生します。その差異が発生している瞬間に障害が起きた場合、データが消失する可能性があります。そのため、バッファを利用せずに直接ファイルシステムに書き込むようにします。






openVPNとかつかって、AIR EDGE越しでwindowsファイル共有をやるときの注意



デフォルトの設定だと、ファイル一覧の表示がめちゃめちゃ遅い。


対処法



クライアント側の


フォルダとデスクトップの項目の説明をポップアップで表示するをOFFに



これだけで、フォルダ経由での表示が偉い早くなります。


気休め程度に



エクス法ローラに簡易フォルダを表示する->OFF


フォルダのヒントにファイルサイズ情報を表示する->OFF



もやってるけど効果は謎。





原因はエクスプローラが高レイテンシ環境用にはつくってないってことで、




  • フォルダでファイル一覧を見るときに片っ端からファイル属性などを調査するパケットを投げる。

  • 調査のためのリクエストは一つ投げてから答えが返ってくるまで次ぎのリクエストを投げない。

  • その調査が終わるまで画面描画を行わない。


ってなことで過剰に遅く感じます。





同様の理由でファイルをコピーするときに「コピーの準備をしています」が高レイテンシ環境では非常に長くなります。


なんか専用のエクスプローラもどきを利用すれば早くなるのかも。





2007年5月11日金曜日

やりそうな人を知っていると心が痛い



http://www.asahi.com/national/update/0510/TKY200705100314.html


東京・私立・教諭・猥褻・・・


キュピーンっと大学院時代に同じ研究室で、


引きこもりで、


「教師の良いところは、服装チェックで女子高生の脚に触れること」と堂々と公言してみんなに引かれて、


そんな空気もよめなくて、


教授人事異動のどさくさにまぎれてお情け修了したやつを思い出した。。。


でも彼はたしか八王子って言ってたはず。。。やつじゃないよなぁ。。。





2007年5月8日火曜日

段ボールの空き箱が気になる。



実家から荷物を送ってもらった。。。ふと段ボールをみると 東京銀座 和光。。。。


中身のほうがほしいぞ。てか、、どういう経由でこの段ボールきたんだ?





2007年5月7日月曜日

触覚センサー:IVRCで使わない?



以外といいかんじの触覚センサができたので、何かのネタに使いたいのだが、、、


ネタがうまくおもいつかない。


この触覚センサは息をふきかけたり、するのも感じるし。なでるのも感じる。


しかも3軸で方向を取れる。


何かに使えるとはおもうんだけどねぇ。。。


とりあえず、写真では棒のうえにピンポン球をつけてそこを感知部にしているけど。


猫の髭みたいなのをつけて、リアルに触覚デバイスにすることもできるはずっす。


ちょっと剛毛ちっくでよければ、体毛で感じているように見せかけることもできるかな?


http://shimadzu.dip.jp/~akira/DSCF1622.JPG





記憶されているテンポ・実際のテンポ。



昔好きだった曲を聴くと大概が、「あれ?こんなにテンポ遅かったっけ?」と思う。


コレはわたし固有の問題なのだろうか?


そうじゃないとすると、面白い現象な気がするのだが。





漢字の出題のしかた



沿線。。。書けなくてもしょうがないよね~。沿岸なら書けるだろうに。。。と思う長崎人。


http://www.asahi.com/national/update/0507/TKY200705070281.html?ref=rss


http://megalodon.jp/?url=http://www.asahi.com/national/update/0507/TKY200705070281.html%3fref%3drss&date=20070507234530