Wiz Defendが登場: クラウドの脅威検出と対応

コードセキュリティ (Code Security)

コードセキュリティは、セキュアコーディングとも呼ばれ、アプリケーションやシステム用に記述されたコードが脆弱性や脅威から保護されるように設計されたプラクティス、方法論、およびツールを指します。

0 分読み

コードセキュリティとは

コードセキュリティは、セキュアコーディングとも呼ばれ、アプリケーションやシステム用に記述されたコードが脆弱性や脅威から保護されるように設計されたプラクティス、方法論、およびツールを指します。 これには、攻撃者がソフトウェア、そのデータ、またはそのユーザーに損害を与えるために悪用する可能性のあるセキュリティリスクを防止、検出、および軽減することを目的としたさまざまなアクティビティが含まれます。

コードセキュリティは、悪意のあるアクターによって悪用される可能性のあるコード内の弱点(脆弱性)の存在を最小限に抑えることを目的としています。 これらの脆弱性は、不正なデータベースアクセスを可能にするSQLインジェクションの欠陥や、攻撃者が任意のコードを実行することを可能にするバッファオーバーフローなど、さまざまな形をとる可能性があります。

一般的な種類のコードの脆弱性

VulnerabilityDescription
SQL Injection (SQLi)This occurs when an attacker can insert or manipulate SQL queries in the input fields to be executed by the database. It can lead to unauthorized data manipulation or access.
Cross-Site Scripting (XSS)XSS vulnerabilities occur when an application includes unvalidated and unescaped user input as part of HTML output. It allows attackers to execute malicious scripts in a user’s browser, potentially stealing cookies, session tokens, or other sensitive information that leads to identity theft.
Cross-Site Request Forgery (CSRF)This type of attack forces an end user to execute unwanted actions on a web application in which they are currently authenticated. CSRF attacks specifically target state-changing requests, not theft of data, since the attacker has no way to see the response to the forged request.
Buffer OverflowThis occurs when a program writes more data to a buffer than it can hold. This can lead to arbitrary code execution, where an attacker could take control of a system.
Use of Hard-coded CredentialsEmbedding fixed usernames and passwords in source code can lead to unauthorized access if the codebase is exposed.

コードセキュリティの実装における課題

セキュアコードの利点は否定できませんが、その実装には課題がないわけではありません。 スピード、機能性、セキュリティの両立はデリケートな作業です。

以下は、組織がコードセキュリティのベストプラクティスを実装しようとして直面する一般的な課題です。

セキュリティとスピードおよび機能性のバランス:

  • 時間的プレッシャー:開発者は、厳しい締め切りや機能を迅速にリリースしなければならないというプレッシャーに直面することが多く、セキュリティ対策の近道につながる可能性があります。

  • 認識されるトレードオフ:そこ'セキュリティ対策が開発を遅らせ、イノベーションを妨げているという誤解です。

  • バランスをとる:セキュリティ、速度、機能性の適切なバランスを見つけるには、慎重な計画と優先順位付けが必要です。

セキュリティ意識の文化の構築:

  • 認識の欠如:すべての開発者がセキュリティを優先しているわけではなく、安全なコーディング手法について十分なトレーニングを受けているわけでもありません。

  • 後付けのセキュリティ:セキュリティは、開発プロセスに統合されるのではなく、別のタスクと見なされることがよくあります。

  • 考え方の変化:セキュリティが開発に不可欠である文化を構築するには、継続的な教育とリーダーシップのサポートが必要です。

セキュリティツールとプロセスの統合:

  • ツールの過負荷:セキュリティツールの多さは、開発者を圧倒し、ツール疲れや怠慢につながる可能性があります。

  • プロセスの中断:セキュリティテストとレビューを統合しても、効果的に管理しないと、既存のワークフローが混乱する可能性があります。

  • ワークフローの最適化:組織は、セキュリティツールとプロセスの開発サイクルへの統合を合理化する必要があります。

