J-STAGEがFirefoxでのアクセスを遮断、日本の電子ジャーナルが世界から不可視となった日
科学技術振興機構(以下JST)の運営する「J-STAGE」は、国立情報学研究所が運営する「CiNii」と双璧を成す、日本の電子ジャーナルプラットフォームである。それが2018年12月12日、Firefoxからのアクセスが不可能となった。
試しにFirefox 64でアクセスしてみたところ、確かにページ読み込みエラーとなり、コンテンツを表示することができなかった。サーバ証明書のエラーではないため例外を許可して続行することもできない。完全にFirefoxでのアクセスが遮断された格好だ。
翌日13日になってTwitterで原因の考察が始まり、J-STAGEの対応する暗号スイートに問題があることが判明する。
原因はJ-STAGEのTLS仕様違反
J-STAGEはセキュリティ強化のため、2018年12月12日にTLS 1.2への切替とTLS 1.0/1.1の無効化を行うことを予告していた。これが影響している可能性が高い。
早速、SSL Server Test (Powered by Qualys SSL Labs)でJ-STAGEのHTTPS接続仕様を確認する。
気になるのは"Cipher Suites"(暗号スイート)の少なさ。いずれもFoward Securityに対応していないため暗号強度が"WEAK"(弱い)となっているが、アクセス不能とは別件なので横に置く。
これだけではわかりづらいので、現時点でアクセス可能だったJSTのHTTPS接続仕様も比較してみる。
JSTのWebサーバではTLS 1.0/1.1がまだ無効化されていないほか、FirefoxはTLS 1.2の"TLS_RSA_WITH_AES_256_CBC_SHA"で接続できている。J-STAGEとの違いはここだ。
12日にJ-STAGEのTLS 1.0/1.1を無効化した際に、この暗号スイートも無効化してしまったことで、WebサーバとFirefoxで合致する暗号スイートが存在しなくなり、アクセス不能となったのではないだろうか。
こうした事態を防ぐため、使用可能な暗号スイートが合致しなかった場合の最後の砦としてTLS 1.2において必須扱いとなっている暗号スイートがあるのだが、JSTとJ-STAGEのいずれもこれに対応していないのが根本的な原因だ。
9. 必須 Cipher Suites English
別途、規定しているアプリケーションプロファイル標準が存在しない場合、TLS 準拠アプリケーションは、TLS_RSA_WITH_AES_128_CBC_SHA という cipher suite を実装しなければならない(MUST)(定義については Appendix A.5 を参照)。
元々がTLS仕様に準拠しない綱渡りで運用していたところに変更を加えたのがトリガーとなって問題が顕在化したというべきだろう。
入札情報までは漁ってはいないが開発・保守担当会社は激詰め必死である。
証明書ハッシュとHMAC
なぜTLS 1.0/1.1の無効化に付随して、大して危険でもない暗号スイートを無効化してしまったのかという疑問がある。
これは「もはや危険と言われているSHA-1を含む暗号スイートは無効化しておこう」という誤った知識によるものではないか、というのが私の見立てだ。
どうにも世間では混同されがちのようだが、証明書ハッシュに使われるSHA-1はすでに危殆化している(危険を孕んでいて安全ではない)ものの、暗号スイートのHMACに使われるSHA-1は現在のところ十分に安全である。
「事故」ではなく「故意」
問題なのは、これがただの無見識による「事故」ではないということだ。
意図的にFirefoxからアクセス不能となるようシステム改修したのかは定かではないが、結果としてFirefoxからアクセス不能となる可能性を認識しながら、それを看過して改修を実行することは「未必の故意」と呼べる。
TLS 1.2で必須の暗号スイート対応が抜け落ちたことは「事故」として修正対応するにしても、推奨外環境からアクセス不能となったことは「故意」なのだから修正対応の必要はないと言い出しかねない。
今回は偶々J-STAGE側のTLS仕様違反が明らかで責任追及が容易だったが、双方の実装に原因があるような推奨外環境との相性問題が発生した場合、それが修正対応される保証はない。
J-STAGEの推奨環境
ここで言う推奨外環境とは、Firefoxのことだけではない。J-STAGEのPCでの推奨環境は次の3つだが、いずれも数年前のバージョンだ。
・Windows 7 + IE 11
・Windows 7 + Chrome 45.0
・Mac OS X + Safari 10
Windows 10は勿論のこと、Edge、Chrome 最新版(現在は70)、Safari 最新版(現在は12)など、シェアにして合計8割以上のブラウザがJ-STAGEでは推奨外環境である。
「開発当時のままページ更新を忘れているのでは?」と思った貴方、実は今年の11月12日時点では「Safari 6.1」だったのが翌週の11月19日には「Safari 10」に書き換えられている。つい先月更新された上でこのバージョンなのだ。
もし、今後のChromeやSafariの更新でJ-STAGEにアクセスできなくなったら(TLS 1.2準拠違反で脆弱な暗号スイートを使う限り、将来そうなる可能性は否定できない)、推奨環境の古いブラウザバージョンを利用者に強制するのだろうか?
推奨ブラウザは悪い文明?
場合によっては、著作権保護や電子入札のためSilverlightやJavaといったプロプラ技術を利用し、特定のブラウザを推奨しなければいけないこともある。しかし、J-STAGEはそうではない。
特定の技術に依存せず、多くのファイルフォーマットで提供し、多言語に対応し、あらゆる国からのアクセスを受け入れ、オープンアクセスジャーナルとして科学技術の振興に貢献する、そういう理念のはずだ。
J-STAGEの担当者にはMozilla Japan ブログを100万回読み直してほしい。
例えばドイツでは Chrome よりも Firefox の方が多く使用されています。
利用者はブラウザーを変えません。そのサイトを使うのをやめます
どんな人でも、使用しているブラウザーや、使用している端末が異なっていても、コンテンツにアクセスできる、というのがウェブ本来の使命です。
J-STAGEがFirefoxを推奨環境から外している理由は定かではない。元々公的機関では冷遇されがちではある。Mozillaの認証局審査に撥ねられ世界中の笑い者になったGPKIのroot証明書がバンドルされていないことも間接的に関係しているのかもしれない。
しかし、だからといってこんなことを続けていては、日本の電子ジャーナルはいよいよ世界から不可視となってしまう。システムの保守・運用を行うということは、最新版のメジャーなOSとブラウザでの動作を保証し続けるということだ。そのために安くない委託費をSIerに支払っているはずである。
学術振興を守るために
これが政府機関であれば「政府機関等の情報セキュリティ対策のための統一基準」違反を理由に是正を要求できるのだが、独立行政法人であるJSTは個別にセキュリティポリシーを定めている。一般的には次のような文言が含まれているはずだが、非公開なので実際のところは不明だ。
提供するアプリケーション・コンテンツの利用時に、脆弱性が存在するバージョンのOSやソフトウェア等の利用を強制するなどの情報セキュリティ水準を低下させる設定変更を、OSやソフトウェア等の利用者に要求することがないよう、アプリケーション・コンテンツの提供方式を定めて開発すること。
電話で取材を試みようと思ったが、問い合わせ先の電話番号は公開されていなかった。この状況を是正するには、J-STAGE閲覧者フィードバックページから意見を送るしかないようだ。
なお、Firefox利用者はこのページにアクセスできないため意見を送れないというオチが付く。
18:00 追記
13日の15時半頃には仮復旧でFirefoxからのアクセスが可能となったようだ。と言うのも、とりあえずTLS 1.0/1.1無効化前の状態にロールバックしただけで、後日もう一度作業が行われると思われる。
その際には推奨環境、TLS設定、暗号スイートが適正なものか、しっかり見届けなければならない。
本noteへの反応
本noteに言及したWebサイトやコメントは次の通り(随時追加)。