
予測可能な識別子(証明書コード)を使用した証明書照会を、認証や認可の仕組みなしで可能にする公開エンドポイントが特定されました。
この識別子を列挙することで、攻撃者は氏名、CPF(ブラジルの個人納税者登録番号)、RG(ブラジルの身分証番号)、生年月日、出生地を含む第三者の個人データにアクセスできます。
また、証明書保有者が個人データを部分的に難読化した状態で卒業証明書を公開的に共有することを選択した場合(例えば、プロフェッショナルネットワークや他のプラットフォーム上)でも、証明書の識別子が表示されたままになることが多いことも確認されています。この識別子からエンドポイントに直接照会し、完全なデータを取得することが可能であり、インターフェースに実装された難読化メカニズムを完全に迂回できます。
https://www.fiap.com.br/consultadocumento
8文字の識別子
概念実証(PoC)の目的で、Google dorks の手法を用いて、公開されている証明書画像を検索しました。さらに、証明書保有者が自身の証明書を共有している LinkedIn プロフィール上の事例も特定しました。
これらの公開情報源から、表示されている証明書の識別子を抽出し、それらに基づいて有効なコードのリストを作成することができました。これらの識別子を脆弱なエンドポイントで使用することで、各証明書に関連付けられた完全なデータにアクセスでき、大規模な悪用が可能であることを実証しました。
なお、使用した手法は専ら公開情報と受動的な偵察のみを用いたものであり、攻撃者がこの脆弱性を悪用するために特権アクセスを必要としないことを示しています。
以下の例を参照してください。
特定された脆弱性により、認証を一切必要とせずに、CPF(ブラジルの納税者ID)、RG(ブラジルの国民ID)、氏名、生年月日、出生地などの極めて機密性の高い個人データへの不正アクセスが可能になります。証明書識別子を列挙できる可能性と、公開情報源からの識別子収集を組み合わせることで、大規模な情報抽出が可能となり、露出面が大幅に拡大します。
このシナリオにより、ブラジルの文脈では検証メカニズムとして広く使用されている情報が露出するため、データの不正使用、個人情報の盗用、および高度に標的を絞ったソーシャルエンジニアリング攻撃が可能になります。さらに、この欠陥は、適切な法的根拠やアクセス制御なしでの個人データの露出を考慮すると、一般データ保護法(LGPD)の文脈において、重大な規制上の影響をもたらす可能性があります。
最後に、この悪用には特権や認証のレベルが一切必要なく、外部の攻撃者によって自動化された方法で実行できる点が重要であり、これにより脆弱性の重大性が大幅に高まります。
列挙のリスクを軽減するために、証明書識別子を、安全に生成されたトークン(例:MD5などのハッシュベース、またはランダム要素を含むより堅牢なアルゴリズム)などの予測不可能な値に置き換え、他の有効な証明書を推測または列挙できないようにすることを推奨します。
さらに、公開文書では機密データを適切に難読化して提示し、同じロジックをバックエンドにも適用して、APIが完全な情報を返さないようにすることを推奨します。これにより、リンクが公開的に共有された場合でも、アクセスは証明書の安全なバージョンに制限され、保有者のプライバシーが保護されます。
最後に、レート制限、不審なアクセスの監視、および該当する場合は一時的な有効期限を持つ検証リンクの使用などの補完的な保護メカニズムを実装し、自動化された悪用のリスクをさらに低減することが重要です。