スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Perl メモリ開放うんぬん

2009年11月25日 21:49

今日、メモリ開放周りで詰まったので覚書。

100M程度のデータを変数に入れてゴリゴリやる際に
スコープから外れたのに開放されねーよ、という事態に陥ったので。

メモリ使用量はpsなりタスクマネージャなりで確認した。


create_scar();
sleep;

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
}


例えば、↑だとメモリ食いっぱなし


sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
undef $scar;
}


↑undefすれば開放。あたりまえか。


create_scar();
create_scar();
sleep;

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
}


↑これだとメモリは再利用される。

create_scar();
create_scar2();
sleep;

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
}
sub create_scar2
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
}


↑これは倍メモリ食う


my $scar = create_scar();
sleep;

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
return $scar
}


↑これも倍


そんな感じで嵌ってました。

たぶん、再利用性の方を優先させた結果なんだろう。
まあ普通そんなでっかい領域確保しないもんね。

明示的に undef で FA

ただ、

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
$scar = substr($scar,0,10);
return $scar;
}


こういう処理のときはメンドイ

sub create_scar
{
my $scar;
$scar .= " " for ( 1.. 1000000 );
my $scar_tmp = substr($scar,0,10);
undef $scar;
return $scar_tmp;
}


こうしないと、$scarがデッカイまま。


MITM SSL renegotiation

2009年11月18日 22:38

TLS/SSLに設計上の脆弱性、広範囲にわたって深刻な影響の可能性
http://journal.mycom.co.jp/news/2009/11/09/006/index.html

みたいなヤツ。

範囲が限定的だとか、
opensslのupdateで無効になったとか、
デフォじゃ無効じゃないとか、
クライアント証明書関係だとか何だとか
情報が錯綜しててわけわからん。

なので、とりあえずopensslがどんな対応をしてるか確認してみた。
ただ、そこまでキチンと追えてないので、あってるかどうか・・・


まず、diffをとってみる。全部書くと溢れるので一部抜粋

>diff -r openssl-0.9.8k openssl-0.9.8l


diff -r openssl-0.9.8k\ssl\ssl3.h openssl-0.9.8l\ssl\ssl3.h
329,332c329,333
< #define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
< #define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
< #define SSL3_FLAGS_POP_BUFFER 0x0004
< #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
---
> #define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
> #define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
> #define SSL3_FLAGS_POP_BUFFER 0x0004
> #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
> #define SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x0010



新たに
SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
を定義し



diff -r openssl-0.9.8k\ssl\s3_lib.c openssl-0.9.8l\ssl\s3_lib.c
2594a2595,2597
> if (!(s->s3->flags & SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION))
> return(0);
>




こんな感じでrenegotiationをはじくように各所に記述してるっぽい。
これで無効にしてるって感じ。
だけど、削除したわけじゃないので機能させるこも可能。
(上のSSL3_FLAGS_*みたいのは全部そんな感じ)

デフォでは、機能しないように定義されているようです。
(SSL_OP_*系のフラグがそれっぽい)


機能させるには
>openssl s_server -bugs=1

みたいなオプションで起動すると、イケル。
ってか、
> #define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
> #define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
> #define SSL3_FLAGS_POP_BUFFER 0x0004
> #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
> #define SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x0010

この辺が全部有効になるような気もするが。


で、apacheはどうなってんのか気になったので確認してみた。

./modules/ssl/ssl_engine_init.c

たぶん、ここで初期設定を定義してると思うんだけど

ssl_init_ctx_protocolで

SSL_CTX_set_options(ctx, SSL_OP_ALL);

と定義してあるんだよね。
SSL_OP_ALLで-bugsと同じフラグもたってるような気がするんだけど・・・

opensslのドキュメント読んでも
SSL_CTX_set_options() adds the options set via bitmask in B to B.
Options already set before are not cleared!


すでに設定したオプションはそのまま残るらしいし、
その後、クリアした形跡もないので、やはりオンになってる気配が。


うーん、opensslをupdateしても、apahceでは機能有効になってるのかな・・・
PoCでアタックしたほうが早い気がしてきた。



つーか、RENEGOTIATIONが、いつどんなタイミングで使われるのか
ハッキリと掴めなかったので結局対処したほうがいいかどうか
わからんかったw

