「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 開発者とセキュリティ チーム向けのプロアクティブな AppSec 継続的脆弱性管理

開発者とセキュリティ チーム向けのプロアクティブな AppSec 継続的脆弱性管理

2024 年 11 月 6 日に公開
ブラウズ:155

CISO を多忙にさせている、現代のソフトウェア開発環境で増大するサイバーセキュリティ リスクにはどのようなものがありますか?

開発者とセキュリティ チームは、高度なオープンソース攻撃やベンダー制御のサプライ チェーン攻撃から、プロンプト インジェクションや GitHub Copilot による脆弱なコード セキュリティなどの AI 生成コードによってもたらされる脆弱性まで、増え続けるさまざまな脅威に直面しています。最近のアプリケーションは複雑で、多くの場合、オープン ソース コンポーネント (npm、PyPI、RubyGems など) やコンテナ化されたデプロイメントに大きく依存しているため、課題はさらに増大します。 

これらのリスクの規模と複雑さを考慮すると、脆弱性管理の自動化が不可欠になっています。手動のサイバーセキュリティ プロセスでは、潜在的な脆弱性やソフトウェア開発の量と速度にまったく追いつきません。自動化は、セキュリティ問題の特定と修復を迅速化するだけでなく、セキュリティ チームが定期的にフォローするこれらのプロセスが、ソフトウェア開発ライフサイクルのすべての段階にわたって一貫して適用されることを保証します。

特定のドメインにおける継続的な脆弱性管理の重要性

  • オープンソース コンポーネントへの依存の増大: オープンソース コンポーネントは、現代のソフトウェア開発において広く普及しています。これらのコンポーネントは、アプリケーション開発者の開発を加速し、コストの削減に役立ちますが、重大なセキュリティ リスクももたらします。 XZ バックドアや SolarWinds 侵害などの注目を集めたサプライ チェーン攻撃は、オープンソースの依存関係やベンダーが管理するクローズド コンポーネントの脆弱性が悪用された場合に、広範囲にわたる損害が発生する可能性を浮き彫りにしました。
  • 開発における AI 生成コードの使用の増加: ソフトウェア開発における生成 AI (GenAI) の台頭は、機会と課題の両方をもたらします。 GenAI はコーディング タスクを大幅に高速化できますが、新たな脆弱性が発生する可能性もあります。 AI によって生成されたコードには、経験豊富な開発者が通常行うセキュリティ上の考慮事項が欠けている可能性があり、潜在的なセキュリティ ギャップにつながります。この一例として、React に XSS を導入した GitHub Copilot があります。
  • コンテナ化されたアプリケーションの急速な成長: コンテナ化されたアプリケーションは、最新のソフトウェアを展開するための標準になっています。コンテナーには、環境間の一貫性やスケーリングの容易さなど、数多くの利点があります。ただし、特にコンテナ イメージ内の脆弱性の管理において、新たなセキュリティ上の課題も生じます。そのため、開発者は、最適なコンテナ イメージの選択方法やコンテナに関する一般的なヒントを教育するためにヘルプを利用できますが、Docker コンテナ イメージの脆弱性を自動化することは必須です。
これらをもう少し詳しく見てみましょう… 注目を集めているサプライ チェーン攻撃のもう 1 つの例は、Codecov への攻撃です。攻撃者は、人気のあるコード カバレッジ ツールの脆弱性を悪用して機密データにアクセスしました。開発者の日常業務には、オープンソースの依存関係に関連するリスクの管理が含まれます。オープンソースの依存関係により、コードベースに直接的および推移的な脆弱性が導入される可能性があります。直接的な脆弱性は明示的に含めたライブラリに存在しますが、推移的な脆弱性はそれらのライブラリの依存関係に存在します。これらのリスクを手動で管理するのは困難なため、自動化が堅牢なセキュリティ戦略の重要な要素となっています。

GenAI を使用すると、GitHub Copilot や ChatGPT などの AI コード アシスタントにより、実際の潜在的な脆弱性が導入されます。 GenAI は、安全でないコーディング手法を誤って導入したり、コンテキスト固有のセキュリティ要件を認識できなかったりする可能性があります。たとえば、AI モデルは、SQL インジェクションまたはクロスサイト スクリプティング (XSS) 攻撃に対して脆弱なコードを生成する可能性があります。したがって、AI 生成コードの監視と保護は、アプリケーションのセキュリティを維持するために重要です。 

セキュリティ チームも、コンテナーの新しい脆弱性に対応する複雑さを逃れることはできません。新しいコンテナの脆弱性の急速なペースには圧倒される可能性があります。潜在的な悪用を防ぐために、新たな脆弱性をタイムリーに特定し、修復する必要があります。この複雑さには、コンテナのセキュリティを効果的に管理するためのセキュリティの専門知識を備えた自動化されたソリューションが必要です。