進化する脅威への対応:

  • 急速に変化する状況:新しい脆弱性や攻撃手法が次々と出現し、継続的な警戒とアップデートが必要です。

  • 最新情報の入手:開発者は、最新の脅威とそれに対処するためのベストプラクティスを常に把握する必要があります。

  • プロアクティブなアプローチ:組織は、脅威の特定と軽減に積極的なアプローチを採用する必要があります。

プロのヒント

Compromised development and management tools present a significant threat to software supply chains. Attackers may target essential components such as code repositories, build servers, and integrated development environments (IDEs) to inject malicious code. This strategy causes developers and/or users to distribute compromised software without knowing it.

詳細はこちら

サードパーティの依存関係の管理:

  • 外部の脆弱性:オープンソースライブラリやサードパーティコンポーネントの脆弱性は、アプリケーションにリスクをもたらす可能性があります。

  • 可視性と制御:多くの場合、組織は外部依存関係のセキュリティを可視化しておらず、リスクの評価を困難にしています。

  • 審査と監視:サードパーティのコードを精査および監視するためのプロセスを実装することは、リスクを軽減するために重要です。

コードセキュリティは開発プロセスにどのように適合しますか?

エンジニアは、開発ライフサイクルのすべてのステップでコードのセキュリティを覚えておく必要があります。 要件の収集時またはシステムの設計時に暗号化を計画しない場合、後ですべてのデータを暗号化するとコストがかかる可能性があります。 権限についても同じことが言えます。 後でユーザーにより多くのアクセス許可を付与する方が、特定のデータを表示すべきではないことに気付いたときにその権限を剥奪するよりも簡単です。 

機能が機能することをテストするだけでは不十分です。実装がセキュリティのベスト プラクティスに準拠していることをテストします。 また、機能が変更された場合は、メンテナンス期間に新しいセキュリティ対策のためのスペースを確保します。

コードセキュリティは、現在実装しているアプリケーションのコードだけでなく、アプリケーション自体の構成や使用するツールにも適用されることに注意してください。 もう 1 つの重要な注意点: 最小特権の原則に従ってください。 CI/CD パイプライン. つまり、すべてのユーザーに管理者アクセス権を付与するのではなく、本当に必要な権限のみをユーザーに付与する方が簡単です。

コード セキュリティ ツールと手法

コードのセキュリティを確保する方法はたくさんあります。 いくつかの一般的なオプションを見てみましょう。

静的アプリケーション・セキュリティ・テスト(SAST)

SASTツールは、コードをスキャンし、既知のセキュリティ脆弱性のデータベースと比較します。 これらは静的型付けやリンターに似ていますが、一般的なコーディングのベストプラクティスよりもセキュリティの問題に重点が置かれています。 SASTツールは、IDEやCI/CDパイプラインに簡単に統合でき、開発プロセスのさまざまな段階でコードファイルをスキャンします。 コードのスキャンには、選択したSASTツールが使用するプログラミング言語をサポートしている必要があることに注意してください。

動的アプリケーション・セキュリティ・テスト(DAST)

DAST ツールは、実行時にアプリケーションをテストします。 SASTツールと同様に、既知の脆弱性のデータベースを使用しますが、DASTソリューションは、アプリケーションの実行時の動作に重点を置きます。 アプリケーションを実行する必要があるため、DASTはSASTよりも低速です。 利点は、DASTツールが、制限されたリソースへのアクセスを許可する構成の問題など、他のカテゴリのエラーをキャッチできることです。 また、DASTソリューションはHTTPなどの標準化されたプロトコルを使用してアプリケーションに接続するため、特定のプログラミング言語に縛られることはありません。

Infrastructure as Code のセキュリティ

IaCセキュリティ インフラストラクチャを定義するコード (Infrastructure as Code) が安全であることを確認することで、保護のレイヤーをさらに強化します。 IaC は、セキュリティ設定やアクセス許可など、リソースのプロビジョニングと構成の方法を制御するため、これは重要です。 IaC セキュリティは、開発プロセスの早い段階で IaC テンプレートをスキャンして、脆弱性と設定ミスを特定します。

