Skip to content

Instantly share code, notes, and snippets.

@michitomo
Last active August 24, 2023 14:41
Show Gist options
  • Save michitomo/124396173cb8bcf5b0d72e1ca6cf2ed2 to your computer and use it in GitHub Desktop.
Save michitomo/124396173cb8bcf5b0d72e1ca6cf2ed2 to your computer and use it in GitHub Desktop.
ABABA 個人情報漏洩

ABABA 個人情報漏洩

前置き

  • ABABAは就活生と企業をマッチングするプラットフォームである。
  • 企業から就活生側にスカウトが届く仕組みになっている。
  • 対外的なユーザとしては、企業ユーザと学生ユーザが存在する。

経緯

  • 自分のアプリをノーコードプラットフォーム「Bubble」で開発していた。
  • Bubbleは設定ミスによる個人情報漏洩が発生しやすい設計であることに気づいた。
  • 既存のBubble製アプリは適切に設定されているだろうと思いつつも念のため確認したところ、漏洩していた。

問題1.1. データベースの内容が誰でも取得可能

Bubbleの仕様

  • BubbleはノーコードでWebアプリを開発できるプラットフォームである。
  • Bubbleでの開発において、コーディングだけでなく、インフラ・データベース・バックエンド・フロントエンドの分離等の意識は不要である。
  • しかしながら、Bubbleで作られたアプリはデータベース・バックエンド・フロントエンドがユーザのUI上での入力内容に応じて設定される仕組みになっている。
  • したがって、適切な権限が設定されていなければ、バックエンドのAPIや、そのAPIが呼んでいるデータベースを直接呼び出すことで、データの取得が可能である。

ABABAの問題点

  • データベースの内容取得にあたり、一切の権限設定が行われていなかった。
  • そのため、ログインせずとも、個人情報が取得可能であった。

漏洩していた情報

2021年9月末日ごろまで(開始日不詳)

認証なしで取得可能だった情報

  • 企業側担当者の情報
    • 企業名
    • 人事担当者名
    • 人事担当者写真
    • 人事担当者電話番号
    • 人事担当者メールアドレス
    • その他、従業員数・創業年月日等の公開情報
  • 学生の情報
    • 氏名
    • メールアドレス等

再現手順

  1. ブラウザからBubbleで動作しているABABAのサイトに接続する(必要なJavaScriptライブラリをロードさせる)
  2. ローカル環境でJavaScriptを実行し、/elasticsearch/msearchをロードする
  3. JSON形式で情報が取得できる

問題1.2. データベースの権限設定が不適切

ABABAの問題点

  • 権限設定が不適切だった。
  • 学生としてログイン済みのユーザであれば、他のすべての学生のデータも取得できる設定になっていた。

再現手順

  • 問題1.1.の再現手順に加え、リクエストに認証情報を含むCookieの付与が必要。

漏洩していた情報

2023年7月7日ごろまで(2021年9月にも存在していたと推定されるが継続性は不詳)

学生ユーザとして仮登録状態で取得可能だった情報

  • 学生の情報
    • 氏名
    • メールアドレス
    • 電話番号
    • 卒業大学名
    • 卒業高校名
    • 自己PR文
    • その他

問題2. データ取得APIが公開設定になっている

Bubbleの仕様

  • Bubbleには、WebアプリをAPI化する仕組みが搭載されている。
  • API化できる対象は、データベースとバックエンド処理(Workflow)である。
  • データベースをAPI化した場合、REST準拠のエンドポイントが自動生成される。
  • 設定によっては、Swagger-UIも自動生成される。
  • 権限は以下のように取り扱われる
    • 各エンドポイントにアクセスする際、Cookieを付与できる。
    • そのCookieのユーザとしてCRUD処理が実行される。
    • 実行可能な処理はPrivacy Rulesで設定されている内容に従う。

ABABAの問題点

  • Data APIが公開設定になっていた。
  • 2021年9月27日時点では、権限設定が行われていなかった。
  • URLへのGETリクエストで、問題1.1.に記載した内容の取得が可能であった。

再現手順

漏洩していた情報

  • 問題1.1.と同じ

メモ

Privacy Rulesのデフォルト設定が安全ではない

また、Bubbleの標準状態の仕様にも留意点がある。ユーザのデータは、標準で以下のように自分のデータしか閲覧できないような設定になっている。

image

一方、ユーザが定義したデータ型(テーブル)に関しては、デフォルトだと一切セキュリティの設定がない。

image

Data APIを有効にしようとした際の警告

BubbleでData APIを有効化しようとすると、以下のような警告が表示される。問題2については、表示される。しかし、情報の漏洩はData APIを公開することによって発生するのではなく、不適切な権限設定に起因するものである。

image

上記の警告から受ける印象として、Data APIを公開していなければ情報漏洩のリスクがないかのように受け取り得る。実際には、Data APIを公開していなくても、問題1に挙げた方法でデータベースへの直接アクセスが可能である。

推奨されるPrivacy Rulesの設定

Bubbleにおいて、個人情報等を補完する場合に適切なPrivacy Rulesの設定は以下のようになると思われる。

image

ログがない

  • 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月末をめどに情報開示する旨を通知
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment