セキュアコーディングとは何ですか?

セキュアコーディングは、コードセキュリティのベストプラクティスに準拠したコードを設計する原則であり、セキュリティエクスプロイト、クラウドシークレット、埋め込み認証情報、共有キー、機密ビジネスデータ、個人を特定できる情報(PII)の損失など、既知、未知、予期しない脆弱性から公開されたコードを保護および保護します。 

これは、開発者、セキュリティチーム、DevOpsの間で、コードセキュリティが不可欠な部分として実施される必要があるという幅広い理解を反映しています CI/CD, supporting continuous changes both in code and in infrastructure, providing visibility into all seen and hidden components of a given environment.

Secure coding requires willingness, education, tools, and above all cultural change.

デモのスケジュール クラウドセキュリティレポートをダウンロード

セキュアコーディングとは何ですか?

Why is Secure Coding Important?

セキュアコーディングは、文字通り、セキュリティチームではなく、コードセキュリティの責任者として開発者を指名することで、責任のシフトの変化を示しています。 これはまた、 シフトレフトセキュリティの概念 これは、ソフトウェア開発ライフサイクル(SDLC)のベストプラクティスの一部としてすでに広く採用されています。

セキュアコーディングでは、コードリポジトリにコミットされる既存のコードと新しいコードをスキャンする抽象化レイヤーが導入されます。 これにより、ベストプラクティスが実施され、本番環境に対応したコード標準が適用されるだけでなく、人為的ミスや開発者が厳しい期限に間に合わせるための「手抜き」を防ぐことができます。 

コードに影響するセキュリティの脆弱性

ソフトウェアやアプリケーションの作成、またはインフラストラクチャをコードとして記述するには、クラウドリソースにアクセスして制御するためのクラウドシークレットと、自動化を可能にするために機密性の高いパラメーターを保存する必要があります。 コードに脆弱性をもたらす可能性のあるシナリオは無数にありますが、以下では、最も重大で頻繁に発生する問題について説明します。

アクセスキーの漏洩

すべてのプログラミング言語では、クラウドリソースにアクセスして管理するためにプログラムキーが必要です。 シークレットキーは、クラウドリソースに対して実行するアクセス許可を付与するIAMロールへのアクセスを制御します。 シークレットは常に暗号化する必要がありますが、よくある間違いは、アクセスキーとシークレットをローカルパラメータストアまたはvarファイルに埋め込むことです。 開発者は、特にコードのトラブルシューティングを行う場合に、これらのシークレットを誤ってコード リポジトリにコミットしがちです。 選択したリポジトリがパブリックの場合、公開されたシークレットは世界中の誰でも使用できます。

ハードコードされたアプリケーション シークレット

各アプリケーションには、関連付けられたアプリに対してアプリケーションが使用するセキュリティ パラメーターの詳細を示す構成データセットが埋め込まれています。 これには、データベース・ログイン資格証明、データベース・パラメータ、ミドルウェア構成変数、フロント/バックエンドWebアプリケーション・サービスのアクセス詳細が含まれる場合があります。 パラメーターとシークレットは暗号化し、プレーンテキストで書き込まないでくださいが、一部のアプリケーションでは、ファイルシステムのアクセス許可のみを使用して、権限のないユーザーが構成を読み取らないように保護します。 コードコミットで .gitignore などの機能が使用されていない場合、ファイルはプレーンテキストで保存されます。

Secure Coding Best Practices

