« Wi-Fi携帯電話、各社がリリース前倒しを計画 | Main | MovableTypeの致命的バグ »

›8 06, 2004

Trackback の脆弱性用パッチ

[ Movable Type ]

 結構革新的な技術であるTrackBack。 ブログの人と人、話題と話題を結ぶであろう魅力たっぷりの要素で誰でも簡単にできるのだが、その敷居の低さが問題に。

多くの Trackback サーバの実装に関して、容易に Trackback SPAM のターゲットにできる脆弱性が存在しますので、内容と回避法についてアナウンスします。
 
Movable Type 3.01DE に対するパッチは以下のようになる。
 
--- lib/MT/App/Trackback.pm~ 2004-07-08 11:27:47.000000000 +0900
+++ lib/MT/App/Trackback.pm 2004-07-16 19:30:24.000000000 +0900
@@ -112,6 +112,11 @@
my $app = shift;
my $q = $app->{query};
 
+ if ($app->get_header('Referer') or
+ ($app->get_header('User-Agent') || '') =~ m!^Mozilla/!) {
+ return $app->_response(Error => "Trackback ping with invalid headers: denied.");
+ }
+
my($tb_id, $pass) = $app->_get_params;
return $app->_response(Error =>
$app->translate("Need a TrackBack ID (tb_id)."))

  これで悪意のない第3者がブラウザ上でjavascriptを実行して行うスパムを防げるわけですか。 悪意のあるブログからのスパム防止や、徹底的な防御策を考えると同一IPからの阻止や一定時間以内のTrackBackをエラーさせてしまうしかないかな?

 ここは2.661でしたが、Trackback.pm自体は3系統と殆ど同じようなのでそのままアナウンスに従って書き換えました(左端に+のあるところを追加です) 。多分大丈夫なはず。 駄目でした。 トラックバックを完全に受けられなくなってしまった(自サイトとはてなからテスト)。

 んで、イロイロ調べてもよく分からないのでMT3をDLしてイロイロ比較。 するとget_headerというサブルーチンが2.661にはないではありませんか。 そこでMT3の\lib\MT\app.pmにあるget_headerの部分をtrackback.pmに移植。 その上で上記にあるtrackback.pmの書き換えを行う。
 これで脆弱性修復、トラックバックもできるようになりメデタシメデタシ。移植部分は以下。場所は適当で良いので「sub init {」の上に書き加えて「#以下MT3からの移植」、とでもコメントしておくと良いかな。

sub get_header {
my $app = shift;
my($key) = @_;
if ($ENV{MOD_PERL}) {
return $app->{apache}->header_in($key);
} else {
($key = uc($key)) =~ tr/-/_/;
return $ENV{'HTTP_' . $key};
}
}

8/11 追記
この対策には一部のユーザからの Trackback Ping を拒否してしまう副作用があるそうです。また、Movable Type 2.661 以降などでは同一の IP アドレスからの短期間内の連続 Ping を拒否するオプションが用意されているのでそちらを利用する手もあるそうな


Trackback の脆弱性についての勧告 (blog.bulknews.net)


Posted by kroko 1 Comments: / 3 TrackBack
Comments

ls-land com babeblvd passwords 靚繩鴃� 眊裙� lang ru sis 650 651 740 661fx 741 760 series drivers lang ru 尤韋鰰齡 floralytes uk tarjetas y postales de aniversarios gratis sexy gif images simpsons dvd cover Boryana Dobreva

Posted by: Sandra-ck at 2007年08月16日 23:38
Post a comment












Remember personal info?