Basic認証がかかったディレクトリにアクセスしたときに、入力したログインIDとパスワードはいくつかの方法で覗き見ることができる。
Basic認証の弱点
Basic認証の脆弱性についてはよく言われるところだが、ログインIDとパスワードは盗み見ることができる。
Basic認証を扱う中で、ログインIDとパスワードが漏洩する可能性のある仕様をまとめる。
暫定条件でBasic認証を設定する
サーバにtest
フォルダを設置し、その直下に.htaccess
をアップロードした。.htpasswd
は任意のディレクトリにアップロードしたとする。
- test
- index.html
- .htaccess
.htpasswd
にはログインIDとパスワードを下記のように入力したとする。
ログインID | testuser |
---|---|
ログインパスワード | ninsyoutest |
ハッシュ値 | testuser:W5VZAMcxgh5.E |
以上の条件でBasic認証を設定したtest
フォルダのindex.html
にアクセスする。
Basic認証のログイン情報はURLに記録される
index.html
のBasic認証を通過するため、認証パスをURLに含めていたとする。
index.html
のアドレス欄のURLをコピーし、メモ帳などに貼り付けると…。
http://testuser:ninsyoutest@XXXXXX/test/index.html
認証情報が保存されているのがわかる。
Basic認証のログイン情報はリクエストヘッダーに記録される
Basic認証を通過したとする。
Chromeの開発者ツールを開き、ネットワークタブのindex.html
をクリックする。
ヘッダー
タブが表示されるので、リクエストヘッダー
を確認する。
Authorization: Basic dGVzdHVzZXI6bmluc3lvdXRlc3Q=
上記のAuthorization
行にブラウザが保持した認証情報が保存され、Basic認証のログイン情報が記録されている。
dGVzdHVzZXI6bmluc3lvdXRlc3Q=
をBase64でデコードすると、
testuser:ninsyoutest
.htpasswd
に記入したBasic認証のログインIDとパスワードを解析できる。
逆説的に、Basic認証にログインしたブラウザのヘッダーリクエスト情報を見れば、ログイン情報を取得できてしまう。
具体的な危険性とは
ブラウザに認証情報が残留する現象について理解できたが、これらによりどんな脆弱性・危険性が考えられるのだろうか。
- ブックマークにIDのとPWが残り見られてしまう
- アクセスログにIDのとPWが記録されてしまう
- サーバ側で漏洩を幇助してしまう理由として、ブラウザがリクエストを生成する際にRefererヘッダに遷移元のURLを付与してしまう