ITmedia NEWS > セキュリティ >
セキュリティ・ホットトピックス

新人の作ったWebアプリが穴だらけ!? ログイン画面に潜むセキュリティの”あるある”ワナ“典型的やられサイト”で学ぶセキュリティのワナ(3/3 ページ)

» 2023年08月09日 11時45分 公開
[谷井将人ITmedia]
前のページへ 1|2|3       

上野 うん。じゃあ次に行こう。今度はログイン状態を保持する機能の部分だね。Cookieにログイン状態を保存しているみたいなんだけど、そのデータの一部をデコードしてみると……

O:4:"User":3:{s:8:"^@User^@id";s:1:"2";s:12:"^@User^@userid";s:7:"wasbook";s:11:"^@User^@super";s:1:"0";}

上野 こんな感じになった。この中にあるidを1に書き換えるとどうなると思う?

荒井 ……id1番さんとしてログインしていることになると思います。

上野 正解! というわけで管理者である(ことが多い)id1番に成り済まして侵入できました。これで管理者権限使い放題だね。

荒井 やばい!

上野 やばいね。やばいついでにもう一個。ログイン画面に戻ってID欄にこんな文字列を入力してみる。

photo

上野 これでパスワードは入れずにログインボタンを押してみると……。

荒井 ログインできた!?

上野 これがSQLインジェクション。データベースの操作に使うSQL文を使って、Webアプリに作り手の意図しない挙動をさせる攻撃だね。ちなみに入力した文字列はプログラマーなら知ってて当たり前なレベルのものだし、当然対策していて当たり前でもあるんだけど、影響力が強すぎるからテストでもあまり使わないほうがいい。他社のWebアプリとかでは絶対に試さないでね。

荒井 分かりました。

上野 ざっとこんなところかな。じゃあ指摘したところを直してみてもらえるかな?

荒井 分かりました!

──しばらくして……

荒井 上野さん。さっきのできました。

上野 うん。なるほど……。そうだね。これでOK! じゃあ、今度はユーザー登録機能を実装して行こうか。今日はお疲れさま。

ちょっとした機能でもワナだらけ 知識は身を助く

 今回はログイン機能の実装において発生しがちな脆弱性についてみてきた。なお、題材にしている脆弱性診断実習用Webアプリ「BadTodo」には上で見た以外にも脆弱性や仕様上の問題が潜んでいる。例えば、BadTodoにはログイン試行回数に制限がないため、機械的に総当たりでパスワードを探り当てることも理論上は可能だ。

 徳丸さんによると「ログイン機能はどんなサイトにもあるわけで、ベストプラクティスがある程度決まっている」という。それに沿って実装すれば基本的な脆弱性は防げる。独自の工夫をしたい場合は情報セキュリティの専門家に相談したり、脆弱性診断を実施したりして問題がないか確認するのがいい。

 ただし、「後で脆弱性診断をすればいいや」と情報セキュリティについて考慮しないまま実装するのはリスクが大きい。チェックして深刻な問題があったと分かった場合、手戻りが多くなる可能性がある。脆弱性診断をする段階ではすでにリリーススケジュールが固まっており、直さないまま公開することになる……ということも現実にはあり得る。

 「開発者自身もセキュリティ知識を身に着けて、診断を頼む前に安全なものにしておくのが望ましいですね」(徳丸さん)

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.