第20回 HTTP及びWebアプリケーションの脆弱性と対策
セッション管理の脆弱性と対策
これについては第9回前後でやったので、
ここでは省略します。
HTTPの仕様による脆弱性と対策
HTTPは平文でデータがネットワーク上で流れます。
当然ですな。敢えて暗号化していないあらゆるプロトコルは平文で流れます。
ベーシック認証の脆弱性
ベーシック認証というのは、特定のURLに仕込んで置いて、
そのURLにアクセスした時にポップアップ画面を出して、ユーザID/パスワードを入力させるものだ。
通常のWebシステムは、ベーシック認証ではなく、CGI(プログラム)による認証を使っている。
ベーシック認証は飽くまで簡易的な認証。
で、これの脆弱性とは事実上平文でユーザID/パスワードがネットワーク上を流れるということだ。
事実上というのは、生データではなく、base64というエンコード方式で送るため。
base64は、postで日本語などを送る場合にも使われる。
base64とは、あらゆる文字列(バイナリ含む)を文字通り64文字に変換するものだ。
使われるのは、アルファベットの大文字(26文字)、アルファベットの小文字(26文字)
数字(0~9までの10文字)、記号(「+」と「/」の2文字)の64文字。
いずれも人間にも機械にも扱いやすい記号だ。
詳細はこちらをご覧下さい。
というわけで、ロジックは簡単なので、誰でもデコード(元に戻す)できます。
簡単に。というわけで、事実上。というわけです。
ちなみに、base64に変換したり元に戻したりするのはJavaScriptでもできますし、
フリーのソフトにもたくさんあります。
結局これもHTTPS(暗号化)で対応することになります。
なんでも暗号化ですな。
安易だけど確実。
けれども、SHA-1も解読可能との話もあり、暗号化も完全ではない。
Webサーバの実装や設定不備による脆弱性と対策
一つは、ディレクトリへのアクセス権の設定。
たまに、ファイルリストが出るページなどがあるが、それはその典型。
ディレクトリ構造が分かるし、隠してあるファイル(どこからもリンクが張られてないファイル)も見えてしまう。
これで問題になっているのは、ロボットによる情報収集だ。
googleもロボット式。
ロボット式でないのは、人間式。つまり全部手作業。
古き良き時代yahooは人間式だった。
今はgoogleになってるんだっけ?(yahooは行かないので。)
エラーメッセージの出力設定不備により情報が漏れる可能性もある。
単なるfile not foundならまだよいが、Webシステムのデバッグ情報が
表示されるようなことがあると、そっから何らかの情報が漏れる可能性がある。
Webアプリケーションの仕様や実装による脆弱性
XSS、SQLインジェクション、OSコマンドインジェクション。
これらについては、前に書いたので省略。
セッション管理の脆弱性と対策
これについては第9回前後でやったので、
ここでは省略します。
HTTPの仕様による脆弱性と対策
HTTPは平文でデータがネットワーク上で流れます。
当然ですな。敢えて暗号化していないあらゆるプロトコルは平文で流れます。
ベーシック認証の脆弱性
ベーシック認証というのは、特定のURLに仕込んで置いて、
そのURLにアクセスした時にポップアップ画面を出して、ユーザID/パスワードを入力させるものだ。
通常のWebシステムは、ベーシック認証ではなく、CGI(プログラム)による認証を使っている。
ベーシック認証は飽くまで簡易的な認証。
で、これの脆弱性とは事実上平文でユーザID/パスワードがネットワーク上を流れるということだ。
事実上というのは、生データではなく、base64というエンコード方式で送るため。
base64は、postで日本語などを送る場合にも使われる。
base64とは、あらゆる文字列(バイナリ含む)を文字通り64文字に変換するものだ。
使われるのは、アルファベットの大文字(26文字)、アルファベットの小文字(26文字)
数字(0~9までの10文字)、記号(「+」と「/」の2文字)の64文字。
いずれも人間にも機械にも扱いやすい記号だ。
詳細はこちらをご覧下さい。
というわけで、ロジックは簡単なので、誰でもデコード(元に戻す)できます。
簡単に。というわけで、事実上。というわけです。
ちなみに、base64に変換したり元に戻したりするのはJavaScriptでもできますし、
フリーのソフトにもたくさんあります。
結局これもHTTPS(暗号化)で対応することになります。
なんでも暗号化ですな。
安易だけど確実。
けれども、SHA-1も解読可能との話もあり、暗号化も完全ではない。
Webサーバの実装や設定不備による脆弱性と対策
一つは、ディレクトリへのアクセス権の設定。
たまに、ファイルリストが出るページなどがあるが、それはその典型。
ディレクトリ構造が分かるし、隠してあるファイル(どこからもリンクが張られてないファイル)も見えてしまう。
これで問題になっているのは、ロボットによる情報収集だ。
googleもロボット式。
ロボット式でないのは、人間式。つまり全部手作業。
古き良き時代yahooは人間式だった。
今はgoogleになってるんだっけ?(yahooは行かないので。)
エラーメッセージの出力設定不備により情報が漏れる可能性もある。
単なるfile not foundならまだよいが、Webシステムのデバッグ情報が
表示されるようなことがあると、そっから何らかの情報が漏れる可能性がある。
Webアプリケーションの仕様や実装による脆弱性
XSS、SQLインジェクション、OSコマンドインジェクション。
これらについては、前に書いたので省略。