コンテナの脆弱性は、アプリケーションの全体的なセキュリティに重大な影響を与える可能性があります。単一の脆弱なコンテナ イメージがアプリケーション スタック全体を侵害する可能性があります。 Snyk Container のようなツールは、コンテナ イメージの脆弱性を特定して修復するプロセスを自動化します。 Snyk Container は、脆弱性の数を最小限に抑え、コード リポジトリを更新するプル リクエストを自動化する新しいベース イメージ タグを提案できます。

これらの AppSec サイバーセキュリティの脅威をすべて軽減するにはどうすればよいですか?

Snyk によるプロアクティブな AppSec と継続的な脆弱性管理

AI 生成コードに関連するリスクを軽減するには、Snyk Code などのツールの使用を検討してください。 Snyk DeepCode AI を活用したこの高速 SAST ツールは、プラグインを通じて開発者の IDE に直接統合できます。セキュリティ固有のデータ トレーニングを使用して脆弱で安全でないコードを認識し、開発の早い段階で問題を特定して対処します。

Snyk DeepCode AI を始めるのは簡単です。このプラグインは、Visual Studio Code、IntelliJ IDEA、VS Code、PyCharm などの一般的な IDE をサポートします。 

Snyk DeepCode AI を Visual Studio Code にインストールして統合するためのクイック ガイド

    Snyk 拡張機能をインストールします:
    Visual Studio コードを開きます。
  • ウィンドウの横にあるアクティビティ バーの [拡張機能] アイコンをクリックして、[拡張機能] ビューに移動します。
  • 「Snyk」を検索し、Snyk 拡張機能の [インストール] をクリックします。
    Snyk で認証する:
    インストール後、Snyk アカウントで認証するように求められます。
  • 画面上の指示に従ってログインするか、ここでサインアップしてください。
    Snyk DeepCode AI を有効にする:
    認証されたら、アクティビティ バーの Snyk ビューに移動します。
  • Snyk DeepCode AI を有効にしてコードの脆弱性スキャンを開始します。
インストールすると、サイドバーの Snyk ロゴに、オープンソースの依存関係、独自のコード (または GenAI で生成されたコード)、および IaC の問題で見つかった脆弱性とセキュリティの問題が表示されます。

Proactive AppSec continuous vulnerability management for developers and security teams

開発者にとって、IDE 内で安全でないコード パターンを特定できる SAST ツールの利点

  1. リアルタイム フィードバック: コードを作成すると、Snyk DeepCode AI がそれをリアルタイムで分析し、潜在的なセキュリティ問題について即座にフィードバックを提供します。これにより、開発者はコードベースに脆弱性が根付く前に脆弱性に対処できるようになります。
  2. AI 主導の洞察: AI モデルは、セキュリティ固有のデータの膨大なデータセットでトレーニングされ、GenAI によって導入されたものや不適切なプログラミング手法など、安全でないコーディング パターンを認識できるようになります。
  3. シームレスな統合: IDE に直接統合することで、Snyk DeepCode AI は開発者のワークフローに自然に適合し、中断を最小限に抑え、生産性を最大化します。
GenAI によって導入された脆弱性を軽減する例を見てみましょう。このプロジェクトでは GitHub Copilot を使用して、OpenAI API をクエリする Express POST エンドポイント ルートを作成するコードをオートコンプリートし、res.send() を使用して応答をブラウザーに送信しました。

しかし、このペイロードの応答がブラウザーで直接レンダリングされたらどうなるでしょうか?このリクエストの送信にデフォルトの text/html コンテンツ タイプ ヘッダーが使用された場合、クロスサイト スクリプティングの脆弱性が実行中のアプリケーションに影響を与える可能性があります。これについてはどうすればよいでしょうか?

Proactive AppSec continuous vulnerability management for developers and security teams 31 行目上の注釈でわかるように、Snyk はこのセキュリティ問題を修正することを提案しています。それをクリックすると、数秒以内に、Snyk DeepCode AI 拡張機能が、次のように res.send() を res.json に置き換える緩和策を提案しました。

res.json(response.choices[0].message.content);
res.json(response.choices[0].message.content);

この変更により、Express アプリケーションは応答の content-type を強制的に application/json にすることになります。これは汎用テキストであり、alert() などのテキストを許可できます。

IDE で Snyk を活用することで、開発者は基盤となる Snyk DeepCode AI エンジンを使用して脆弱性を積極的に特定して軽減し、最初からコードの安全性を確保できます。アプリケーション セキュリティに対するこの積極的なアプローチは、オープンソースのサプライ チェーンと GenAI が生成したコードに関連するリスクが常に存在する今日の環境では不可欠です。