業界標準に準拠したコードの保護とセキュリティ確保は、非常に困難です。 ここでは、ワークロードを侵害から守るための安全なコードのベストプラクティスをご紹介します。

  • 可視性と監視: 安全なコーディング保護がなければ、コードリポジトリに保存されているデータを正確に把握することは非常に困難です。 自動検出監視は、リポジトリをスキャンして脆弱性を探し、問題が発生した場合は、トリアージの準備が整ったアラートがトリガーされます。 一般に公開されているリポジトリに公開されている可能性のある隠れた機密資産、コードベース、ログ、その他の機密性の高い知的財産をマッピングして監視します。
  • セキュリティの自動化: 自動化されたシークレット検出により、コード セキュリティの脆弱性を手動で検索する手間のかかる反復的なプロセスが不要になります。 自動エンジンは、ML でトレーニングされた検出器を使用してリポジトリをスキャンして成功率を向上させ、コミット前のチェックにより、コードがソース管理にコミットされる前に問題が特定されます。
  • ログとアラート: シークレットは意図せずにログ エントリに含まれる可能性があるため、自動保護はログを対象とする必要があります。 さらに、カスタム アプリケーションに対して詳細ログをローカルで有効にして、見えない資産を監視できるようにすることが重要ですが、コード リポジトリにチェックインすることはありません。
  • ブロック反射型 XSS: 非永続的な XSS 攻撃や反射型 XSS 攻撃から保護することで、悪意のあるスクリプトがソース管理にコミットされるのを防ぎます。 これにより、標的型悪意のあるHTMLやJavaScriptの実行からユーザーを保護することができます。
  • Mitigate Misconfiguration: 人為的ミスやミスはコーディングの必然性であり、安全なコーディングのベストプラクティスには、問題を迅速に修正する能力が必要です。 セキュリティの失効はすぐに修正し、リポジトリの履歴からすべてのトレースを削除する必要があります。
  • Protecting Secrets and Data: セキュアコーディングは、シークレットやビジネスデータがパブリックドメインに漏洩するのを防ぎます。 これには、パスワード、APIキー、トークン、資格情報、PCI、PII、およびPHIデータが含まれます。 このソリューションは、2017 年 – 認証の不備、2017 年 – 機密データの漏洩、2017 年 – アクセス制御の不備、2017 年 – セキュリティの設定ミスなどの OWASP 推奨事項を標準で満たしている必要があります。
  • AI/MLの力を活用する: 脅威の範囲は膨大であり、AI/MLデータセットを使用して検出器をトレーニングし、既知と未知のコードの両方のセキュリティリスクを自動的に特定することで、タスクを簡素化します。

セキュアコーディング技術

There are countless techniques that can be introduced to protect code and business data. The fundamentals of secure coding must cover mobile devices, servers, and embedded applications. 

ここでは、安全なコーディング手法をいくつか紹介します。

  • コードの難読化を強制する: 可能であれば、コードの縮小やコードの難読化などの手法でコードを保護します。
  • Avoid Cutting Corners: 近道をしたくならないでください。 開発者には厳しい締め切りがありますが、遅延が発生しても、本番環境に対応したコードを提供することが不可欠です。
  • コードレビュー: 主要なプロジェクトでは、開発者同士がアイデアを出し合うことができるピアコードレビューの場がまだあります。 さらに、追加の専門家がコードを批評する機会も与えられます。
  • Create a Culture of Security: 文化の変革を実現するのは非常に難しく、社内に定着させるには時間がかかります。 チーム全体でセキュリティファーストの物語を推進するための最初の一歩を踏み出すことは、成功に不可欠です。
  • ドキュメント規格: セキュリティで保護されたコーディング標準は、プライベート リポジトリで文書化し、共有する必要があります。 ルールを書き留めることで、開発者はレビューの機会を得ることができ、文化の変革を促進することができます。
  • 外部データソースの検証: 既に記述されているモジュールやコードを使用するのが理にかなっている場合があります。 ソースが正当であることを検証し、SHA認証でダウンロードをクロスチェックし、プルされたデータが暗号化され、有効であることを確認します。
  • 脅威モデリングを使用します。 脅威モデリングでは、ソフトウェア開発プロセス全体を通じてコードの弱点や脆弱性を調べる多段階プロセスが導入されています。
  • Use Automated Tools Within CI/CD: セキュリティ標準を効果的に実施することは非常に難しいため、次のような自動化ツールへの投資を検討してください。 Check Point Spectral それはあなたのためにすべてのハードワークをします。

Secure Coding with Check Point Spectral

Check Point Spectral by Check Point is a professional automation tool that validates and enforces secure coding best practices. It prevents developers and DevOps from making costly mistakes by using automated routines to discover, identify and predict the vulnerabilities inyour code, providing powerful shift-left provenance from code to cloud.

スーパーチャージ IaC また、SDLC全体でエンドツーエンドのシークレットと設定ミスをスキャンするCI/CDも提供します。 ビジネスに固有のセキュリティポリシーを適用することで、公共の盲点を排除します。 Schedule a demo of Check Point Spectral 気づいていないセキュリティ上の懸念を明らかにし、開発者ファーストのセキュリティストーリーをビジネス全体で推進する方法を学びます。