NDL-OPACの「利用者情報更新」で、個人情報を暗号化せずに自動送信していた

公開日:

国立国会図書館で利用者登録(www.ndl.go.jp)を行った利用者は、ウェブ上で複写申し込みのほかにパスワードや電話番号などの変更処理ができます。

これはNDL-OPAC(opac.ndl.go.jp)のページから行うのですが、セキュリティ上の注意が必要なうえ、先日まで個人情報が盗み見られる危険性がありました。私が見つけた2つの脆弱性のうち、より危険度の高い方は先日修正されたのですが、公式発表がないようなので詳細を書いておきます。

技術的に面白いネタはありませんので、悪しからず。一言でいえば、「個人情報を暗号化せずにhiddenで受け渡していた」というだけの単純な話です。

ログインページを表示する

まず、NDL-OPAC(opac.ndl.go.jp)の最初のページを表示します。

図拡大
図1:NDL-OPACのトップページ

ページの左側にIDとパスワードの入力欄があり、その下に「利用者情報の更新」ボタンがあります。なお、URLは http://opac.ndl.go.jp/index.html です。

利用者登録を行う際に渡された『利用者登録をされた皆様へ』という冊子では、ここでIDとパスワードを入力するように指示していますが、URLをみて分かるようにSSL/TLSによる暗号化がなされていません。パスワードが盗み見されて第三者にログインされると、後述するように氏名や住所などの個人情報が丸見えになってしまうので、ここは慎重にサーバー証明書を確認したいところです。

念のため国会図書館に問い合わせたところ、こんな返事をいただきました。

NDL-OPACの最初の画面は、以下のURLからご利用いただくことも可能です。こちらのページではサーバ証明書をご確認いただけます。

https://opac.ndl.go.jp/

当館では、NDL-OPACの最初のページとして http:// のアドレスを現在ご案内しておりますが、今回頂戴したご意見を今後のご案内方法やシステムの改善に生かしていきたいと思います。

ログインしてみる

さて、案内されたURL(opac.ndl.go.jp)でIDとパスワードを入力後、「利用者情報の更新」ボタンを押すと、次のような画面になります。

図拡大
図2:NDL-OPACの利用者情報更新画面

ページ上部には氏名や住所などウェブ上では修正できない情報、下部にはパスワードや電話番号など修正可能な情報が表示されます。

ここで何も変更せず「キャンセル」を行うと、個人情報が勝手に暗号化されていないコンテンツへ送信されてしまうという状況になっていました。

何が起こっていたのか

「キャンセル」ボタンを押すと元のログインページに戻るのですが、実は次のような順序でリダイレクトが行われています。

  1. ボタンを押下すると、 https://opac.ndl.go.jp/Process に対して電話番号やメールアドレスを含んだ状態でPOST送信を行う。
  2. さらに http://opac.ndl.go.jp/Process に対して、同じく電話番号などを含んだ状態でPOST送信を行う。この処理はJavaScriptが有効な環境では自動で行われるので、利用者の多くは気付かないはず。
  3. ログインページが表示される。

問題なのは2番目の処理で、電話番号とメールアドレス(FAX番号の登録者はそれも?)が暗号化されていないコンテンツへ自動送信されてしまいました。具体的には、hiddenコントロールの値(value属性)に電話番号やメールアドレスが入っていました。

図拡大
図3:2回目のPOST送信時のHTMLソース

コントロール名「TL」が電話番号、「EM」がメールアドレスです。「LS」はログイン毎にユニーク(?)な数値が発行されるようで、これは図書館側はともかく、第三者にとって個人情報と紐づけられるものではないと思います。

とはいえ、はっきりしたことは分からないので、念のため「LS」にもモザイクを掛けています。

これらはいずれも隠れコントロールなので画面上は表示されませんが、送信されるデータにはしっかり含まれます。

何が問題なのか

繰り返しになりますが、個人情報を通信経路上で暗号化せず処理していたことです。

これがたとえばログインページであれば、暗号化されていないことが利用者にも分かるので、それで盗聴されてしまっても利用者の責任と言えるかもしれません。ただ今回の事例では、多くの環境では利用者の気付かぬまま勝手に送信されてしまうという点で「脆弱」と判断しました。

通信傍受が可能な環境で「キャンセル」を押したことのある方は、第三者に前述の情報が漏れているかもしれません。

利用者側の対策は?

最初に書いたとおり、この問題は既に修正されており、現在自動送信されるデータは個人情報に該当しない(と思われる)ものだけになっています。ただ、他のコンテンツや他のサイトで同様の問題があるかもしれないので、やはり利用者側でも対策を取っておく方がよいかと思います。

Internet Explorerでは、インターネットオプションの [セキュリティ] → [レベルのカスタマイズ] で「暗号化されていないフォーム データの送信」を「ダイアログを表示する」にすると、同様のコンテンツを表示させた場合に「インターネットへ情報を送信するときに、その情報をほかの人から読み取られる可能性があります。続行しますか?」という警告が表示されるようになります。

図4:IEの警告ダイアログ

重要な情報が送信されないと確認できた場合のみ「はい」を押すようにすれば、安全に利用することができます。ただし、暗号化されていないフォームは全て警告を出してしまうため、たとえば検索サイトで検索するだけでも警告が出てしまいます。ちょっと現実的ではないですね。

一方、Firefoxでは暗号化されたコンテンツで暗号化していない情報を送信しようとした場合のみ警告が表示されるようなので、こちらの方がお勧めな感じです。

図5:Firefoxの警告ダイアログ

もちろん、Firefox以外にも同じような機能を持つブラウザは存在しますが、IEなどそうでないブラウザをお使いの方は、このあたりの設定に気を遣ってみると良いかもしれません。