2022 年のセキュア コーディングのベスト プラクティス

アイテム インデックス

2022 年のセキュア コーディングのベスト プラクティス

CI/CD パイプラインの保護

1/2 ページ

サイバー攻撃開発者に対する脆弱性のこの時代では、DevOps チームは強化する必要があります。 ここでは、安全なコーディングの概念を探り、開発者がスキルをレベルアップして安全なコーディングを採用するのに役立ついくつかのベスト プラクティスを提供します。

セキュアコーディングとは?

安全なコーディングには、セキュリティの脆弱性がソフトウェア コードに偶発的または悪意を持って導入されるのを防ぐプラクティス、手法、およびツールが含まれます。 攻撃者は、多くの場合、ソフトウェア アプリケーションで悪用できる欠陥、ロジックの欠陥、およびバグを探します。

これらのエラーにつながる安全でないコーディング慣行を特定し、安全なコーディング慣行を実装することで、ソフトウェアが本番環境にデプロイされるずっと前に、脆弱性を減らし、セキュリティの問題を排除できます。 これにより、攻撃対象領域を縮小し、リスクを最小限に抑え、攻撃が成功した場合でも侵害の影響を軽減できます。

安全なコーディング統計

Secure Code Warrior は、開発者中心のセキュリティの状態に関する 2022 年の調査結果を発表しました。 調査結果は、開発者が相反するセキュリティの態度と行動をとっていることを示唆しています。 ほとんどの開発者は、ソフトウェア開発に対するセキュリティ中心のアプローチの重要性を認識しています。 86% は、コーディング時にアプリケーションのセキュリティを優先しません。

この調査によると、開発者の半数以上が上位 7 つの脆弱性からコードを保護できませんでした。 Secure Code Warrior は、開発者がプロ​​アクティブで安全なコーディング手法を採用する方法を評価するためにこの調査を実施しました。

開発者は、いくつかの優先事項に対処する必要があります。多くの管理上の障壁により、SDLC の早い段階で安全なコードを作成することが妨げられています。 多くの場合、開発者は締め切りを優先したり、安全なコードを作成するためのガイダンスやトレーニングを受けていません。

トレーニングは、開発チームが安全なコーディング手法を採用することに大きな影響を与えており、開発者の 81% がトレーニングで得た知識を日常業務に適用しています。 トレーニングからメカニズムを実装したにもかかわらず、開発者の 67% が脆弱なコードを故意に出荷しました。 多くの開発者が、さらなるトレーニングを望んでいました。

安全なコーディングのベスト プラクティス

コードと周囲の環境を確実に保護するために、開発者が知っておくべき重要なベスト プラクティスを次に示します。

シフトレフト セキュリティ

セキュリティを左にシフトすることで、ソフトウェア開発ライフサイクル (SDLC) 全体でセキュリティを優先することができます。 欠陥を早期に発見して修復するのに役立ち、容赦のないタイム スケジュールを満たすことを余儀なくされているために、担当者がセキュリティの問題を無視する可能性を最小限に抑えます。

開発プロセスの不可欠な部分としてセキュリティを実装することで、チームは依存関係やオープン ソース コンポーネントを含める前にそれらのリスクを評価できます。 また、プロジェクト全体でバージョン管理の一貫性を確保するのにも役立ちます。

チームは、OWASP トップ 10 リストなどのソースからの情報を活用して、脆弱性管理に関する専門的なガイダンスを得たり、ツールを使用してこのプロセスをより迅速かつ効率的にすることができます。 一般的なシフトレフト セキュリティ ツールは次のとおりです。

  • 静的アプリケーション セキュリティ テスト (SAST) — チームは SAST ツールを使用してソース コードをスキャンし、既知のセキュリティの脆弱性を見つけることができます。 SAST ツールは、SDLC の早い段階で、通常はコードがコンパイルされる前に、保存されているコードをスキャンします。 目標は、コーディング中にチームが問題を修正できるように、問題を特定することです。

  • 動的アプリケーション セキュリティ テスト (DAST) — 保管中のコードをスキャンする SAST ツールとは異なり、DAST ツールは実行時またはコンパイル後にソース コードを分析できます。 チームは SAST ツールを使用して、静的スキャンでは見逃されたセキュリティの問題を検出できます。 ランタイム エラーや SQL インジェクション (SQLi) などのセキュリティの脆弱性を特定するのに役立ちます。

  • ソフトウェア構成分析 (SCA) — これらの自動化されたツールは、ソース コードをスキャンして、オープン ソース コンポーネントとサードパーティ ライブラリを識別します。 SCA ツールは、既知の脆弱性を検出し、利用可能なアップデートまたはパッチをチームに通知できます。

入力の検証と出力のエンコード

ユーザー入力とエンコード出力は、重大な脆弱性を引き起こす可能性があります。 この脅威を軽減するための一般的なベスト プラクティスを次に示します。

  • 構文およびセマンティック基準に従って、すべてのユーザー入力を検証します。

  • クエリをパラメータ化するか、ユーザー入力として識別します。

  • 正規表現との比較による検証には、許可リストを使用します。

  • HTML や JavaScript hex などのエンティティを介して出力をエンコードし、スクリプト コマンドを無効にし、潜在的に有害な文字を排除します。

  • サーバー側の検証とエンコーディングを使用して、バックエンド Web サービスやユーザー デバイスを含むすべてのコンポーネントのカバレッジを維持します。 これらのプラクティスを組み合わせることで、クロスサイト スクリプティング (XSS) やコード インジェクション攻撃を防ぐことができます。

エラー処理とログ

エラー処理プロセスは、プログラムに異常な入力が与えられたときに発生する予期しない結果に対処します。 エラー処理の問題により、機密情報が公開される可能性があります。 チームは、ロギングを使用してアプリケーションに加えられた変更の記録を維持することで、このリスクを軽減できます。

たとえば、攻撃者は同じ資格情報を使用して個人を検索できるため、これらの資格情報を使用して多くのアカウントへのアクセスを取得できます。 これらのイベント発生のログまたは追跡がない場合、攻撃者は新しい資格情報を使用してこれらの攻撃を実行し続けることができます。

一般的なエラー処理とログ記録の方法は次のとおりです。

  • スタック トレースまたはデバッグ情報を表示しないエラー ハンドラを常に使用します。

  • エラー状態が発生したときに、割り当てられたメモリを適切に解放します。

  • 指定されたセキュリティ イベントの成功と失敗をサポートするログ コントロールを使用します。

  • すべての入力検証の失敗と認証の試行をログに記録します。

  • ログ エントリの整合性を検証する暗号化ハッシュ関数を実装します。

  • 一般的なエラー メッセージを定義し、カスタム エラー ページを設定します。

ドライコード戦士

.

Leave a Comment

Your email address will not be published. Required fields are marked *