web-dev-qa-db-ja.com

攻撃者が新しいパスワードハッシュを挿入するリスクは何ですか?

パスワードハッシュで見られる通常の脅威モデルは、ハッシュが何らかの形でより広い世界に漏洩した場合の一種の防御策です。実際には、これは通常、(少なくとも)ユーザーテーブルがダンプされることになるデータベース違反の何らかの方法によるものと思われます。 これが発生した、または発生する可能性があることを前提としています、攻撃者がデータベースに新しい値を入力できる可能性は何ですか?

特に、攻撃者が既知のパスワードに対して新しいハッシュを生成するか、攻撃者自身のハッシュされたパスワードを取得し、それを別のユーザーのレコードに置き換えることを考えています。

基本的に、これは防御すべき現実的な脅威なのか、それともセキュリティの妄想に陥る私の考えだけなのか?

4

特に、攻撃者が既知のパスワードの新しいハッシュを生成するか、攻撃者自身のハッシュされたパスワードを取得し、それを別のユーザーのレコードに置き換えることを考えています。」

したがって、攻撃者自身のパスワードのことは考えられません。 (パスワードだけをハッシュする代わりに、ユーザー名とパスワードのようなものをハッシュするのではなく)確定的な「ソルト」など、それを阻止できる技術的な防御があります。攻撃者の身元を指しています!

残念ながら、これは既知のハッシュを追加する可能性が低いことを意味するものではありません。あなたはそれが可能であることは正しいです。これは、多くの若い開発者がホームで認証システムをローリングし、まだパスワードリセットフォームが機能していないときに手動で行うものです。また、パスワードリセットフォームが機能する方法も基本的には異なります。知らないハッシュを自分で作成したハッシュで上書きするだけです。

基本的に、攻撃者がユーザーテーブルへの書き込みアクセス権を持っている場合、ハッシュはそれを保護しません。ハッシュに「コショウ」(データベースから保存された単なる秘密の値)を含めると、防御レベルが低くなる可能性がありますが、このレベルのアクセスでは、やむを得ず多くの害の範囲があります。攻撃のその他のオプションには、DOS攻撃でユーザーのタイプを特権のあるユーザーに変更する、またはテーブルをいじって実際のユーザーがログインできないようにすることが含まれます。ハッシュのコショウはそれらに対して助けにはなりません。

特定の種類の危害(つまり、パスワードの収集)を防ぐため、パスワードをハッシュ化しますが、それだけがセキュリティの領域であってはなりません。また、攻撃者が最初にデータベースへの書き込みアクセス権を持たないようにするには、特権の分離などのベストプラクティスも必要です。

4
Josiah
  1. 「リスクとは」-リスクとは何かに答えられるのはあなただけです。他の誰もあなたのシステムを知りません、誰もあなたのリスクが何であるかを評価できません。

  2. 「アプリケーションに秘密を解読させる」-これは起こり得ない。まあ、あなたがすべてを間違ってやれば、それはできます。しかし、authenticationパスワードをサーバー上のデータの暗号化などに使用する人はいません。認証パスワードは定期的に忘れたり失効したりする可能性があり、ユーザーは新しいパスワードを取得します。しかし、これはサーバー上のデータ暗号化とは何の関係もありません(もちろん一部のナイーブな開発者がそれを行いますが、私たちはもう少し専門的な開発者について話しています)。ユーザーベースごとに一部のユーザーデータの暗号化が必要な場合、アプローチの1つは、ユーザーがサーバーのユーザーデータを暗号化するために使用するキー(または1Kのランダムバイトなどのキーファイル)を生成することです。次に、ユーザーのパスワードを上書きしても、暗号化されたデータにアクセスできるわけではありません。

  3. オーバーライドされたパスワードは、アプリケーション機能へのアクセスを許可します。結果はアプリケーションによって異なります。アプリケーションが天気予報へのアクセスを提供する場合、攻撃者がアプリケーションへのアクセスを取得してもそれほど害はありません:)しかし、アプリケーションが何かを支払うことを許可し、多額のお金の契約に署名することを許可する場合、結果は非常に大きくなる可能性があります有害。

何ができますか?最初に、結果は何か、そのような攻撃がどれほどの害を及ぼす可能性があるかを考え、次に確率を見積もり、それを緩和のコストと比較します。緩和は意味をなさないかもしれません。次に、緩和策を講じる場合は、2要素認証を検討してください。

0
mentallurg

リスクを評価するには脅威モデルが必要です。脅威モデルはありません。

はい。攻撃者は、盗んだデータベースのコピーに新しいパスワードハッシュを挿入する可能性があります。それは比較的簡単です。実際、データベースを盗もうとする攻撃者は、データベース全体をマウント、読み取り、変更できると想定できます。

しかし、データベースのコピーのパスワードハッシュを置き換えることに関連する害は何ですか?これは彼が何か有用なことをすることを許しません。 例外:データベースでひどく欠陥のある自家製の暗号化を使用している場合、データベースから暗号化されたレコードを取得できる可能性があります。専任の専門家のチームがいない限り、自分のセキュリティを導入しないでください。

データベースが盗まれたら、本番システムに再度ロードすることはありません。彼がコピーのアカウントのパスワードハッシュを置き換えた場合、インスタンスの内容は変更されません。その方法でユーザーのアカウントにログインすることはできません。

否定的な結果への明確な道がない...

脅威モデルには、攻撃者があなたに危害を加える可能性のある技術的な方法が含まれ、その危害が発生する影響と可能性を評価できます。提案されたアクションがどのように害をもたらすかを説明できない限り、評価するリスクはありません。

データベースにカスタムの低品質の「セキュリティ」が採用されておらず、本番データベースが漏洩したコピーから復元されていない場合、追加の害がどのように発生するかはわかりません。

明確にするために、あなたが説明する行動からだけではなく、通常の状況下では潜在的な害があります。

最も可能性の高い脅威は、レインボーテーブルやクラッキングです。

データベースを所有していると、ユーザーのパスワードを回復しようとする可能性があります。ただし、攻撃者は元のハッシュを保持する必要があります。これは、盗まれた認証データに関連する真の脅威です。

この脅威に対する正しい反応は2つあります。標準のチャレンジメカニズムを使用してユーザーベース全体のパスワードを強制的にリセットし、同じパスワードを使用している場合は他のサイトでパスワードを変更するようユーザーに警告します。

ハッシュにソルトを使用した場合、レインボーテーブルは役に立たなくなり、攻撃者は各パスワードを個別にクラックする必要があります。最新のパスワードハッシュアルゴリズムを選択した場合、これは自動的に当てはまりますが、熟練した攻撃者を遅くするだけです。

コンシューマーグレードのGPUで実行される最新の(辞書+ルール)クラッキング作業は、非常に複雑な要件と高作業アルゴリズムがない限り、50%以上のパスワードを簡単に回復します。

0
DoubleD