DS-SyndicateコンポーネントにSQLインジェクションの脆弱性
以前に紹介して実際にこのサイトでも使っているDS-Syndicateでセキュリティホールが公表されていました。私は、改造して使っていたりなのですが、そこまで見ていませんでした。
対応策
new_feed(mosGetParam( $_GET, 'feed_id', ""));
を
new_feed(intval( mosGetParam( $_GET, 'feed_id', "") ));
のように(他の方法でももちろん良い)数値にサニタイズすることで対処できます。
追記:さらにすでに攻撃されたかどうかは、Root/components/com_ds-syndicate/feedフォルダ内を見て下さい。そこに通常のファイルではなさそうなものがあればすでに攻撃されたものだと思われます。フォルダ内のファイルをすべて削除する必要があります。
念のためまだ10月の途中ですが、毎月行っているiLogScannerのスキャンを行ってみました。
22日現在の時点で104件の攻撃で幸い成功はしていないようです。
成功していないというのは厳密に言うと間違いです。この攻撃を使ってのインジェクション攻撃は成功しています。そしてデータベースのnameとpasswordは見る事ができたかもしれません。ですが、Joomla!は生のパスワードは保存していません。パスワードは、Joomla!の独自メソッドでハッシュ値に変更されたものなので生のパスワードを悟られる事はまずありえ無いでしょう。心配な方は、パスワードを変更してください。
ログを見てみるとDS-Syndicateに対する攻撃は、10月6日から来ています。公表されるずいぶん前の時点ですね。情報を素早く入手することももちろん大切ですが、エクステンションを導入するときには気軽に導入すべきではないことも事実のようです。また、たくさんの人が使っているから大丈夫ということも絶対言えませんし、あのサイトで紹介されているから大丈夫とも言えません。
Joomla!のコンポーネントであれば、少なくともフロントエンドの入り口であるcomponents/導入するコンポーネント名/導入するコンポーネント名.phpくらいはチェックした方が良さそうです。これは、Joomla!1.0.xならそれで良い(足りない場合ももちろんある)ですが、Joomla!1.5では他のファイルにも気を配る必要があります。Joomla!1.5ではそのファイルは、ただの入り口でしかないからです。
どのようにして脆弱性を発見するのかなど、セキュリティに関しては新しいサイトで取り上げていくつもりです。フリーだからとむやみに導入していると痛い目に遭わないとも限りません。また、中にはJoomla!の専門家と称している方たちの中にもこういった類の方がいる事も事実で、当の私(専門家とは言っていませんが・・・)もこれに気づかず使っていたくらいです・・・![]()
Joomla!を使い始めて当初は、たくさんのエクステンションを導入してみて良いものをそのまま使いつづけるといった形でみなさん使われていると思います。私ももちろん同様にしています。このサイトを始めるときはどのエクステンションを使うかはあらかじめ経験済みだったので候補のエクステンションは決まっていました。ですが、だんだん見えて来ちゃって今では導入する前に必ずソースコードを見るようにしています。そして駄目っぽいものはインストールすらしません。
現在、新しいサイト(というよりその前のエクステンションだが)を作成中でまた、仕事の中ではじめてのエクステンションを見る機会もあるのですが、たとえJoomla!1.5Nativeと書かれていても危ないエクステンションは存在するようです。
みなさんにお願いです。
エクステンションで問題を発見・遭遇したら公表する前(*)に作成者に報告してください。作成者はそれを意図的に作成したわけではありません。使えなきゃそのまま放置するのではなく、是非報告してください。作成者はそれを待っています。
※公表する前に報告:公表してしまうとその情報を元に攻撃をしてくる攻撃者がいるからです。


































