ホーム > フォーラム > 開発 > モジュール開発 > モジュールの脆弱性

モジュールの脆弱性
投稿者: Marijuana | 投稿日時: 2005/11/6 3:37 | 閲覧: 59600回
Marijuana
内容が内容ですので、MLに残らないようにさせて頂きました。
問題があるようでしたら、削除してください。

以下のモジュールに脆弱性がありますので、使用する方は十分気をつけて使用して下さい。
また、基本的に脆弱性の動作を確認してはいますが、全ての環境で起こるとは保証出来ません。

SQL Injection可能なモジュール
eguide 1.6.8
bookmark 1.00
alumni 2.0
jobs 1.9
myAds 2.04
popnupblog 2.21
XoopsHP 1.05
※テーブルのprefixを変更することで、防ぐことが出来ます(完全ではありません)
※他にもSQL Injection出来るモジュールがありますが、俺が攻撃方法解りませんので載せません。

XSSが仕掛けられるモジュール
amaxoop2 0.991
iDiary 1.08
※管理者でアクセスするときはJavaScriptをOffにすることで防ぐことが出来ます(完全ではありません)

ローカルファイル削除(cgi版では致命的)
xnshop 0.86
※cgi版では使わないこと以外、対処方法がありません。


一つでも脆弱性のあったモジュールは、他の脆弱性を調べてません。
また、全てのモジュールを調べた訳では無いので、ここに無いから安全ではありません。

作者に連絡をすべきなのでしょうが、あまりに多く(確率)のモジュールで脆弱性があり、
個別に連絡なんて面倒なので、ここでまとめて報告です。
こんな程度の脆弱性で0dayもないと思いますし・・・

プログラムが本職でない俺に解るぐらいの脆弱性ですので、
モジュール作者の方は、セキュリティ対策など全く気にも留めてないのでしょうか?

XOOPSのコアがどんなにセキュアになろうとも、モジュールがこんなんでは、無意味ですね。
もう、いっそうのこと、ダウンロード無くしません?

時間があれば、もっと調べますが全てを一人で調べるのは時間が掛かりますので、
皆さんも気付いたのがあれば、このスレッドに繋げませんか?

これはXOOPSに限ったことではありませんが使用するユーザの方も、ある程度知識がないと大変なことになる可能性があることを理解してください。

PHPの脆弱性が話題に上ってましたが、それ以前にモジュールがこんな状態ですよ?

コメント(49)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: モジュールの脆弱性 
投稿者: tadashi | 投稿日時: 2005/11/6 8:00
tadashi
これをきっかけに、全体的にセキュリティ対策のレベルがあがるといいですね。
Re: モジュールの脆弱性 
投稿者: movie | 投稿日時: 2005/11/6 12:01
movie
xnshopモジュールやextcalモジュールsmartsection0.9*の脆弱性については聞いてましたが、eguideについてはosc2005で利用されていることなどを見て、大丈夫じゃないかと勝手に思っていました。
今まで脆弱性があるかどうかが分からない場合、そのモジュールを利用しているサイトを見て判断していました。

jobsモジュールはmyAdsからの派生だと記憶していますが、もしかしたらmyAdsの派生モジュールは多くが同様なのでしょうか?

またnewbb2やNews1.4は大丈夫なのでしょうか?
Re: モジュールの脆弱性 
投稿者: taquino | 投稿日時: 2005/11/6 14:38
taquino
Amaxoop2作者のtaquinoです。御指摘ありがとうございます。

当方にてモジュールの見直しを行い、対策版へのバージョンアップを行いました。

#セキュリティ対策を気にしていないわけではありませんが、うかつであったと反省しています。
Re: モジュールの脆弱性 
投稿者: chatnoir | 投稿日時: 2005/11/6 14:51
chatnoir
引用:

taquinoさんは書きました:
当方にてモジュールの見直しを行い、対策版へのバージョンアップを行いました。


セキュリティアップデートに関してはモジュール作者さん(ユーザさん)が
ニュースに草稿を投げられるようになっています。

たくさんの方が使われているモジュールかと思いますので重要な情報は目にとまりやすいよう
是非有効活用してくださいね。
Re: モジュールの脆弱性 
投稿者: taquino | 投稿日時: 2005/11/6 16:58
taquino
了解しました。投稿させて頂きます。

[追記]
上記コメントはchatnoirさんの書き込みへの返信です。
引用もせず、わかりにくくなってしまいましたので、念のため。
Re: モジュールの脆弱性 
投稿者: Marijuana | 投稿日時: 2005/11/6 21:07
Marijuana
引用:
eguideについてはosc2005で利用されていることなどを見て、大丈夫じゃないかと勝手に思っていました。

