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

ECサイトの本番環境のセキュリティ診断で全ユーザーのパスワードが一時初期化される 10

ストーリー by hylom
SQLインジェクションはデータを盗むためだけのものではありません 部門より

とあるWebアプリケーションに対し脆弱性診断を行ったところ、そのWebアプリケーションの全ユーザーアカウントのパスワードが初期化されるというトラブルが発生した話話題になっている。

診断対象のシステムは本番稼動環境だったとのことで、一歩間違えれば大問題に発展するところであったが、幸い診断の実行前にデータベースのバックアップが取られていたとのことで、大事には至らなかったという。

興味深いのは、このパスワードリセットがSQLインジェクションによって引き起こされたという点だ。具体的には、ユーザーがパスワードを忘れた際にパスワードをリセットする部分にバグがあり、そこで入力させられるメールアドレスに「'+'」という文字列を含んだ文字列を指定すると、すべてのユーザーのパスワードがリセットされるようになっていたという。

このシステムではSQLインジェクション対策が適切に行われておらず、このようなメールアドレスを指定すると、「'+'」という文字列が含まれたままでSQL文が発行されてしまっていたようだ。MySQLでは文字列に対し「+」演算子を使用すると、文字列を数値として評価してしまうという「暗黙の型変換」が発生する。その結果where句内が適切に機能せず、すべてのアカウントを対象に操作が実行されてしまったという話のようだ。

  • by Anonymous Coward on 2014年05月27日 18時40分 (#2609592)

    まさに脆弱性診断サマサマじゃないですか。
    本番稼働前だし、なんの問題も無いと思います。

    試験で不具合見つかったとして、それってトラブル発生っていうんですか?

    • by Anonymous Coward

      gmailのアドレスで、アカウント名の後ろに +XXX って付けてるのだが、
      同様なミスが、他のサイトにあるかもと思うと怖いな・・・

      • by Anonymous Coward

        つーか、メールアドレスに+が使えないサービスの方が多い感じ

        • by Anonymous Coward

          どこだったか覚えてないけど、登録は出来るけど、いざそれでログインしようとするとダメ、ってところあったな・・・

    • by Anonymous Coward

      >本番稼働前
      どこにそんなこと書いてあります?

      > かなり前に作られていた
      とか書いてあるし、

      >テストサイトで の実施を勧めたが、「そんなもんねえから本番でやって」
      >作業の再開と原因究明のために、速攻でテスト環 境が構築
      稼動前だったら本番でやらない理由が(あまり)ないですよね

  • by Anonymous Coward on 2014年05月27日 18時51分 (#2609596)

    なんか「+」で異常動作するのが盲点だったように書かれているけど、
    原因はシングルクォートのエスケープ漏れという基本中の基本だから。
     

    • by Anonymous Coward

      今時、そんなエスケープ処理を自前でやらねーだろ。
      バインド変数使うだろ。

      まぁ素人に毛が生えた程度の奴らはsqlに外部から入ってきた変数を直書きしている奴らをみるけど
      (某大手質問サイトで今システムを作ってますとかいう奴らによく見る。こいつらサービスは絶対に使いたくないなと傍観していますが)

    • by Anonymous Coward

      今時強制的にPreparedStatement使わせないFWなんて存在するのかよ、
      と思ってネタ元見てみたらかなり古いお手製ECってだけだったでござる。
      こんなありふれたWEBアプリケーションの古典的失敗談をいまさら記事にすることなの?

      • by Anonymous Coward

        こんなありふれたWEBアプリケーションの古典的失敗談をいまさら記事にすることなの?

        脆弱性の内容ではなくて、脆弱性診断を依頼する側にテストサイトでの実施の重要性を認識してもらうための定期ネタとしての価値があると思う。

        • by Anonymous Coward

          こんな古臭い脆弱性しか見つけられないようでは使い物にならないな、という認識か

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...