これ "シフトレフト" 接近 安全でないインフラストラクチャのデプロイを防ぎ、攻撃対象領域を減らし、全体的なコードセキュリティ体制を強化します。 IaCセキュリティは、IaCがセキュリティのベストプラクティスとコンプライアンス規制に準拠していることを確認することで、セキュリティチェックを自動化し、インフラストラクチャmanagement.pen_sparkにおける人的エラーを最小限に抑えるのに役立ちます

コードレビューの自動化

AIと大規模言語モデル(LLM)をきっかけに、自動コードレビューは、コードセキュリティを確保するための手法としてますます一般的になっています。 一般的なセキュリティ問題に合わせて微調整されていれば、自動コードレビューにより、プルリクエストの脆弱性がコードベースに入る前に発見できます。 自動化されたコードレビューは幻覚によって複雑になる可能性がありますが、エンジニアが詳細に検討する時間がないからといってレビューを通過させるコードよりも、自動化は依然として望ましいものです。

安全なコーディングフレームワークとライブラリ

フレームワークは、エンジニアに実績のあるアーキテクチャと共通のユーティリティを提供することで、特定の種類のソフトウェアの構築をはるかに容易にします。 中には、コードセキュリティ機能をすぐに組み込めるため、アプリケーション開発者が明示的に忘れずに組み込むことができるものもあります。

ここでは、一般的なフレームワークの例をいくつか紹介します。

コードセキュリティの簡単なベストプラクティス

開発プロセスに統合するための簡単なベストプラクティスをいくつか見てみましょう。

最初からセキュリティを優先する:

  • 受け入れる "セキュリティ・バイ・デザイン" 考え方セキュリティに関する考慮事項を後回しにするのではなく、開発ライフサイクルのすべての段階に統合します。

  • 定期的な脅威モデリングの実施潜在的な脆弱性が悪用される前に、プロアクティブに特定して対処します。

  • 安全なコーディングの原則について開発者を教育するトレーニングとリソースを通じて、最初から安全なコードを作成できるようにします。

Wizアカデミー

Secure SDLC

もっと読む

暗号化とハッシュによる機密データの保護:

  • 業界標準の暗号化アルゴリズムを活用(AES-256など)保存中(保管中)と転送中(送信中)の両方で機密データを保護します。

  • 適切なキー管理を実装する暗号化キーを保護し、その機密性、整合性、および可用性を確保します。

  • ソルト付きハッシュ手法を適用する(例:bcrypt、Argon2)を使用してパスワードを安全に保存し、リバースエンジニアリングを事実上不可能にします。

堅牢な認証と承認の実装:

  • 単純なユーザー名とパスワードの組み合わせを超える多要素認証(MFA)を組み込んで、アカウントのセキュリティを大幅に強化します。

  • きめ細かな承認制御を実施ユーザーの役割と権限に基づいて、ユーザーが必要なリソースと機能にのみアクセスできるようにします。

  • ユーザー提供のデータを細心の注意を払って検証するSQLインジェクションやクロスサイトスクリプティング(XSS)などの手法による不正アクセスを防止します。

  • コード署名証明書を検討するコードの真正性と整合性を確立し、不正な変更から保護します。

脆弱性を防ぐための防御的なコーディング:

  • 安全なコーディング標準とガイドラインに準拠(例:OWASP Top 10、SANS Top 25)を使用して、一般的な攻撃ベクトルを軽減します。

  • 入力の検証とサニタイズの優先順位付けユーザーが提供したデータ内の悪意のあるコードや文字を無力化すること。

  • プリペアドステートメントとパラメータ化されたクエリを使用するSQLインジェクション攻撃から保護します。

  • 出力を適切にエンコードするクロスサイトスクリプティング(XSS)の脆弱性を阻止します。

テストと更新による警戒の維持:

  • 定期的なセキュリティテストの実施ペネトレーションテストや脆弱性スキャンなど、脆弱性をプロアクティブに検出して対処します。

  • 特定された脆弱性に迅速に対処、搾取される可能性が最も高いものを優先します。

  • ソフトウェア、ライブラリ、フレームワークを最新の状態に保つ最新のセキュリティパッチを適用することで、既知の脆弱性に対処し、攻撃対象領域を縮小します。

