• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外注PHPソースからWorm.Avron検出!?何が原因なのか困ってま)

外注PHPソースからWorm.Avron検出!?何が原因なのか困ってま

このQ&Aのポイント
  • 外注PHPソースからWorm.Avronが検出されており、原因が分からず困っています。
  • 個人経営の商店で小規模のECサイトを構築中で、PHPの勉強中です。
  • 社長が買い込んだスクリプトの中で、メール送信モジュールがウイルスとして検出されました。VirsTotalでのチェックでも陽性反応があり、心配しています。ソースを見ても理解できない状態です。

質問者が選んだベストアンサー

  • ベストアンサー
  • localica
  • ベストアンサー率52% (202/385)
回答No.3

こんにちは >なんと、そのまま使っていたら恐ろしい事件を引き起こしかねない所だったのですね。 誤解があるようですので補足しておきますが、このスクリプト自体にウイルスコードが含まれているわけではありません。 このスクリプトによって送られるメールに「悪意のあるプログラム(ウイルスコード)」を含めることが可能なだけです。 おそらく、大雑把な検知システムでは単純に文字列だけで検出し、そうでない検知システムは「文字列+特定の条件」や実際の「悪意あるプログラム」を検出するようにしているので、ベンダーによってこのスクリプトがワームとして判断されるか分かれているのでしょう。(※推測に過ぎませんが) しかし、このスクリプトから送信されるメールは高確率でウイルス付メールと判定されると思います。 セキュリティ担当としては実効可能なコードを含んだメールは迷惑以外の何ものでもありませんし、そもそもフレームを含んだメールに意味があるのでしょうか? まあ、毎日SPAMメールと格闘している者の愚痴として聞き流してくださっても構いませんが。

eddie_vinson
質問者

お礼

localicaさん、本当に懇切丁寧なご指導ありがとうございます。 >このスクリプト自体にウイルスコードが含まれているわけではありません。 ちょっと安心できました・・・ >このスクリプトによって送られるメールに「悪意のあるプログラム(ウイルスコード)」を含めることが可能なだけです。 (このスクリプトを無修正でそのままECサイトに使用したら)「無防備な新米管理者」である私の知らぬ間に、勝手に誰か悪党がうちのお店のメール発信にインジェクションをする。 ∴ウイルスチェッカー会社の約三分の一がこのPHPをマルウエア踏み台予備軍として定義に組み入れた・・・ という捉え方でよろしいでしょうか? 職場では、社長にブログの簡単なカスタマイズを見せたら過大評価されてしまい、うっかり大役を任されてしまったなあ、と冷や汗の毎日です。 クロスサイトスクリプティングとSQLインジェクションの違いも、イマイチどこがどう違うの??という状態で前途多難ですが、これを機に猛勉強がんばってみます! >しかし、このスクリプトから送信されるメールは高確率でウイルス付メールと判定されると思います。 それは ・フレーム(悪意の外部サイトを混入されるから?)付きメールのPHPだからでしょうか? ・$message挿入をJavaScriptのinnerHTMLに頼るロジックだからでしょうか? ・この二つがセットになったからでしょうか? ・どちらか一つでもあったら踏み台の危険があって、$messageはDBから直接平文で送信文に抽出すべき、という方向性でしょうか? No.1のluka3さんからご指導頂いた修正案は、iframeをあえて活かしておく(VBA32チェッカで合格するために)案でしたので、ちょっと気になってみました。 SPAMは私もウンザリの経験がありますので、お客様の誕生祝メッセージには必ず割引特典やポイント贈呈などを入れるよう、社長に進言するつもりです。 いろいろ頓珍漢なレベルですが、一生懸命頑張りたいと思います。

その他の回答 (2)

  • localica
  • ベストアンサー率52% (202/385)
回答No.2

>VirsTotalで再チェックすると、43社中、16エンジンで陽性反応なので少々慌てています。 陽性反応の理由はそれぞれのセキュリティベンダーが決定していることなので分かりませんが、私の使用しているセキュリティソフト(大手ベンダ製品)では検知対象となりませんでした。 ただし、このスクリプトから送られるメールはゲートウエイのセキュリティ製品では検知対象となる可能性が高いと思います。 理由は、典型的なガンブラー手法のメールと同じだからです。 No.1の方が指摘されていますが、innerHTML はクロスサイトスクリプティングの脆弱性を含んでいます。 innerHTML → innerText に変更すれば検知対象から外れるかもしれませんが、ロジックを見直す方が宜しいと思います。

eddie_vinson
質問者

お礼

localicaさん、今回大変お世話になります。 > 理由は、典型的なガンブラー手法のメールと同じだからです。 > > No.1の方が指摘されていますが、innerHTML はクロスサイトスクリプティングの脆弱性を含んでいます。 なんと、そのまま使っていたら恐ろしい事件を引き起こしかねない所だったのですね。 ちょっと身勝手で失礼な質問投稿をしてしまった、と反省もしていますが、やっぱり質問してよかった、と皆様に感謝いたしております。 JavaScriptや非推奨タグのiframeは、顕在化しているXSSはもちろんですし、今後発生するかもしれない潜在的にも人の迷惑になりやすい、と心得ておくのが無難でしょうか? >ロジックを見直す方が宜しいと思います。 そうですね。 にわか管理者の私にはとても難問ですが、No.1のluka3さんも応援して下さっていますし、一生懸命頑張ってみます。 工程とにらめっこするとかなり無理なんですが、社長も自分が購入したスクリプトに脆弱性が本当にあるとは思ってない様子なので、事情を説明しようと思っています。

  • luka3
  • ベストアンサー率72% (424/583)
回答No.1

eddie_vinson さん、こんにちは。 プレーンテキストな訳ですから、自分で少しずつ削除して再検出させればどこがおかしいかわかるハズですよ。 で、試してみたところ、228行目の  idContent.document.body.innerHTML="<? echo nl2br($message) ?>"; がアウトのようで、この行を削除するだけで検出0となりました。 $messageはこのphpでは定義されていませんので、これがどういう意味をなすかはわかりませんが、iframeの中身をまるっと書き換える、ということがよくないということでしょうか。 ここまででやめようかとも思いましたが、少し興味があったので対策を考えました。 まずiframeを、textareaやdivにしてみましたがVBA32だけは許してくれませんでした。 そこで$messageをJavaScriptでなく直接表示するようにしたところうまくいきました。 変更したのは189行目を <iframe width="500" name="idContent" height="250"><? echo nl2br($message) ?></iframe> として、225~230行目までを削除しました。 ただこれはウイルス検出されないというだけで、実際にうまく表示されるかはやってみないとわかりませんね。 試してみてください。

eddie_vinson
質問者

お礼

luka3さん、今回本当にありがとうございます。 もうすっかり動転してました。 > プレーンテキストな訳ですから、自分で少しずつ削除して再検出させればどこがおかしいかわかるハズですよ。 大変失礼しました。 今、深呼吸してみれば、確かにそうですよね。 自分の力では手に負えない膨大な構文の意味解明ばかりに、完全に捉われてしまっていました。 次回からは構文の意味が分からなくても、冷静に一行ずつ削除してみます。 $messageでgrepしてみたら、任意の誕生日お祝いメッセージをDB格納&抽出している様子でした。 >ここまででやめようかとも思いましたが、少し興味があったので対策を考えました。 こんなにご指導頂けまして、本当に感謝感激です! さっそく実験してみます!

関連するQ&A