「 ああ、これらのトップ... 」-あなたはおそらく考えた。 しかし、この場合、世界中の情報セキュリティの専門家が問題を取り上げ、真剣に受け止めました。 そのため、ソフトウェア開発に何らかの形で関与している場合、コードを記述して設計するときに最も頻繁に発生する基本的なエラーを見つけることが役立ちます。
1月12日に、The 2009 CWE / SANS Top 25 Most Dangerous Programming ErrorsというドキュメントがThe MITER CorporationのWebサイトに公開されました。 これは、 SANS Institute(SysAdmin、Audit、Network、Securityの略)とMITER Corporationという非常に大きな組織の共同活動の成果です。 常に状態を受け取るプロジェクトと同様。 米国のサポート、すべてが非常に徹底的に行われます。
以下は、このドキュメントの紹介文の翻訳です。
「上位25の最も危険なプログラミングエラー」は、深刻なソフトウェアの脆弱性につながる可能性のある最も危険なプログラミングエラーのリストです。 それらは珍しくなく、見つけやすく、使いやすいです。 攻撃者がプログラムを完全に制御したり、データを盗んだり、プログラムがまったく機能しないようにしたりすることが多いため、危険です。
このリストは、SANS Institute、MITRE、および米国とヨーロッパの多くの情報セキュリティの専門家とのコラボレーションの結果です。 このリストは、SANS Instituteによる「トップ20の攻撃ベクトル」およびMITERによる「Common Weakness Enumeration(CWE)」のコンパイルで得られた経験を利用しています。 MITERは、CWE専用のサイトを維持し、米国国土安全保障省の国家サイバーセキュリティ部門( 私はこれは翻訳しません )のサポートを受け、25の主要なプログラミングエラーの詳細な説明と、それらを軽減および回避するための信頼できる推奨事項を提供します。 CWEサイトには、脆弱性の原因となる可能性がある700以上のその他のプログラミング、設計、およびアーキテクチャエラーに関するデータも含まれています。
このリストの主な目的は、ソフトウェアのリリース前であっても、最も一般的なエラーを排除する方法をプログラマーに教えることにより、脆弱性を排除することです。 このリストは、ソフトウェア開発業界に影響を与える種類の脆弱性をプログラマーが防ぐのを助ける学習および認識ツールになります。 ソフトウェア消費者は同じリストを使用して、より高いソフトウェアセキュリティ要件を設定できます。 最後に、プロジェクトマネージャーとCIO(最高情報責任者)は、このTOP 25を使用して、プログラムのセキュリティ保護の成功を測定できます。
実際、翻訳せずにエラーのリストを提供した方が良いでしょう:
コンポーネント間の安全でない相互作用
これらの弱点は、個別のコンポーネント、モジュール、プログラム、プロセス、スレッド、またはシステム間でデータが送受信される安全でない方法に関連しています。
* CWE-20:不適切な入力検証
* CWE-116:出力の不適切なエンコードまたはエスケープ
* CWE-89:SQLクエリ構造の保持の失敗(別名「SQLインジェクション」)
* CWE-79:Webページ構造の保持の失敗(別名「クロスサイトスクリプティング」)
* CWE-78:OSコマンド構造の保存の失敗(別名「OSコマンドインジェクション」)
* CWE-319:機密情報のクリアテキスト送信
* CWE-352:クロスサイトリクエストフォージェリ(CSRF)
* CWE-362:競合状態
* CWE-209:エラーメッセージ情報のリーク
リスクのあるリソース管理
このカテゴリの弱点は、ソフトウェアが重要なシステムリソースの作成、使用、転送、または破壊を適切に管理しない方法に関連しています。
* CWE-119:メモリバッファーの境界内での操作の制約の失敗
* CWE-642:重大な状態データの外部制御
* CWE-73:ファイル名またはパスの外部制御
* CWE-426:信頼できない検索パス
* CWE-94:コード生成の制御の失敗(別名「コードインジェクション」)
* CWE-494:整合性チェックなしのコードのダウンロード
* CWE-404:不適切なリソースのシャットダウンまたはリリース
* CWE-665:不適切な初期化
* CWE-682:誤った計算
多孔質の防御
このカテゴリの弱点は、多くの場合、誤用、乱用、または単に無視されている防御手法に関連しています。
* CWE-285:不適切なアクセス制御(承認)
* CWE-327:破損または危険な暗号化アルゴリズムの使用
* CWE-259:ハードコードされたパスワード
* CWE-732:重要なリソースに対する安全でないアクセス許可の割り当て
* CWE-330:不十分なランダム値の使用
* CWE-250:不要な特権を使用した実行
* CWE-602:サーバー側セキュリティのクライアント側の施行
英語を知っている人は、オリジナルのリストを読むことを強くお勧めします。これらすべての間違いを避ける方法についての貴重なヒントがあるからです。 しかし、この投稿の単純な瞑想でさえ、コードのセキュリティを大幅に向上させ、おそらくプログラムは無限ループを正常に完了することさえできるでしょう。 二回。