GitHub Copilot のような生成 AI コードアシスタントを導入するための 5 つのセキュリティベストプラクティス

blog-feature-ai-lilac

2024年3月5日

0 分で読めます

少し前までは、AI は SF 映画の中の世界のような未来的なアイデアとして一般的に考えられていました。『her/世界でひとつの彼女』や『エクス・マキナ』のような映画は、AI がパンドラの箱であり、一度開けてしまうと予期せぬ結果をもたらす可能性があると警告さえしました。それ以来、状況は一変しました。これには、ChatGPT のアクセス性と普及が大きく貢献しています。今年 5 月に Gartner が経営陣を対象に行った調査では、組織の 89% が生成 AI を調査中かすでに実装していることを示していますが、同時期の Gartner の別のレポートでは、2025年 までに製品開発のコードの 80% 以上が AI によって生成されると予測しています。

開発者は、GitHub Copilot、Amazon CodeWhisperer、OpenAI の ChatGPT などの AI コーディングアシスタントを使用して生産性を大幅に向上させ、生成 AI から大きな恩恵を受けています。ただし、これらの AI ツールは強力で大きな転換をもたらしますが、エラーやハルシネーションは依然として起こりやすいため、開発者を置き換えるのではなく、強化する目的のみに使用する必要があります。そのため、イノベーションを恐れずに進められるように、AI 生成コード、セキュリティツール、ガードレールに対する人間による慎重な検証、および生成 AI コーディングツールの安全な使用を保証するその他の措置を実装する必要があります。ここでは、5 つのベストプラクティスを適用して AI コード補完ツール (Copilot など) を安全に採用する方法を学び、Snyk が安全性を簡単に維持する方法を確認します。

プラクティス 1:常に人間を関与させる

人間によるチェックと検証が欠如している (または不十分である) ことは、生成 AI コードツールを導入する際の典型的な間違いの 1 つです。前述したように、これらのツールは開発者の支援のみを目的としており、絶対的なものではありません。そのため開発者は、AI コーディングツールの実装前と同じ安全な習慣を実践し、AI によって生成されたかどうかにかかわらず、引き続きコードを注意深くチェックする必要があります。

AI とは、経験は浅いが、一度に何千ものスタックオーバーフロースレッドを読み取る能力を備えている開発者のようなものです。新米の開発者が書いたコ​​ードを確認せずにプッシュすることは決してありません。AI のスピードに騙されてその能力を過大評価しないよう注意してください。

チームには AI によって生成されたコードのリスクと利点について教育すべきであり、定期的なコードレビューを組織内部のソフトウェア開発慣行の一部に組み込むことが求められます。IDE で検証、テスト、修正を行います。これらの習慣をビジネスポリシーや手順書に組み込むべきであり、チームがそのような習慣の重要性を理解し、必要なコードレビューを適切に実施できるよう、定期的なトレーニングを実施することが求められます。

プラクティス 2:独立した公平なセキュリティツールを使用して IDE から AI コードをスキャンする

次の 2 つのことは密接に関連しています。第一に、AI による開発支援の効果を十分に認識するためには、従来のセキュリティレビューで開発が遅れることがあってはなりません。開発者の数はセキュリティ担当者の数をすでに圧倒的に上回っており、チームはシフトレフトのセキュリティ手法を採用することが求められます。AI によって開発者の成果が向上している現在、作成される脆弱なコードの量も増加しているため、シフトレフトは選択肢ではなく、必須要件となっています。その最も簡単な方法は、セキュリティスキャンを IDE に直接組み込むことです。そうすることで、コードを作成された瞬間にスキャンし、脆弱性が開発パイプライン全体に拡散した後で事後対応的に追跡するのではなく、プロアクティブに捕捉できるようになります。

第二に、スキャンは、コード作成ツールとは別のセキュリティツールで実行する必要があります。これは、開発者チームとセキュリティチームが分離しているのと同じ理由です。コードを作成しているチームにコードの保護も行わせると、多くの脆弱性がすり抜ける可能性があるからです。セキュリティは複雑であり、開発とは分野が異なります。 

コード作成ツールで使われる AI は、機能するコードを作成できるように機能するコードでトレーニングされています。一方、コードの保護という 1 つのことだけを実行する専用のセキュリティツールは、セキュリティの問題を確実に検出して修正できるよう、セキュリティに重点を置いたデータのみでトレーニングされています。それに加えて、セキュリティツールは、スキャン対象の現在のコードスニペットだけでなく、アプリケーションの完全なコンテキストを理解できる必要があります。それにより、セキュリティ修正に起因するバグがスキャン範囲以外の場所で発生することがなくなります。Snyk Code がルールベースのシンボリック AI を使用して LLM からの修正候補をスキャンし、追加の問題を引き起こさない修正オプションのみをユーザーに提供しているのはこのためです。 

