今回の元記事は、StrixがDoD(米国防総省)向けの契約企業のシステムで、マルチテナントの認可(authorization)に関する脆弱性を見つけた、という話です。
まず用語をかんたんに言うと、マルチテナントとは「1つのシステムを複数の顧客が共同で使う仕組み」のことです。たとえば、A社とB社が同じサービス基盤を使っていても、A社のデータはA社だけ、B社のデータはB社だけが見られる必要があります。
ここで重要なのがauthorization(認可)です。認証(authentication)が「あなたは誰?」を確認するのに対して、認可は「その人に、このデータを見る権限があるか?」を判断します。
今回問題だったのは、まさにこの認可まわり。
つまり、本来見えてはいけない別テナントの情報が見えてしまう状態だったわけです。これはかなり嫌な種類のバグです。ログイン画面を突破しなくても、正規ユーザーとして入ったあとに他人のデータが見える、というのが厄介なんですよね。見た目は普通に動いているように見えるので、発見も難しいし、被害も大きくなりやすい。個人的には、こういう「表面上は正常に見えるのに中身が危ない」タイプの問題がいちばん怖いと思います。
さらに記事の説明では、zero tenant isolation、つまり「テナント分離が実質ゼロ」と表現されています。
これはかなりインパクトのある言い方で、要するに「顧客ごとの壁がほぼ立っていなかった」という意味合いです。もしこれが本当なら、SaaSやクラウドの基本中の基本が崩れていたことになります。便利な共有基盤を作るとき、コスト削減や運用効率に目が行きがちですが、最優先で守るべきなのは“隔離”です。ここを落とすと、サービス全体の信用が一気に吹き飛びます。
この手の脆弱性が特に深刻なのは、対象が軍事訓練データだったとされている点です。
軍事関連データは、一般的な個人情報よりもさらに慎重に扱う必要があります。訓練内容、運用の手順、組織の構造、関係者の情報などが含まれる可能性があるからです。そうしたデータが外部から見えてしまうなら、単なる「漏えい」で済まないリスクもあります。
もちろん、元記事の短い抜粋だけではどこまでのデータが見えたのかは断定できません。ですが、少なくとも「軍事訓練データが露出していた」という説明がある以上、かなり緊張感のある事案だったのは間違いないでしょう。
ここは本当に、セキュリティの世界でよく言われる「impact(影響範囲)」の大きさがそのまま問題の深刻さにつながる例だと思います。
記事では、responsible disclosure timeline が5か月だったとされています。
responsible disclosure とは、脆弱性を見つけた側が、いきなり公表して混乱を招くのではなく、まず対象組織に通知し、修正の時間を与えたうえで公開する考え方です。セキュリティ界隈ではかなり大事な慣行です。
ただ、5か月という期間を聞くと、私は「けっこう長いな」と感じます。
もちろん、実際には修正の難しさ、調査、社内調整、再現確認など、いろいろな事情があるはずです。なので単純に遅いと責める話ではありません。とはいえ、機密性の高い環境での脆弱性対応は、のんびりしていると危ないのも事実です。特にDoD関連のようなケースでは、影響が大きいぶん、対応の優先度も高くあるべきではないかと思います。
この事例で一番大事なのは、「認証できること」と「安全にアクセスできること」は別問題だという点です。
多くの人は「ログインできるなら安全」と思いがちですが、実際にはそこから先の権限管理が本丸です。
たとえば、
こうした部分をちゃんと見ないと、マルチテナントの設計はすぐに崩れます。
また、クラウドサービスやSaaSを作る側にとっては、「権限チェックはUIではなくサーバー側でやる」ことが大切です。画面上で見えないようにするだけでは不十分で、APIやバックエンドのレベルで厳密に止めなければなりません。ここを省くと、ちょっとした抜け道から情報が漏れてしまう。セキュリティはやっぱり地味で、地味だけど、そこをサボると致命傷になるのが面白くもあり、怖くもあります。
個人的には、この件は「マルチテナント設計の難しさ」がそのまま出た話だと思います。
単一ユーザー向けのシステムなら見なくていい問題が、複数顧客を扱うと一気に難しくなる。しかも相手がDoD関連なら、要求される水準は相当に高いはずです。
そして、Strixのようなセキュリティ企業がこうした問題を見つけて公開する流れは、かなり意義があると思います。
もちろん、脆弱性の発見は複雑で、関係者にとっては痛手でもあります。でも、こういう事例が表に出ることで、他の企業が「うちは大丈夫かな?」と見直すきっかけになる。セキュリティは、事故が起きてからでは遅いですからね。
結局のところ、この話は単なる「バグ発見談」ではなく、クラウド時代の基本原則を思い出させる事例だと思います。
便利さの裏側で、データの境界線をどう守るか。そこにこそ、本当の難しさがあります。
参考: Securing a DoD Contractor: Finding a Multi-Tenant Authorization Vulnerability - Strix