パスワードを忘れた? アカウント作成
13202000 story
セキュリティ

影響範囲が広がるApache Struts2の脆弱性 58

ストーリー by hylom
注意喚起再び 部門より

3月9日、Webアプリケーションフレームワーク「Apache Struts」の脆弱性を狙った攻撃に対する注意喚起が出ていたが(過去記事)、この脆弱性を狙った攻撃や実際の被害が多数報告されている。

すでに特許情報プラットフォーム(過去記事)や都税支払いサイトおよび住宅金融支援機構(過去記事)、日本郵便(Security NEXT記事)などで問題の脆弱性を付いた攻撃が行われて情報流出が発生したことが報じられているが、これ以外にもニッポン放送の音声サービス「Radital」や(ニッポン放送の発表)や沖縄電力(発表PDF)などでも攻撃が確認されている。

当初は「Content-Type」ヘッダを利用して攻撃ができるという話だったが、これ以外の「Content-Disposition」や「Content-Length」といったヘッダを利用した攻撃も可能であることも判明している(Securty NEXT)。また、今回の脆弱性の対応としてパーサーを変更するというものが提案されていたが、この対応を行った場合でも攻撃が可能であることが確認されており、確実な対策としては脆弱性を修正したバージョンにアップデートするしかないようだ(INTERNET Watch)。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2017年03月21日 21時59分 (#3180089)

    最初に告知された対処方法の中に、バージョンアップしなくても対策できるようなことが書かれていたようで
    それでこの脆弱性が残ってしまい(最初の対策方法では対処できてなかった)
    その影響でここまで問題が大きくなった可能性がありますね。

    ITpro Struts2脆弱性対策、実は無意味だった!JPCERTが指摘
    http://itpro.nikkeibp.co.jp/atcl/news/17/032100876/?itp_side_ranking [nikkeibp.co.jp]
    > Apache Struts2の開発を支援するApache Software Foundationが当初公開した対策の一つが無効だったとしている。

    • by Anonymous Coward

      Apacheのソフトウェアに、どうも良い印象がない。
      Cordovaはなんか力押しにも程があるだろ、って感じがするし、POIはそもそもネーミングセンスからして腐ってるし。
      Poor Obfuscation Implementationとか、お前らの実装も褒められたもんじゃないだろ……。
      それに名前空間にまでHorribleとかわけのわからんユーモアを発揮してユーザーを惑わすんじゃない。
      HSSFがExcelとか一目でわかる奴がどこにいるんだ。

      あんまり数使ってないからあくまで個人の印象の域を脱しないけども、なんかどうもねぇ……。
      中途半端に出来る奴が調子こいて作った感じがすごくする。

  • by Anonymous Coward on 2017年03月21日 21時11分 (#3180054)

    JVNで最初に出た時も10でなく7台だったと思うし?
    それでクリティカルだと気が付かず後手に回ってしまったって所も少しはあるんじゃないかな?

    今でも
    https://jvn.jp/vu/JVNVU93610402/index.html [jvn.jp]
    こっちだと7のままで
    http://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-001621.html [jvndb.jvn.jp]
    こっちはちょっと前にに格上げされた

    • by Anonymous Coward

      そもそもJVNでの公開日(3/9)にはすでに手遅れだったんだよなあ。

  • by Anonymous Coward on 2017年03月21日 20時08分 (#3180022)

    Microsoftの.Net Framework(ASP.Net)は脆弱性あっても
    ここまで大規模に被害が報告されることが少ないよね?

    ただ単に採用例が少ないのか、
    サーバとはいえ半ば強制的にパッチをあてる仕組みが優秀なのか、
    GUIぽちぽちクリックするだけでアップデートが完了するのが優秀なのか。

    どれでしょう?

    • Re:.Net Framework (スコア:5, 参考になる)

      by Anonymous Coward on 2017年03月21日 20時44分 (#3180043)

      脆弱性の一覧を調べてみました。

      struts (1系、2系含む)
      https://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-... [cvedetails.com]
      2005/11/22より12年で57件、最高スコアが10.0 (最高値)

      ASP.NET (1.1~)
      https://www.cvedetails.com/vulnerability-list/vendor_id-26/product_id-... [cvedetails.com]
      2003/09/22より15年で10件、最高スコアが7.8、任意コード実行なし

      他はSpringが7件、CakePHPが5件。
      上記は言語ランタイムの件数を含めていないし、それぞれのコードの規模にもよるんだろうけど、
      strutsはかなり脆弱性が多い印象。

      親コメント
      • by nim (10479) on 2017年03月22日 9時18分 (#3180281)

        Strutsはパラメータからリフレクション(とかファクトリ)で実行コードを呼び出す方法を多用してるけど、そこが特に深刻な脆弱性につながりやすい。
        機能のカスタマイズ性を高めるためにやってるのはわかるけど、脇が甘すぎる。せめて、パラメータベースで実行されるコードをホワイトリストで管理する仕組みを全面的に取り入れるべきだった。

        親コメント
    • Re:.Net Framework (スコア:3, 興味深い)

      by Anonymous Coward on 2017年03月21日 21時59分 (#3180090)

      .NET Framework自体にはそれなりに脆弱性を直すパッチは来てるよ。
      ただ、ASP.NETでWebアプリ公開していて即死レベルの攻撃をされる脆弱性はなかなか無い。
      Struts 2と同じレイヤのフレームワークで言うとASP.NET MVCがあるけど、
      こちらも即死レベルの問題は全然無くて、今までWindows Updateで更新入ったのもたぶん片手で数えられるレベル。
      まぁ単純にStruts 2作ってる連中がクソ&クソってだけじゃないかね。

      あと.Netじゃなくて.NETな。

      親コメント
      • by Anonymous Coward

        まあJava自体、言語仕様的に目的のコードが長く冗長に成りやすい=メンテナンス性悪化とバグ隠れやすい面あるから。

        というのを除いても、Strutsの修正コードはちょっとねw
        そして過去の積み重ねもあるからもうムリw

        .NETはそういう後々ヤバそうなモノを、言語仕様も見直して根元を断ちに行きますね。

    • by Anonymous Coward

      .Netに限らず、ここまで酷いフレームワークはあまり無いような気がします。

      公共工事案件で大企業のどこかが採用してしまったのが、これだけ大規模化した理由かと思われます。

    • by Anonymous Coward

      攻撃手法が広まる前に情報を掴んでるかどうか、の違いかなあ。
      もっと言えば、開発元への攻撃方法のタレこみが金になるかどうか。

    • by Anonymous Coward

      何の目的で.Netを引き合いにだしたのか知らんが、.Netは少なくともこんなに酷い代物じゃないからだろ
      Windowで使用されまくってるものだから脆弱性が発覚した場合の影響はstrutsの比じゃないのだし

    • by Anonymous Coward

      Strutsとその作者が特別にクソでファイナルアンサー

  • by Anonymous Coward on 2017年03月21日 21時42分 (#3180073)

    一般的に瑕疵対応?有償対応?
    当然瑕疵期間なんて終了済みだろうけど。
    ああ保守対応か

    • by Anonymous Coward

      これは有償対応じゃねえかな、テストまわすなら
      当然、保守契約に盛り込んである場合はその限りじゃないが
      相当保守でお金もらってないと対応したくないなぁ

  • by Anonymous Coward on 2017年03月22日 2時23分 (#3180189)

    reflectionやjavaassist使ったバイトコード操作で省力化するのはいいけど、いざこういう話になると
    往々にして基底部分だから場当たり的な対処を重ねる形になっちゃうなぁ。
    いずれrubyとかnodeとかのダックタイピングありきな処理系でもそういうフレームワークやDSLで起きるんじゃねえのかなぁ。

    • by Anonymous Coward

      リフレクションとか言わばプログラミング言語の理想を追い求めた過程の産物なんですけど、
      Web攻撃者の事を考えると「隠しておくべき邪悪の呪文」になっちゃうんですねぇ。

  • by Anonymous Coward on 2017年03月22日 10時53分 (#3180337)

    もうStruts2はShutdownすればいいよ

    「不具合多いので終わります。ありがとうございましたー」

    でいいよ。たいしてやる気も無いのにちまちま対処療法してたって
    利用者は「まだ使えるんだ、じゃあつかうかー」って同じこと繰り返すだけ

    炎上覚悟でプロジェクト閉じて、いまだ目が覚めてないStruts2ユーザーに
    乗り換えを促進させたほうが、役立っているという意味ではまだマシ

    • by Anonymous Coward

      対症療法ね。

      ……もう対処療法でもいい気もしてきた。
      この間違いする人山の様にいるしなぁ。

    • by Anonymous Coward

      開発終わっちゃったから脆弱性ありバージョンでもそのまま使うしかない
      って判断されちゃうほうに賭ける

    • by Anonymous Coward

      代わりに適切な、Javaフレームワークをチョイスしていただけると有り難く。

      • by Anonymous Coward

        jsfでええやん

      • by Anonymous Coward

        Spring BootかPlay
        JSFはゴミ

        • by Anonymous Coward

          どもども。10年前にJSFゴミだなと思ってたけど、やっぱ今でもゴミなのか。。

          • by Anonymous Coward

            そもそもの仕組みからして、MSですら見限ったASP.NET WebFormsのちょっとマシなヤツ、ってレベルだからな

      • by Anonymous Coward

        どうせ書き直すんだからC#(+ASP.NET MVCとか)でいいんじゃね?

        JavaからC#に移行できない程度の応用力ならプログラマー切って据え替えるところからで。

        • by Anonymous Coward

          C#は別にいいんだけど、JavaならJavaでいいじゃん
          サーバまで買い換えさせるんか?無理に決まってる
          新規にサーバから立て直すならわかるが、Struts2からの置き換えでC#という選択肢はないよ

          • by Anonymous Coward
            サーバーはそのままでええやん。
            なんで買い替えが必要なの?
            • by Anonymous Coward

              Linuxで運用するのはちょっとなぁ。

              • by Anonymous Coward

                今時のLinux動かしてるのなんてIAサーバーだからWindowsいれればハードの交換なんざ必要ないと思うんだが。
                逆はあるにせよ、IAサーバーに使うようなパーツ・周辺機器でLinux用にドライバ供給しててWindows用ドライバはありません、なんて話は聞いたことがないし。
                既存DBとのすりあわせとかで考えるにせよ、別にWindows Server(+IIS・ASP.NET)とLinux(OracleやPostgre等)のシステム構築例は世の中にいくらでもあるから、システムのみ移行すれば事足りる。
                システム移行の手間で考えても、Struts消して別フレームワークで構築し直したアプリをデプロイするならそこそこ

            • by Anonymous Coward

              大手ITベンダに発注すると、Java案件では大真面目にSolarisだったりするんです。お役所案件などでは特に。

        • by Anonymous Coward

          昔、あるところでASP.NETとJava+Struts系の両方で同じWebコンテンツを作った
          ・環境構築の手間
          ・コードの量、効率
          ・開発時のデバッグ、調査のしやすさ
          が断然asp.netだったなあ。
          依頼してきた人が「ASP.NET良いなあ」とw
          C#(3.5)に惚れ込んでた。長く冗長なのが嫌いな人でしたしね。

          ただ問題になったのがLinuxで動かすことを考えた時。
          XSPの次がApache+mod_monoかな?
          Apacheは設定地獄だしねえ。。

          • by Anonymous Coward

            そこは普通にnginxとmicrosoft/aspnetcoreの組み合わせでDockerコンテナを動かせばいいのでは
            MSも.NET CoreのVisual StudioプロジェクトテンプレートにDockerサポートをつけてるぐらいだし、
            他のプラットフォームと同じ感じで動かすのが無難だと思うけどねぇ

      • by Anonymous Coward

        struts2-archetype-angularjsかなりイイんすけどね、コーディング量少なくて、struts2だけど…
        rubyのsinatraやnodeのexpressみたいなテンプレートエンジンと縁切りしたJavaのWebフレームワーク欲しいな
        sparkってどうなのかなぁ

      • by Anonymous Coward

        自分の周囲だとSpring Web MVCが主流だが。
        今からStrutsで始めるプロジェクトを見たことがない。

        • by Anonymous Coward

          結局のところ、みんな自分なりのタコツボを持っていましたという話のような。
          他のツリーでも意見が割れる一方、それでもStrutsという人もちらほら。

    • by Anonymous Coward

      N系の案件なんかだと「Struts必須」となってるんだよね…。Struts終わったらそういうところはどうするんだろう。

typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...