- ABABAは就活生と企業をマッチングするプラットフォームである。
- 企業から就活生側にスカウトが届く仕組みになっている。
- 対外的なユーザとしては、企業ユーザと学生ユーザが存在する。
- 自分のアプリをノーコードプラットフォーム「Bubble」で開発していた。
- Bubbleは設定ミスによる個人情報漏洩が発生しやすい設計であることに気づいた。
- 既存のBubble製アプリは適切に設定されているだろうと思いつつも念のため確認したところ、漏洩していた。
- BubbleはノーコードでWebアプリを開発できるプラットフォームである。
- Bubbleでの開発において、コーディングだけでなく、インフラ・データベース・バックエンド・フロントエンドの分離等の意識は不要である。
- しかしながら、Bubbleで作られたアプリはデータベース・バックエンド・フロントエンドがユーザのUI上での入力内容に応じて設定される仕組みになっている。
- したがって、適切な権限が設定されていなければ、バックエンドのAPIや、そのAPIが呼んでいるデータベースを直接呼び出すことで、データの取得が可能である。
- データベースの内容取得にあたり、一切の権限設定が行われていなかった。
- そのため、ログインせずとも、個人情報が取得可能であった。
認証なしで取得可能だった情報
- 企業側担当者の情報
- 企業名
- 人事担当者名
- 人事担当者写真
- 人事担当者電話番号
- 人事担当者メールアドレス
- その他、従業員数・創業年月日等の公開情報
- 学生の情報
- 氏名
- メールアドレス等
- ブラウザからBubbleで動作しているABABAのサイトに接続する(必要なJavaScriptライブラリをロードさせる)
- ローカル環境でJavaScriptを実行し、/elasticsearch/msearchをロードする
- JSON形式で情報が取得できる
- 権限設定が不適切だった。
- 学生としてログイン済みのユーザであれば、他のすべての学生のデータも取得できる設定になっていた。
- 問題1.1.の再現手順に加え、リクエストに認証情報を含むCookieの付与が必要。
学生ユーザとして仮登録状態で取得可能だった情報
- 学生の情報
- 氏名
- メールアドレス
- 電話番号
- 卒業大学名
- 卒業高校名
- 自己PR文
- その他
- Bubbleには、WebアプリをAPI化する仕組みが搭載されている。
- API化できる対象は、データベースとバックエンド処理(Workflow)である。
- データベースをAPI化した場合、REST準拠のエンドポイントが自動生成される。
- 設定によっては、Swagger-UIも自動生成される。
- 権限は以下のように取り扱われる
- 各エンドポイントにアクセスする際、Cookieを付与できる。
- そのCookieのユーザとしてCRUD処理が実行される。
- 実行可能な処理はPrivacy Rulesで設定されている内容に従う。
- Data APIが公開設定になっていた。
- 2021年9月27日時点では、権限設定が行われていなかった。
- URLへのGETリクエストで、問題1.1.に記載した内容の取得が可能であった。
- ブラウザでhttps://ababa.co.jp/api/1.1/meta/swagger.json にアクセスし、データ定義を確認する。
- ブラウザでhttps://ababa.co.jp/api/1.1/obj/user などのURLにアクセスする。
- 問題1.1.と同じ
また、Bubbleの標準状態の仕様にも留意点がある。ユーザのデータは、標準で以下のように自分のデータしか閲覧できないような設定になっている。
一方、ユーザが定義したデータ型(テーブル)に関しては、デフォルトだと一切セキュリティの設定がない。
BubbleでData APIを有効化しようとすると、以下のような警告が表示される。問題2については、表示される。しかし、情報の漏洩はData APIを公開することによって発生するのではなく、不適切な権限設定に起因するものである。
上記の警告から受ける印象として、Data APIを公開していなければ情報漏洩のリスクがないかのように受け取り得る。実際には、Data APIを公開していなくても、問題1に挙げた方法でデータベースへの直接アクセスが可能である。
Bubbleにおいて、個人情報等を補完する場合に適切なPrivacy Rulesの設定は以下のようになると思われる。
- Bubbleでは、データベースへのアクセスに関するログが取得できない。
- 機密性の高いデータを扱うアプリでは監査証跡を取得したいところだが、仕様上実現できない。
- ある程度の規模の個人情報を扱う場合、本当にBubbleでのサービス提供が最善なのか、検討すべきである。
- 2021-09-27 問題2に気づきIPAおよびABABAに「Privacyルール及びAPI設定を見直す」よう連絡
- 2021-11-05 IPA経由で修正完了の連絡を受領
- (多忙だったため修正確認できず)
- 2023-06-05 3万人の学生の個人情報が取得可能であることが判明(問題1.2.)
- 2023-06-06 ABABAに引き続き個人情報が漏洩している旨を連絡
- 2023-06-07 ABABAより修正完了の連絡
- 2023-07-24 ABABAに、7月末をめどに情報開示する旨を通知