Protonは、iOS向けの新しいAuthenticatorアプリにおいて、ユーザーの機密性の高いTOTPシークレットが平文でログに記録されるバグを修正しました。これにより、ログが共有された場合、多要素認証コードが漏洩する可能性がありました。
先週、Protonは新しいProton Authenticatorアプリをリリースしました。これは、Windows、macOS、Linux、Android、iOS向けの無料で独立した二要素認証(2FA)アプリケーションです。
このアプリは、多要素認証のTOTPシークレットを保存し、ウェブサイトやアプリケーションで認証用のワンタイムパスコードを生成するために使用されます。
週末、あるユーザーが現在は削除されたReddit投稿で、iOS版が設定 > ログにあるアプリのデバッグログ内でTOTPシークレットを漏洩していることを指摘しました。
「2FAアカウントをインポートし、バックアップと同期を有効にしました。最初はすべて順調に見えました。ある時点で、エントリのラベルを変更し、アプリを一時的に切り替えた後…」と、アーカイブされた投稿には書かれています。
「戻ってみると、2FAエントリの半分ほどが消えていました。ラベル編集後に起きたのかもしれませんが、100%確信はありません。別の原因かもしれません。いずれにせよ、エラーや警告もなく消えてしまいました。」
「正しいことをしたいと思い、バグレポートを提出しようとしました。その準備中に、アプリが生成したログファイルを開いたところ、軽い不具合から深刻な問題へと変わりました。なんと、ログにはTOTPシークレットが平文で全て記録されていたのです。はい、私のBitwardenアカウントのものも含まれていました。」
別のコメント投稿者は、この漏洩はiOSアプリのコード[1, 2]に起因していると指摘しました。このコードはTOTPエントリに関する多くのデータをparams変数に追加し、その後、アプリでTOTPシークレットを追加または更新するために使用される2つの関数に渡しています。

この処理が行われると、これらの関数はこのデータもログエントリに追加し、TOTPシークレットが漏洩することになります。
ProtonはiOS版のバグを認め、約7時間前にApp Storeでリリースされたバージョン1.1.1で修正したと発表しました。
「シークレットが平文でサーバーに送信されることは決してなく、すべてのシークレットの同期はエンドツーエンド暗号化で行われます。ログはローカルのみ(サーバーには送信されません)であり、これらのシークレットはGDPRのデータポータビリティ要件を満たすためにデバイス上でエクスポートすることもできます」とProtonはBleepingComputerに語りました。
「言い換えれば、たとえこれがログに記録されていなくても、これらのログにアクセスできる人はシークレットを取得できるということです。Protonの暗号化はデバイス側の侵害には対処できないため、デバイスのセキュリティは常にご自身で確保してください。これは当社の脅威モデルの範囲外です。」
「iOSアプリのログ記録動作は変更しましたが、これは攻撃者が悪用できる脆弱性ではありません。攻撃者がローカルログにアクセスできるほどデバイスにアクセスできる場合、いずれにせよシークレットを取得でき、Proton(や他の2FAアプリ)では防ぐことはできません。」
このログデータはリモートで悪用されることはありませんが、問題やバグの診断のためにログが共有・投稿された場合、機密性の高いTOTPシークレットが第三者に漏洩する懸念がありました。
これらのシークレットは、他のAuthenticatorにインポートして、そのアカウントのワンタイムパスコードを生成するために使用される可能性があります。