KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

エンジニア向け転職支援サイトの情報漏洩における不信感について

エンジニアに特化した転職支援サイトであるFowkwellで登録されている「氏名」が特定期間で一般閲覧できる状態であると報告がありました。

ネットの反応を調べて見ましたが違和感を感じたので所感を表明したいと思います。

全会員向けのメール

以下、9月18日の19:16に受信したForkwell全会員向けの案内メールです。

※「本件に関するお問い合わせ先」は削除、「ITエンジニアの方に向けてより詳細な情報」は後述


◯◯◯◯ 様

平素より Forkwell をご利用いただきまして誠にありがとうございます。 Forkwell 事業部の責任者を務めております赤川と申します。

表題の件に関しましてお詫びとお知らせがございます。 先般、弊社がエンジニア向けに運営するポートフォリオサービス「Forkwell Portfolio(以下、「本サービス」といいます)」において、本サービスをご利用の皆様の個人情報の一部(氏名)が一般に閲覧できる状態になっていることが判明いたしました。 すでに、影響があったユーザーへは個別にご連絡しており、下記のとおり対策を講じておりますが、上記に該当しない全ての Forkwell ユーザーにご説明する責任があると考え、これまでの経過をご報告いたします。 事前にご案内を受信済みの方には、重ねてのご連絡となり申し訳ございません。

なお、本件の原因は既に特定して対応も完了しております。エンジニアの皆様に多大なるご迷惑、ご心配をおかけいたしますこと、深くお詫び申し上げるとともに、今回のことで得た教訓を糧に本サービスの改善を重ね、加えて更なる利便性の向上を図ってまいります。

  1. 経緯  弊社では本サービスの利便性を高めるための機能改善を継続的に行っておりますが、2019年7月26日(金)18:00に「UX向上を目的としたプロフィール編集画面のSPA化」を行う際に、プロフィール公開範囲の機能に不具合が混入し、プロフィール項目のうち、「氏名」「氏名(英語)」の公開範囲が「求人企業のみ閲覧できる」と設定してあっても、本サービスを閲覧される一般ユーザーに閲覧できる状態となっていることが利用者からの情報提供により発覚いたしました。2019年8月14日(水)15:00に情報受領後、調査のために同日15:38に本サービスをメンテナンスモードに切り替え、原因を特定して設定を変更し、同日18:16に対応を完了しておりました。  この時点でプロフィールがアクセスされたと判断したユーザーへは翌日8月15日に案内をお送りし、その後も二次被害防止に向けてユーザーからの情報提供の受付、及び自社での調査を継続しておりました。その後、弊社がプロフィールにアクセスされていないと判断していたユーザーから、9月14日(土)06:08に情報提供を受けて調査を行ったところ、既に案内したユーザー以外にも実名がGoogleのキャッシュで閲覧できる状態にあることを確認いたしました。同日10:39に情報受領後、原因を特定して Google にキャッシュの削除を申請し、同日16:38にキャッシュの削除を完了しております。  また、問題が生じた期間中のアクセスログを分析し、期間中に訪れたクローラーが収集した情報を一般公開している可能性があるサイトに対して削除申請を行いました。  並行して、情報漏洩の観点から相応の知見を有する社外協力者の支援を仰ぎ、第三者視点から情報漏洩に係る当社の調査手法につきレビューを実施しました。 現在、Forkwell からの報告をご覧になった方が、インターネット検索した際に他人の個人情報を得る手段がないことが確認できております。  なお、氏名の公開範囲については、8月14日(水)時点で、ユーザーが任意に氏名の公開を指示されない限り一般に個人情報を閲覧されることがないように修正されております。

  2. 個人情報がインターネット上で閲覧可能になったユーザー  2019年7月26日18:00〜8月15日18:16の間に本サービスのプロフィールにブラウザ、またはクローラーからアクセスがあったユーザー 最大5441名

  3. 閲覧された可能性のある個人情報  氏名(日本語・英語)

  4. 再発防止策 ・システムの開発から本番環境への移行までの一連のプロセスにおいて、第三者の視点を複数入れること、および個人情報に関わる範囲のテストを充実させることで、こうした情報の漏洩を未然防止できる体制を再構築いたします。