Example of a Github code repository scan identifying vulnerabilities, misconfigurations, and secrets

最小特権の原則を支持する:

  • ユーザーとプロセスには、タスクに不可欠な最小限の権限のみを割り当てるこれにより、不正アクセスの潜在的な影響が最小限に抑えられます。

  • 機密性の高いリソースや機能へのアクセスを制限する明示的な必要性と承認に基づいています。

構成のセキュリティ保護と管理者アカウントの保護:

  • システムとアプリケーションを安全に構成、不要な機能やサービスを無効にして、攻撃ベクトルを減らします。

  • 管理者アカウントに強力なパスワードとアクセス制御を適用する多くの場合、昇格された特権を保持しているためです。

  • システムログの定期的な監視と監査不審なアクティビティや潜在的な侵入について。

コードセキュリティに対するWizのアプローチ

幸いなことに、あなたはそうしません'上記のすべてのベストプラクティスに単独で取り組む必要はありません。 最近のWiz 新機能の発表 組織がクラウドソフトウェア開発プロセスを保護し、問題の解決を迅速化するのに役立ちます。

以下は、Wizが組織がコードセキュリティのベストプラクティスを実装および維持するのに役立ついくつかの方法です。

1. リスクの早期発見と解決:

  • コードスキャン:WizはGitHubと統合してコードリポジトリをプロアクティブにスキャンし、開発プロセスの早い段階で脆弱性、設定ミス、シークレット、コンプライアンスの問題を特定します。

  • コードへのトレーサビリティ:クラウド環境でセキュリティの問題が検出されると、Wizは特定のコードと担当チームにさかのぼって追跡し、ソースでの迅速な修復を可能にします。

  • コード内修復ガイダンス:Wizは、開発者が問題を迅速かつ効果的に修正できるように、コード内で詳細なガイダンスを直接提供します。

2. セキュアなソフトウェアサプライチェーン:

  • コンテナー イメージの整合性:Wizは、コンテナイメージの整合性を検証して改ざんを防ぎ、信頼できるイメージのみがデプロイされるようにします。

  • ソフトウェア部品表(SBOM)の可視性:Wizは、エージェントを必要とせずに包括的なSBOMを生成し、 ソフトウェアサプライチェーンこれにより、脆弱性管理が向上します。

3. シフトレフトセキュリティ:

  • CI/CDパイプラインとの統合:WizはCI/CDパイプラインと統合してセキュリティスキャンを自動化し、ポリシーを適用し、セキュリティを開発の初期段階に移行します。

  • シークレット スキャン:パスワード、APIキー、トークンなどの機密情報を検出して、コードリポジトリにコミットされないようにします。 シークレットスキャンとは? ->

  • コンプライアンスチェック:コードがPCI DSS、HIPAA、SOC 2などの業界標準および規制に準拠していることを確認します。

もっと詳しく知る ウィズ'S コードセキュリティソリューション、またはコードから本番環境までクラウドを保護するのにどのように役立つかをご自身でお確かめください。 デモのスケジュール設定。

Secure your cloud from code to production

Learn why CISOs at the fastest growing companies trust Wiz to accelerate secure cloud development.

デモを見る 

続きを読む

What is a Data Risk Assessment?

Wiz エキスパートチーム

A data risk assessment is a full evaluation of the risks that an organization’s data poses. The process involves identifying, classifying, and triaging threats, vulnerabilities, and risks associated with all your data.

AI Governance: Principles, Regulations, and Practical Tips

Wiz エキスパートチーム

In this guide, we’ll break down why AI governance has become so crucial for organizations, highlight the key principles and regulations shaping this space, and provide actionable steps for building your own governance framework.

The EU Artificial Intelligence Act: A tl;dr

Wiz エキスパートチーム

In this post, we’ll bring you up to speed on why the EU put this law in place, what it involves, and what you need to know as an AI developer or vendor, including best practices to simplify compliance.

What is Application Security (AppSec)?

Application security refers to the practice of identifying, mitigating, and protecting applications from vulnerabilities and threats throughout their lifecycle, including design, development, deployment, and maintenance.