まー、みんなそれほど慌ててないので、平気なんだろうが・・・


追記:
詳細資料がこんなとこにあったわ・・・
http://extendedsubset.com/?p=8


脆弱性が最多のブラウザはFirefox――Cenzic報告書

2009年11月11日 00:06

脆弱性が最多のブラウザはFirefox――Cenzic報告書
http://www.itmedia.co.jp/enterprise/articles/0911/10/news019.html

何を今更。的な報告があがっていたので見てみた。
yahooでも出てたしね。なんか妙に注目を浴びていた

原文は
http://www.cenzic.com/pr_200911091/
http://www.cenzic.com/downloads/Cenzic_AppSecTrends_Q1-Q2-2009.pdf

この辺かな。


この辺の対応をしていた身としては、
今更報告書に纏めるまでもなく、火を見るより明らかなわけだが、
纏めたからには、何かいいレポートになっているかと内容をチェック

・・・情報ソースは?w

さらっと斜め読みしただけだから、見落としたのかもしれんが
CVEから引用・集計でもしたんかね。

なんか、ニュース通りパーセンテージしか書いてない。

うーん。まあ間違ってるわけじゃないからいいけど
なんかガッカリだ。


ところで、この記事をぱっと見たときに違和感を感じたわけだが
題名の
「脆弱性が最多のブラウザはFirefox」
これ。

なんかfirefoxって脆弱じゃん。って思われそうな・・・

いや、別にfirefoxが強固だと思ってるわけじゃないけど
safariやIEより劣ってる。みたいに思われるのはアレなんだよね。
operaもそうだけど。

この結果をもって、じゃーoperaだIEだって言われるのは
非常に困る。

たしかに、この半期はfirefoxの脆弱性は多かった。
俺の業務を増やしやがってと、怒りを覚えるくらい。

でも、俺の知る限りでは発見された脆弱性にはわりと迅速に対応していた。

脆弱性の多さは、イコール脆弱さじゃないと思うんだよね。
脆弱性が1個でも対応まで時間がかかればそれだけ危険。
そもそも、誰も脆弱性報告しないからアタックし放題って可能性もある。


もちろん脆弱性が無いに越したことはないが、
作成者のポリシーとか、その辺りを見極めるのも大事。

この辺は、情報をずっと追っかけてれば何となく解ってくる。
(と俺は思ってるw)
なので、俺的にはアレとかアレとかはポリシー的にアレなのでNGなんですw


まー要するに、


ブラウザなんてどれ使ったって危険なものは危険なんだよ!


ってことでFAw

単一IPアドレス上で複数のSSLサイトを運用する

2009年10月31日 01:39

Apacheの設定を変更し、単一IPアドレス上で複数のSSLサイトを運用する

http://builder.japan.zdnet.com/news/story/0,3800079086,20402262,00.htm

いまさらここで書くまでもないのだが、
注目すべき記事だと思ったので。

これで、ひとつのIPアドレスで複数のSSLサイトを管理できるようになる・・・
なんで今まで対応していないのか不思議なくらいだ。

残念なのは対応ブラウザが限られていること。

>Firefox 2.0以降やOpera 8.0以降、Internet Explorer 7.0以降(残念なことに、Vistaで動作するもののみである)、Google Chrome、Safari 3.2.1(残念なことに、Mac OS X 10.5.6以降で動作するもののみである)


個人的には、HTTPSでなければいけないサイト利用なら
この程度の条件クリアして欲しいと思う。
まー商業的にはきびしいけどさ・・・


あー、みんなこの環境以上だったらいろいろ楽なんだけどなぁ




Mozilla Plugin Check

2009年10月20日 22:30

http://secunia.com/blog/64/
http://www.mozilla.com/en-US/plugincheck/

mozillaがFirefoxのプラグインの更新状況を確認してくれる
サービスを始めた模様

アドオンはいままでも更新お知らせしてくれた
っていうか簡単にアップデートもしてくれたけど
これで、プラグインもチェックしてくれる

とはいえ、チェックしてくれるだけで
更新は手動みたいだけど

updateを押すと該当のサイトに飛ぶだけ。

それでも、いままで何もなかったわけだから
十分な進歩だろう。

これで、アップデートもしてくれるようになれば
なんと素敵なことか・・・



最近の記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。