・弊社では、個人情報の取扱いにつき規程を整備し、その運用の徹底を図っておりますが、今回の漏えいを受け、個人情報保護及び情報セキュリティに関する教育内容を再検討し、全社的な情報管理体制の一層の強化に取り組んでまいります。

  1. 今後の対応について

(1)お客様対応 流出した可能性のある全てのお客様に対し、お詫びと経緯のご説明・二次被害の注意喚起のご案内をご案内させていただいております。

ご案内がなかった方の中でも、本件に関して少しでも気になる点がございましたら、責任を持って対応いたしますので、下記の問合せ窓口までご連絡いただきますよう、御理解と御協力のほど宜しくお願い申しあげます。

(2)継続調査 二次被害防止を最優先事項とし、社内社外の関係者を含めて調査と議論を進めております。

(3)プロダクト改善 調査段階において、生成したプロフィールがユーザーの意図に沿わず検索エンジンのクローリング対象となるケースが想定されました。そのため、9月17日(火)に、生成したプロフィールを検索エンジンのクローリング対象としないように設定できる画面への導線とヘルプページを強化いたしました。 今後も継続的に、当該設定画面への更なる導線やデフォルト設定の見直しを進めて参ります。


ITエンジニアの方に向けてより詳細な情報

メールの続きにはITエンジニア向けの詳細な経緯が記載されていました。*1


  • 2019年7月26日(水)
    • 18時00分 問題となるコードがリリースされる
  • 2019年8月14日(水)
    • 15時02分 ユーザー(Aさん)から情報を頂く
    • 15時15分 開発チームにて共有。原因究明でバグが発覚し、直ちに修正作業へ
    • 15時30分 事業責任者(赤川)主導で対策へ
    • 15時38分 赤川指示により、Forkwell Portfolioをメンテナンスモードへ切り替え開始
    • 16時12分 社内にて他部署も含めた緊急対策本部を設立
    • 16時22分 開発陣によりプログラムの修正、レビューを実施
    • 16時40分 問い合わせに対するバグの修正が完了
    • 17時20分 メンテナンスモードの状態で類似するバグが生じていないか確認
    • 18時16分 メンテナンスモード解除し、復旧
    • 18時38分 影響を受けたユーザーの調査のため、アクセスログの分析を開始
    • 22時30分 夏季休暇中のエンジニアもオンラインMTGに加わり、再度情報共有。影響範囲の特定をしつつ、ユーザーへの案内を作成。該当ユーザーへのメールを管理部にて準備。
      • また、アクセスログを分析した結果、問題が生じた期間中に、氏名が公開されたユーザーへの横断的なアクセスや、特定個人に対する複数回のアクセスがないことを確認
    • 23時00分 緊急対策本部にて当日の振り返りと翌日の予定を確認
  • 8月15日(木)
    • 09時00分 影響範囲の調査を再開
    • 10時30分 緊急対策本部での情報共有
    • 12時30分 調査結果を集計
    • 12時59分 影響を受けたユーザーを820名として特定(非ログインユーザーも含まれるため、誰が閲覧したかは不明)
    • 16時30分 対象となるユーザー向けへの案内を赤川にて執筆
    • 20時12分 上記ユーザーへメールを送信
  • 8月16日(金)〜 
    • 複数ユーザーからのご連絡を元に情報収集、および二次被害が起きていないかの調査継続
  • 2019年9月14日(土)
    • 06時08分 上記の820名に該当しないユーザー(Bさん)から情報提供を頂く
    • 10時39分 事業責任者(赤川)にて対策チームを招集し調査を開始
    • 12時00分 緊急対策チームでのキックオフMTGを実施、前回の調査においてクローラーの影響度を見誤っていたことを認識
    • 12時31分 Googleのキャッシュ削除方針に関する検討を開始
    • 12時40分 portfolio.forkwell.com/@, portfolio.forkwell.com/en/@ のすべてのページのキャッシュを削除することを決定
    • 12時48分 portfolio.forkwell.com/@, portfolio.forkwell.com/en/@ のキャッシュ削除申請完了
    • 14時22分 他に当該期間の情報を保持している可能性があるサイトを調査
    • 15時25分 Bing(Microsoftが運営する検索エンジン)のキャッシュ削除申請
    • 16時00分 影響を受けたユーザー数の調査を再度開始
    • 16時38分 Googleのキャッシュ削除を確認
    • 17時58分 影響を受けたユーザー数が最大で5441名となる可能性を確認*2
    • 19時17分 Googleにクローリング申請
    • 20時59分 Yandex(ロシアの検索エンジン)のキャッシュ削除申請
    • 21時45分 Bingのキャッシュ削除を確認
  • 9月15日(日)
    • 10時00分 MTGを実施し、調査を継続
    • 10時36分 クローラーの幅出しに関する議論開始
    • 12時12分 クローラーの調査対象を306件まで特定
    • 14時15分 社外のエンジニア数名に調査方針についてレビューを依頼
    • 15時00分 MTGを実施し調査を継続、Yandexのキャッシュ削除を確認
    • 18時04分 プロフィールの公開範囲に関する仕様の見直しと改善方法の検討開始
    • 19時00分 MTGを実施し、調査を継続
  • 9月16日(月祝)
    • 10時00分 MTGを実施し、調査・仕様検討を継続
  • 調査内容
    • UserAgent を解析しクローラーを分類
    • 上記から検索エンジンの割り出し、キャッシュを公開していないか確認、公開している可能性があったサイトに対しては削除申請を実施。
    • キャッシュを公開していた検索エンジンは、Google、Bing、Yandexの3種、インデックスのみでキャッシュを公開していないサイトは Cliqz、Daum、so.com、Sogou、Qwant、Naver、Omgili の7種。
    • 検索エンジン以外のクローラーを個別調査
    • 上記で検知できたクローラーとは別に、国内外の代表的な検索エンジン、及び魚拓サイトを調査
  • 9月17日(火)
    • 09時15分 MTGを実施、ユーザーへの案内方針決定
    • 15時23分 プロフィールのクローラー受け入れ設定に関するヘルプページの作成とサイト内への導線追加完了
    • 20時05分 Forkwell Jobsのユーザー管理画面から上記ページへの導線を強化
  • 9月18日(水)
    • 10時00分 ユーザーへのご案内に向けて最終調査
    • 18時45分 対象となった5441名へご報告のメールを送信
    • 19時00分 Forkwell の全会員を対象にメールを送信
  • 9月18日(水)〜
    • ユーザーからの情報収集、および二次被害防止に努め、第三者も含めた調査を継続実行します
    • Google のクローリングが完了次第、インデックスを再開の申請をします