AI では、2 つの異なるチーム (開発とセキュリティ) が関与するのと同様に、2 つの異なるツール (1 つは書き込み用、もう 1 つはセキュリティ保護用) が必要になります。単独でしか意味をなさないコードスニペットが返されることがないように、これらのツールはいずれも、アプリケーションの完全なコンテキストを理解している必要があります。

プラクティス 3:サードパーティのコードを検証する

平均すると、アプリケーション内のコードの 70% がオープンソースコードです。つまり、アプリケーションの 70% は社外の誰かによって作成および保護されており、顧客データを狙う悪意のあるアクターにとって脆弱性が侵害ポイントとなったとしても、その人物が責任を負うことはできません。

開発者がサードパーティの依存関係を使用する場合は、ソフトウェアコンポジション解析 (SCA) ツールを常に使用して依存関係をスキャンし、安全かどうかを判断する必要があります。SCA ツールは、脆弱なパッケージを検出し、脆弱性の内容 (タイプ、重大度など) を報告して、修復パスを提案します。

AI によって作成されるコード、サードパーティの依存関係を取り込みます。前述したとおり、AI は、極めて迅速にコードを書くことが得意な、一人の開発者にすぎません。そのコードの依存関係もすべてスキャンする必要があります。LLM ベースの AI ツールが、サードパーティパッケージに関する最新の発見事項やリリースに関して常に少し遅れをとっていることを考えるとなおさらです。AI には SCA が必要です。これを念頭に置いて、AI から提案されるオープンソースライブラリを常に手動で検証し、Snyk Open Source などのツールを使用してこれらのライブラリを手動でテストすることをお勧めします。

プラクティス 4:チームやプロジェクト全体でテストを自動化する

自動化されていないと、テストが行われない可能性が高くなります。自動化は基本的なベストプラクティスであるため、cron ジョブを作成する Unix 管理者から、自動テストを実装する QA チーム、Python スクリプトを使用して広大なインフラストラクチャを開発する DevOps チームまで、ほぼあらゆる場所で見受けられます。自動化は作業を容易にするだけでなく、何かを失念することを不可能にします。

CI/CD から自動的にアプリケーションを保護するセキュリティツールを実装し、チームがすでに使用しているワークフローに組み込みます。

プラクティス 5:IP を保護する

AI ツールの使用に関するポリシーを実装する場合、ツールがプロプライエタリコードから学習できないようにすることが非常に重要です。Samsung は 2023 年、使用法ベースのトレーニング中に自社のプロプライエタリデータが漏洩した後、ChatGPT の使用を禁止しました。自社の競合上の優位性が同業他社の開発者に提案コードとして提供されるような事態は避けなければなりません。 

テクノロジーを利用してこれを実践するのは容易ではないため、AI の使用ポリシーを綿密に文書化し、チームを十分に訓練することが非常に重要です (許可された使用方法、必須の慣行、潜在的な結果を明確に指定)。また、LLM に入力したデータはすべてトレーニングに使用されると想定します。LLM には、そのジョブを実行するために必要な最小限の情報 (機密情報を除く) のみを提供し、ユーザーからの入力と LLM からの出力をサニタイズするために入出力チェックを実装することを検討してください。

AI コーディングアシスタントを安全に使用する

AI コーディングアシスタントが未来であることは間違いありません。チームがこれまで以上に迅速に行動し、これまで以上に多くのコードを生成するようになる中、出荷されるアプリケーションの安全性を確保することが必要です。適切なポリシーとトレーニングが必要であり、特に重要なこととして、チームの継続的な前進を加速させるには、適切なセキュリティツールが不可欠です。ここで本領を発揮するのが Snyk です。

業界をリードするインテリジェンスとエキスパートインザループのハイブリッド AI に支えられた Snyk の開発者セキュリティプラットフォームは、(人間または AI が書いた) コードをスキャンし、IDE 内でワンクリックの修正案をインラインで提供します。これにより、開発者は迅速に作業を続け、セキュリティチームが行き詰まるのを防ぐことができます。 

AI 生成コードを安全に使用できるよう Snyk がお手伝いいたします。専門家によるデモを予約して、Copilot に必要なセキュリティコパイロットの役割を Snyk がどのように果たすかをご確認ください。

Snyk (スニーク) は、デベロッパーセキュリティプラットフォームです。Snyk は、コードやオープンソースとその依存関係、コンテナや IaC (Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。世界最高峰の脆弱性データベースを基盤に、Snyk の脆弱性に関する専門家としての知見が提供されます。

無料で始める資料請求

© 2024 Snyk Limited
Registered in England and Wales

logo-devseccon