たしかoscのサイトでは、大幅に手を入れて使っていたはずです。
サイトで使っていても、独自にハックしている場合もあるので、使われているから大丈夫というのは思い込みです。

引用:
jobsモジュールはmyAdsからの派生だと記憶していますが、もしかしたらmyAdsの派生モジュールは多くが同様なのでしょうか?

全てを見たわけではないので、なんとも言えません。

引用:
またnewbb2やNews1.4は大丈夫なのでしょうか?

脆弱性のあることを証明するのは簡単ですが、安全を証明するのは無理だと思います。
Re: モジュールの脆弱性 
投稿者: bankroll | 投稿日時: 2005/11/6 21:37
bankroll
引用:

Marijuanaさんは書きました:
引用:
eguideについてはosc2005で利用されていることなどを見て、大丈夫じゃないかと勝手に思っていました。

たしかoscのサイトでは、大幅に手を入れて使っていたはずです。

でも、対策してないみたいorz
Re: モジュールの脆弱性 
投稿者: Tom_G3X | 投稿日時: 2005/11/6 21:48
Tom_G3X
myAdsの最新版は、myAds 2.05 です。

myAds 2.04は、まだダウンロード出来るようになっていたようで、
ウッカリ消すのを忘れていました。すみませんでした。
先ほど、myAds 2.04 のリンクを消しました。

