中国のドローンメーカーDJIは、同社のHTTPS証明書の秘密鍵をGitHubで最大4年間公開したままにしていたと、業界のバグ報奨金制度を断念した研究者が明らかにした。
DJI はまた、飛行ログから政府発行の ID カードのコピーに至るまで、顧客の個人情報を、誤って設定された AWS S3 バケットからインターネットに公開しました。
DJIは、*.dji.com をカバーするワイルドカードSSL証明書の秘密鍵を漏洩したことで、メーカーのウェブサイトを偽装し、正しいHTTPS証明書を使って偽装インスタンスを作成するために必要な情報を悪意のある人物に提供しました。そして、標準的な中間者攻撃によって、被害者を悪意のある偽サイトやダウンロードサイトへ密かにリダイレクトすることができました。ハッカーは、この鍵を使用して、DJIのウェブサーバーとの間で傍受したネットワークトラフィックを復号化し、改ざんすることもできました。
かなり恥ずかしいですね。DJIは世界最大級の中小型ドローンメーカーの一つです。
このSSL秘密鍵は、DJI製品を専門とする研究者ケビン・フィニスター氏によって、DJIが所有するGitHubの公開リポジトリで発見されました。AWSアカウントの認証情報とファームウェアのAES暗号化キーもGitHub上で公開されていたと伝えられており、公開されているAWS S3バケットの設定が不十分だったユーザーの機密性の高い個人情報も含まれていました。フィニスター氏はこれを「インフラ全体の侵害」と総括しています。DJIはその後、影響を受けたHTTPS証明書を失効させ、9月に新しい証明書を取得しました。
「暗号化されていない飛行ログ、パスポート、運転免許証、身分証明書を見ました」とフィニステレ氏は述べ、さらにこう付け加えた。「新しいログとPII(個人識別情報)は静的なOpenSSLパスワードで暗号化されているように見えるため、理論的には一部のデータは少なくとも詮索好きな目から緩く保護されていたことに留意すべきです。」
今年初め、米陸軍はDJI製品の使用を全面的に禁止しました。理由は「サイバー脆弱性」という具体的な理由以外、明確にされていませんでしたが、オーストラリア軍もすぐにこれに追随しました。イギリスの複数の警察部隊も、ヘリコプターの代わりにDJI製ドローンを運用しています。
フィニステレ氏はEl Regのインタビューで、SSL 秘密鍵は「私の記憶では 2 ~ 4 年間 GitHub 上に放置されていました。誰が入手したのかは分かりません」と述べ、次のように続けた。
本日、フィニステレ氏はTwitterに18ページのPDFを投稿し、セキュリティ上のミスを報告するためにDJIの米国担当者と数ヶ月にわたって協力してきた経緯と、その成果と不満をまとめた。彼はDJIに非公開でミスを報告した後、同社のバグ報奨金制度に応募した。
DJIは原則として「最高額の報奨金」である3万ドルを支払うことに同意していたが、同社が報奨金受取人全員に署名を求めていた秘密保持契約の条件をめぐって両者は激しく対立し、最終的にフィニステレ氏は我慢の限界に達してすべての詳細を公表し、実質的に3万ドルを無駄にすることになった。
同ドローンメーカーは、DJIのシステムを調査し、米国のコンピューターハッキング法に違反した可能性があると、ほのめかすような脅しも同氏に警告した。
DJIのバグ報奨金NDAは「署名できない」と情報セキュリティ研究者が激怒
続きを読む
DJIはセキュリティ上の不備を認め、「問題の評価と今後の対応を管理するために第三者の調査会社を雇った」と語った。
英国サリー大学のコンピュータセキュリティ専門家、アラン・ウッドワード教授はEl Regに対し、「誰かが自分の秘密鍵をうっかりGitHubに投稿したのは今回が初めてではありません。ハードコードされた秘密鍵を必要とするコードを書いた場合、それは常に王冠の宝石のように扱われるべきものです。それをウェブ上で公開することは、まさに落とし穴です」と語った。
セキュリティ研究者のスコット・ヘルム氏は、「根本的な問題は、鍵にアクセスできれば攻撃者がDJIの証明書を利用できるということです」と付け加えた。また、失効した証明書は*.dji.com向けに発行されており、DJIのセキュリティ報告センターがあるsecurity.dji.comを含むすべてのサブドメインをカバーしているという事実も指摘した。
ヘルメ氏はさらに、取り消された証明書は、DJIのウェブサイトとの間の傍受されたウェブトラフィックを、2018年6月5日午前10時(UTC)の有効期限まで復号化するために使用できる可能性があると付け加えた。ヘルメ氏は以前、一般的なウェブブラウザがオンライン証明書ステータスプロトコル(OCSP)を介して証明書の失効を処理する方法に欠陥があり、リコールされた証明書がブラウザによって依然として信頼されてしまう可能性があるとブログで述べている。さらに、「証明書を使用できる立場にある人は、失効チェックを停止することもできるため、ブラウザは証明書が失効しているにもかかわらず、その証明書を受け入れることになる」と付け加えた。®