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を付与してしまう
