TL;DR – 生年月日または社会保障番号は、データへのアクセスを保護するのに適した考えではありません。
パズル – 下の2つの写真の違いは何ですか?
しかし、最初から始めましょう。 残念ながら、IT の世界ではよくあることですが、利便性はセキュリティと共に行き合いません。 今回も似ていたと思います。 ただし、一連の機密データでは、セキュリティ侵害を行う必要はありません。 このようなデータには、私たちの健康に関する情報が含まれますが、これらに限定されません。
私の友人 Kacpra からのラボ結果へのアクセスがどのように許可されているかについてのメッセージに驚いて、私はこれを担当するソリューションをより詳細に調査することにしました。
上記の図で見ることができるように – 「簡易ログイン」の機能を通じて結果にアクセスするには、2つの情報が必要です。
- 後続の注文番号が増加している注文 ID。
- 人の生年月日を注文する [日=X月=X&年=X]
特定の前提では、注文 ID に割り当てることができる生年月日の組み合わせの数は、約 19,000 の組み合わせだけです。 このような組み合わせをすべて生成し、注文番号と一致するかどうかを確認することは大きな問題ではないと推測することは難しいものではありません。
私の仮定が正しく、数百の列挙がアクセスデータと一致することが判明しました:
これにより、次のような機密性の高い患者情報が可能になります。
- 名。
- 名前;
- ペセル;
- 生年月日;
- 居住地の住所;
- テストの結果。
列挙が成功した別の例:
私は私の感受性を確認するとすぐに、私は修理の推奨事項と一緒に、責任を負うソフトウェアにこのエラーを報告しました:
何をすべきか、どのように生きるのですか?
このような攻撃に対する最も一般的なセキュリティ対策の 1 つは、Captcha を実装することです。 注文データにアクセスしようとしていくつかの(例えば3回)失敗した後、アプリケーションのユーザーは表示されたキャプチャコードを書き換える必要があります。 ただし、このようなメカニズムの実装は、攻撃者の減速に過ぎず、最も単純なケースではOCRスキャナまたは専用のキャプチャ読み取りサービスで生年月日をさらにブリュットする可能性があることに注意してください。
より良い、推奨されるセキュリティ機能は、顧客の電話番号に来る 十分に長い、ランダムなパスワードを使用して注文の結果にアクセスすることです。
幸いにも、バグは、googleからreCAPTCHAメカニズムを実装することで、非常に迅速に修正されました。