Snyk オープンソースによる依存関係管理の自動化

Snyk Open Source は、開発者とセキュリティ チームがオープンソースの依存関係に関連するリスクを管理できるように設計された強力なツールです。オープンソース ライブラリへの依存が高まるにつれ、堅牢で自動化された依存関係管理の必要性がかつてないほど重要になっています。 Snyk オープン ソースは、包括的な脆弱性スキャンおよび修復機能を提供し、プロジェクトの安全性と準拠性を確保します。

以前の Node.js アプリケーションでは SQLite 依存関係も使用しており、Snyk は次のようにセキュリティ問題について警告します。

Proactive AppSec continuous vulnerability management for developers and security teams この脆弱性情報は、どの推移的な依存関係がセキュリティ リスクを引き起こしているのか、また可能であればそれを軽減する方法を理解するのに役立ちます。この場合、進行中の推移的な依存関係には中程度の脆弱性があることが検出されます。

Snyk は、ロックファイルと依存関係が古い可能性があることを検出し、修復パスを見つけることができません。ただし、GitHub コード リポジトリを Snyk にインポートするときの実際の自動化を見てみましょう。これにより、Snyk アプリケーションに関する次の情報が表示されます:

Proactive AppSec continuous vulnerability management for developers and security teams この時点から、パッケージ マニフェストでセキュリティの脆弱性が検出された場合、Snyk は自動的に新しいプル リクエストを開き、依存関係のアップグレードを提案します。

依存関係の管理は、プロジェクトに直接組み込むライブラリだけではありません。推移的な依存関係 (直接の依存関係によって引き込まれる依存関係) も脆弱性を引き起こす可能性があります。 Snyk は、直接依存関係と推移的依存関係の両方における脆弱性の特定と修復に優れています。

次のシナリオを考えてみましょう:


{ "依存関係": { "エクスプレス": "^4.17.1", "lodash": "^4.17.20" } }
res.json(response.choices[0].message.content);

この例では、express と lodash は直接の依存関係です。ただし、Express には独自の依存関係のセットがあり、さらに Express にも独自の依存関係がある可能性があります。 Snyk は、この依存関係ツリー全体を調べて、あらゆるレベルの脆弱性を特定して対処します。

コンテナの脆弱性の管理に関しては、Snyk Container を使用すると、ベース イメージ タグをセキュリティ パッチで最新の状態に保つ負担を軽減できます。

Snyk Container は、開発者とセキュリティ チームがコンテナの脆弱性を効果的に管理できるように設計された包括的なソリューションです。企業ではコンテナ化されたアプリケーションのワークロードが普及しており、これらの環境を保護する必要性も高まっています。 Snyk Container は CI/CD パイプラインにシームレスに統合され、コンテナ イメージの脆弱性を継続的に監視し、事前に修復します。

Snyk Container の際立った機能の 1 つは、コンテナ イメージの脆弱性に対処するためのプル リクエストの作成を自動化する機能です。この自動化は、コンテナ イメージを安全に保つために必要な手動の労力を大幅に削減するため、開発者とセキュリティ チームの両方にとって状況を一変させます。

Snyk Container が PR を自動化して Dockerfile 内の脆弱なパッケージを更新する方法の例を次に示します:


FROM ノード:14.1.0 npm install Expressを実行します コピー 。 /アプリ CMD ["ノード", "/app/index.js"]
res.json(response.choices[0].message.content);

Snyk Container は脆弱性を検出すると、問題を軽減するために必要な変更を加えた PR を自動的に生成します。これには、脆弱なパッケージの更新やセキュリティ パッチの適用が含まれる場合があります。このプロセスを自動化することで、Snyk Container は脆弱性に迅速に対処し、危険にさらされる期間を短縮します。

Proactive AppSec continuous vulnerability management for developers and security teams これらの推奨される基本イメージに従うことで、コンテナー イメージ内の脆弱性の数を大幅に減らし、アプリケーションの全体的なセキュリティを強化できます。

Proactive AppSec continuous vulnerability management for developers and security teams Snyk Container は、この基本イメージの複数の脆弱性を特定し、イメージと関連する依存関係を更新するために PR を自動的に生成しました。チームはこれらの PR を迅速にレビューしてマージすることができ、プル リクエストをマージし、CI/CD パイプライン テストが見事に合格することを確認することで、数秒以内に脆弱性の数を 30% 以上削減することができました。

Proactive AppSec continuous vulnerability management for developers and security teams この積極的なアプローチにより、アプリケーションのセキュリティ体制が改善されただけでなく、開発者が脆弱性の管理ではなく、新しい機能の構築に集中できる貴重な時間が解放されました。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/snyk/proactive-appsec-continuous-vulnerability-management-for-developers-and-security-teams-49he?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3