所感

私がこの中で注目したのは9月17日のユーザーへの案内方針を決定したというミーティングです。8月14日の段階でバグが判明していたのでバグ修正や影響調査で数日掛かるのは仕方ないとしても全会員への発表(9月18日)までに1ヶ月以上経過しています。また、キャッシュを見落としていたということで案内がなかった別のユーザー指摘でようやく全会員への報告に至っています。

漏洩したのが氏名だけで致命的な情報漏洩ではないと(勝手に)判断して全会員への報告を怠ったのでしょうか。氏名だけでも珍しい名前の人とかは充分に個人を特定できる個人情報だと思うのですが。

私個人の思想としては個人情報に過敏に反応してテクノロジー(特にアナリティクスの分野)の発展が阻害されるのは好ましくないと思っています。とはいえ、転職サイトで自分の名前がパブリックに公開されるのは都合が悪い人も多いと思います。

今回の事例であれば8月15日の一時調査が完了し、影響のあったユーザーへの報告と同時に全会員へ通知を行うべきだったと思います。名前を知られたくない人はその段階で対応することができたかもしれないし、キャッシュに気づいた人もいたかもしれません。

f:id:masayuki_kato:20190920122118p:plain

私もこの方と同意見です。

しかしインターネットで調べてもこの方以外のネガティブな情報が1件も検索できないのが不思議です。

*1:トラブルが発生したときに「障害報告書」とか書いて偉いさんに提出するようなやつ

*2:私はこの5441名に含まれていたようです