myAds 2.05は、2.04よりは大丈夫かと思います。
とは、言いつつも、大変、見通しの悪いコードですので、書き直したいと思ってはいるのですが・・・・(^^ゞ

とりあえずは、myAds 2.05 myAds 2.07Test版 あたりをお使いください。

徐々に、コードを書き直して、脆弱性の少ないコードに書き直していくつもりではいます。
Re: モジュールの脆弱性 
投稿者: Marijuana | 投稿日時: 2005/11/7 0:21
Marijuana
引用:
myAdsの最新版は、myAds 2.05 です。

ダウンロードに登録されていたのが2.04だったので、そのまま見てしまいました^^;
2.05では、先に書いた部分は既に対策されていましたね。
Re: モジュールの脆弱性 
投稿者: Marijuana | 投稿日時: 2005/11/7 0:23
Marijuana
引用:
でも、対策してないみたいorz

あーリンク先は春のアドレスだったんですね

秋の懇親会の時に、eguideにだいぶ手を入れたような事を言っていた覚えがあったので・・・
(かなり飲んでたので、記憶違い&勘違いがあるかも)
Re: モジュールの脆弱性 
投稿者: hiro1173 | 投稿日時: 2005/11/7 1:43
hiro1173
Marijuana さん、ご指摘ありがとうございます。また、利用者にはご迷惑をおかけして申し訳ないです。

現在変更作業を行っておりますが、やや時間がかかりそうなので、一時的に配布は中止しました。また、同様の処理を使ったモジュールも同様に配布の中止を行い、現在対策版を作成中です。

完成時にはまたアナウンスします。
イベント案内 (eguide) モジュールの修正版 
投稿者: nobu | 投稿日時: 2005/11/11 2:51
nobu
御指摘ありがとうございます。

SQL injection の修正を行った版 eguide 1.7 を作成しました。

修正版は次のページからダウンロードできます。
http://mysite.ddo.jp/modules/mydownloads/singlefile.php?lid=8

%% うう、1.x シリーズはもう出さない予定だったのに。
Re: イベント案内 (eguide) モジュールの修正版 
投稿者: Ysuzuki | 投稿日時: 2005/11/11 4:10
Ysuzuki
nobuさま

早速のご対応、素晴らしいです。
1ユーザーとしてお礼を申し上げます。

#とっても勝手ながらversion2も期待しています。
Re: モジュールの脆弱性 
投稿者: Marijuana | 投稿日時: 2005/11/11 23:36
Marijuana
全てのファイルを見てる訳では無いので、当然見てない(俺が把握してない)脆弱性もあります。
(もちろん知識不足で気付けない脆弱性もあります)

eguideには、まだ致命的な脆弱性があります。
prefixをデフォルトから変えてないサイトでは、すぐさま削除する事をお勧めします。
変えていても権限のある限りかなりの事が可能です。
最初の投稿の時には、ここまで見てなかったので気付かなかったのですが1.7でも修正されていません。

i-Diary1.10もサニタイズ漏れが残っています。

articles 0.27もSQL Injectinがあります。

pdfのアップロード出来るモジュールは、ほぼアップロードによるJS実行が可能です。

あまり偉そうな事ばかり言えませんが、モジュールを作るのであれば
もう少しセキュリティを気にしてください。
また、使う側の人も多少なりとも知識が無いと大変な事になる可能性があることを理解してください。
(当然XOOPSだけの問題ではなく、ウェブプログラム全般に言えることです)


以下のサイトでも参考にして下さい。
http://www.atmarkit.co.jp/fsecurity/rensai/webhole01/webhole01.html
http://www.asahi-net.or.jp/~wv7y-kmr/
Re: モジュールの脆弱性 
投稿者: Ysuzuki | 投稿日時: 2005/11/12 0:14
Ysuzuki
>Marijuanaさん
アドバイス有り難うございました。
xoopsの運用をしばらく止めることに致しました。
もうちょっとセキュリティの勉強してきます。
Re: モジュールの脆弱性 
投稿者: minahito | 投稿日時: 2005/11/12 1:50
minahito
引用:

eguideには、まだ致命的な脆弱性があります。
prefixをデフォルトから変えてないサイトでは、すぐさま削除する事をお勧めします。
変えていても権限のある限りかなりの事が可能です。


 いろいろな方から連絡があったので、こちらでも確認したのですが、ちょっとまずそうですね……
 恐縮なのですが、対応までの暫時的な緊急措置として、一旦ダウンロードのURLを消去する形で、公式サイトからのダウンロードを中断させていただきました。
Re: モジュールの脆弱性 
投稿者: bankroll | 投稿日時: 2005/11/12 1:50
bankroll
皆様にお願いがあります。

モジュール作者の方々へ:
今回、多くのモジュールがアップデートされましたが、短い時間での対応のため、修正に抜けがなかったか再確認して下さい。
余裕がない場合には、配布中止もやむ得ないものと思います。

利用者の方々へ:
もし、あなたがそのモジュールを必要としているなら、あなた自身が確認して、モジュール作者に協力して下さい。
作者のみが負担を強いる道理は有りません。
利用者の対応が作者のモチベーションとなるのです。ご理解願います。

コーディングについて:
以下のようなコーディングだとデバッグし易いです。(当然、全ての処理がそうとは限りません。)
・foreach、extractでフォーム入力を受け取るのを止めて下さい。
・出来ればこれもforeachを使わず、ベタにして下さい。
foreach ($_POST as $key => $val) {
 $val = trim($val);
 if (preg_match('/(Status|cid|cid2)/', $key)) { $NewData[$key] = intval($val); }
}
・管理画面内もサニタイズして下さい。
・演算処理により自動的に型変換されるような場合でも、型変換して下さい。
・1ファイルで管理者専用とその他の処理がある場合には、処理の制御を確実に行なって下さい。
また、管理者専用の処理内もサニタイズして下さい。
・各処理の最初にサニタイズを行なって下さい。
$ワーク変数 = EGPCSのサニタイズ
     ・
     ・

function 処理A($ワーク変数){
     ・
     ・
}

function 処理A(){
 global $ワーク変数
     ・
     ・
}
または
function 処理A(){
 $ワーク変数 = EGPCSのサニタイズ
     ・
     ・
}
・データの出所によりワーク変数を命名して下さい。
例)cid
$in_cid :フォーム入力値
$db_cid :DBデータ
$wk_cid :その他退避領域

その他:
Marijuanaさんが挙げたモジュールは、脆弱性の問題があるモジュールのほんの一部にしか過ぎません。
少なくともXoops2.07-2.09以前にリリースされたモジュールはすべて疑ってかかった方が良いです。
それ以後も一部のモジュールのみセキュリティに注意が払われてるにしか過ぎません。
(そういう意味で私は、myAds2.05はノーチェックです)
コアが幾ら強固でもモジュールの状態がこれではどうしようも有りません。
あなたはバグを見つけました
Agenda-Xのスクリプトの脆弱性
このころの話に真剣に取り組む時期にきてると思います。


以上、勝手な事ばかり書きましたがよろしくお願いします。
Re: モジュールの脆弱性 
投稿者: puchi | 投稿日時: 2005/11/12 2:17
puchi
jobsモジュールなんですが、どなたか作者の方に連絡しましたでしょうか?
していないなら僕が作者の方にメールをしようと思います。

僕が知っているのは、koiviエディターの脆弱性(どこにあるのかは知りません。)
あと、展開に問題があるファイルをとりあえず一つ見つけました。

