情報およびITセキュリティでは、特定の「ベストプラクティス」が不可侵のゴールデンルールになるという厄介な傾向があり、特定の状況に適しているかどうかに関係なく適用されることを推奨するようになります( Cargo Cult Programming )
この良い例は、1つのサイズを適用するパスワードポリシーへの一般的なアプローチであり、すべての8文字の長さの要件と高度な複雑さの要件、再利用を停止するために履歴に保存された12個の以前のパスワード、3つの誤った試行のロックアウト、および30日ローテーション。
30日間のローテーションは、攻撃者が盗んだパスワードを使用する機会を減らすことを目的としていますが、ユーザーがシーケンスパスワードを使用する可能性が高いため、攻撃者が1つのインスタンスをクラックできれば、他のインスタンスを簡単に解読でき、実際には元に戻ります意図したセキュリティ上の利点。
長さと複雑さの要件は、ブルートフォース攻撃を阻止することを目的としています。オンラインのブルートフォース攻撃は、賢明なロックアウトポリシーと侵入検出の組み合わせで軽減されます。オフラインのブルートフォース攻撃は通常、攻撃者がパスワードを含むデータベースを侵害し、適切なストレージメカニズム(bcyprt、PBKDF2など)を使用することで軽減されます。 )また、意図しない副次的な影響として、ユーザーが1つのパターンを見つけて機能し、ユーザーがパスワードを書き留めるリスクが高まります。
3つの誤ったロックアウトポリシーは、オンラインのブルートフォース攻撃を阻止することを目的としていますが、設定が低すぎると、アカウントのロックアウトが増加し、ヘルプデスクに過負荷がかかり、サービス拒否のリスクが生じます(多くのオンラインシステムでは、firstname.lastnameなどのユーザー名構造を簡単に推測しているため、ユーザーをロックアウトするのは簡単です)
一般に不適切に適用されるCargo-Cultセキュリティの他の例は何ですか?
クローズドソースはオープンソースよりも安全です。攻撃者はソースコードを表示して脆弱性を見つけて悪用できるためです。これは常に誤りであるとは主張していませんが、オープンソースソフトウェアを使用すると、外部の専門家がソフトウェアをレビューして、脆弱な脆弱性/バックドアを探してから、それらにパッチを公開することが少なくとも可能です。クローズドソースソフトウェアを使用すると、バイナリを手間をかけずに分解しなければ、簡単にはできません。そして、あなたとほとんどの攻撃者はソースコードにアクセスできないかもしれませんが、ソースコードを入手したり、秘密の脆弱性を注入したりできる強力な攻撃者(たとえば米国政府)が存在する可能性があります。
データを暗号化する場合、ネットワークを介したデータの送信は秘密です。攻撃者がデータを変更できないようにするには、暗号化を認証する必要があります。情報を送信する相手の身元を確認する必要があります。そうでない場合、中間者がトラフィックを傍受して変更する可能性があります。認証と識別を使用しても、暗号化によって情報が漏洩することがよくあります。 HTTPS経由でサーバーと通信しますか?ネットワーク盗聴者(ISPの誰でも)は、送信したトラフィックの量、IPアドレス、各応答のサイズを正確に把握しています(たとえば、転送されたすべてのリソースのサイズに基づいて、さまざまなWebページをフィンガープリントできます)。さらに、特にAJAX Webサイトの場合、入力した情報は、多くの場合、トラフィックパターンによって識別可能なサーバー応答につながります。 Webアプリケーションでのサイドチャネルリークを参照してください。 。
弱いパスワードリセットの質問- Sarah Palinのメールはどのようにハッキングされましたか ?人はパスワードのリセット手順を実行し、公開されている情報からすべての質問に正しく答えることができました。 Facebookの知人が理解できるパスワードのリセットに関する質問は何ですか?
システムXは壊れません-256ビットのAES暗号化を使用しており、10億の通常のコンピューターが10億、10億、10億、10億年をかけてクラックされる可能性があります。はい、2を必要とするため、総当たりにすることはできません。256 オペレーション。ただし、パスワードは再利用することも、一般的なパスワードの辞書で使用することもできます。または、コンピューターにキーロガーを貼り付けました。または、あなた が$ 5のレンチで誰かを脅し、彼らはあなたにパスワードを教えました 。サイドチャネル攻撃が存在します。たぶん 乱数ジェネレータに欠陥がありました 。タイミング攻撃が存在します。ソーシャルエンジニアリング攻撃が存在します。これらは一般的に最も弱いリンクです。
この弱い習慣は私たちにとって十分良いです、物事を安全に行うのを待つ時間はありません。米国政府は、ドローンからのビデオフィードの暗号化 の暗号化について心配する必要はありません -正しいキャリア周波数を聞くことを誰が知っているか。暗号化ボックスに加えて、重くて高価になります-なぜわざわざ?
Quantum Computersは指数時間の問題をすばやく解決でき、すべての暗号化方式を破ります。人々は、量子コンピューターに関する人気の科学記事を読んで、ほぼ無限の数の並列宇宙の計算能力を利用して何かを行うこれらの神秘的な超強力なエンティティであると聞きます。それはほんの一部です。量子コンピューターは、因数分解と離散対数が多項式時間O(n3)RSA、DSA、およびそれらのトラップドア機能に基づく暗号化を簡単に破ることができるショールのアルゴリズムを介して。同様に、量子コンピューターはGroverのアルゴリズムを使用して、O(2N)時間のみO(2N/2)時間;対称鍵のセキュリティを効果的に半分にする-Granted Groverのアルゴリズムは量子コンピューターに漸近的に最適であることが知られているので、それ以上の改善は期待できません。
いくつかの例:
より大きなキー。 4096ビットRSA、256ビットAES ...常にビット数が多いほど優れています。 (コメントを参照してください。「まったく壊すことができない」状態を保証するサイズよりも大きいキーを使用しても意味がありません。ただし、大きいキーはネットワークとCPUのオーバーヘッドを意味し、場合によっては大量になります。)
snprintf()
の代わりにsprintf()
のような「安全な関数」を自動的に実施(プログラマーが切り捨ての可能性をテストしない限り、あまり効果がなく、ユーザーの使用を妨げません) -フォーマット文字列として提供される文字列)。 strncpy()
の余分なポイントは、ほとんどの人が想定しているようには見えません(特に、最終的な'\0'
は保証されません)。
「セキュリティマネージャの純度」。職務と役割の分離の応用として、すべての「セキュリティ関連」の決定は、プロジェクトの設計者や開発者とは異なるセキュリティの専門家が行う必要があります。多くの場合、見当違いの極端に取り上げられます。ファイアウォールでどのネットワークポートを開いたままにするかを決定する人は、プロジェクトについてまったく知識がなく、故意に拒否その点について何かを学ぶためです- 独立した決定情報に基づく決定よりも重要です。
コンサルティング中に見た独自のappsecの例を追加します。
sanitize()
を呼び出しました!」変数をすべての使用に対して安全にする方法はありません。ジョブには衛生ルーチンを使用する必要があります。多くのセキュリティ専門家、セキュリティトレーニング、および現在のセキュリティガイドからまだそう聞いています。
Webサイトのすべての認証された領域ではなく、ログインページにのみSSLを使用する。
ただ1つですが、それは非常に重要です。「情報セキュリティはテクノロジーの問題であり、テクノロジーで修正できます。」
特定のユーザーがシステムに存在するかどうかを人々が見つけないようにするために-ログインに失敗したときにパスワードが正しくなかったか、ユーザー名が無効だったかどうかを隠します...同時に、パスワードリセットフォームしないこの情報を漏らします。
「SSLを使用しているため、当社のWebサイトをハッキングすることはできません」。 SSLストリームによってIDS/IPSも役に立たなくなるため、脆弱性があれば悪用しやすくなります。