もうちょっとソースを見てみますが、どこか他にも脆弱性を見つけた方がいらっしゃいましたら、PMでもよいので教えて頂ければ、合わせて作者の方に連絡しておきます。

よろしくお願いします。
Re: モジュールの脆弱性 
投稿者: gusagi | 投稿日時: 2005/11/12 2:26
gusagi
こんばんは、gusagiです。
引用:
引用:

eguideには、まだ致命的な脆弱性があります。
prefixをデフォルトから変えてないサイトでは、すぐさま削除する事をお勧めします。
変えていても権限のある限りかなりの事が可能です。


 いろいろな方から連絡があったので、こちらでも確認したのですが、ちょっとまずそうですね……
 恐縮なのですが、対応までの暫時的な緊急措置として、一旦ダウンロードのURLを消去する形で、公式サイトからのダウンロードを中断させていただきました。

foreach展開を個別の展開にするのも勿論ですが、取り急ぎやっておいた方が良いと思われる部分だけ、書き込ませて頂きます。

admin.php
修正前
$op = isset($_GET['op'])?$_GET['op']:"";
$eid = isset($_GET['eid'])?intval($_GET['eid']):0;

foreach ($_POST as $i => $v) {
    $$i = post_filter($v);
}

修正後
$op = isset($_GET['op'])?$_GET['op']:"";
$eid = isset($_GET['eid'])?intval($_GET['eid']):0;

foreach ($_POST as $i => $v) {
    if ( $i === 'op' ) continue;
    if ( $i === 'eid' ) continue;
    $$i = post_filter($v);
}


reserv.php
修正前
$tbl = $xoopsDB->prefix("eguide");
$opt = $xoopsDB->prefix("eguide_opt");
$rsv = $xoopsDB->prefix("eguide_reserv");

$op = isset($_GET['op'])?$_GET['op']:"";
$key = isset($_GET['key'])?intval($_GET['key']):0;
$rvid = isset($_GET['rvid'])?intval($_GET['rvid']):0;

foreach ($_POST as $i => $v) {
    $$i = post_filter($v);
}

修正後
foreach ($_POST as $i => $v) {
    $$i = post_filter($v);
}

$tbl = $xoopsDB->prefix("eguide");
$opt = $xoopsDB->prefix("eguide_opt");
$rsv = $xoopsDB->prefix("eguide_reserv");

$op = isset($_GET['op'])?$_GET['op']:"";
$key = isset($_GET['key'])?intval($_GET['key']):0;
$rvid = isset($_GET['rvid'])?intval($_GET['rvid']):0;

//foreach ($_POST as $i => $v) {
//    $$i = post_filter($v);
//}


sendinfo.php
修正前
$tbl = $xoopsDB->prefix("eguide");
$opt = $xoopsDB->prefix("eguide_opt");
$rsv = $xoopsDB->prefix("eguide_reserv");

$op = isset($_GET['op'])?$_GET['op']:"";
$eid = isset($_GET['eid'])?intval($_GET['eid']):0;

foreach ($_POST as $i => $v) {
    $$i = post_filter($v);
}

修正後
foreach ($_POST as $i => $v) {
    $$i = post_filter($v);
}

$tbl = $xoopsDB->prefix("eguide");
$opt = $xoopsDB->prefix("eguide_opt");
$rsv = $xoopsDB->prefix("eguide_reserv");

$op = isset($_GET['op'])?$_GET['op']:"";
$eid = isset($_GET['eid'])?intval($_GET['eid']):0;

//foreach ($_POST as $i => $v) {
//    $$i = post_filter($v);
//}


現状だと、最悪の場合、XOOPSの管理者権限どころか、サーバのMySQL権限まで脅かされる可能性があります。
こちらも詳細な検証はしていないのですが、本格的な対応はともかくとしても、取り急ぎと言うことで。
Re: モジュールの脆弱性 
投稿者: nobu | 投稿日時: 2005/11/12 5:08
nobu
$_POST 側に同名の引数があった場合、$_POST側を優先させないいけないので、ちょっと違うやり方で修正を行いました。(ついでにバグ修正)

http://mysite.ddo.jp/modules/mydownloads/singlefile.php?lid=8


このモジュールは、セキュリティ知識の乏しい時代に書いた良くない記述が残っています。ちょうど、そういう部分を含めて大幅に書き直しているところだったのですが (間が悪い ... いや積極的にチェックして頂けてありがたい ^_^;)。

投票(0)

新しいものから | 古いものから | RSS feed
 
To Top