「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > AIでコードの脆弱性を自動修正

AIでコードの脆弱性を自動修正

2024 年 11 月 8 日に公開
ブラウズ:493

Snyk の SecRel 顧客ワークショップのライブラリには、Breaking AI と呼ばれるものがあります。このワークショップでは、copilot や codium などの生成 AI アシスタントが、開発者がコードをより速く書くのにどのように役立つかについて説明します。ワークショップの大きなオチは、AI アシスタントはコーディング ブート キャンプから出てきたばかりのジュニア開発者のようなものであるということです。非常に熱心で親切ですが、あなたは本当に コードをチェックしたいのです (ジュニア開発者には影がありません - 私たちはそれらは必要であり、素晴らしいものです!)。ワークショップでは、AI アシスタントと Snyk を組み合わせることで、コードを迅速かつ安全に作成するというスーパーパワーがどのように得られるかを示します。

有名なシェフの言葉を借りれば、Snyk は Deep Code AI Fix 機能で「ワンランク上のレベルアップ」を果たしました。 Snyk Code は、セキュリティの脆弱性を発見した場合、常に適切な修復アドバイスを提供してきました。同じ脆弱性を持つ他のオープンソース プロジェクトに関する 3 つの優れたリファレンスも提供し、それらのプロジェクトがどのように脆弱性を修正したかを示します。現在、Snyk のセキュリティ研究チームからの慎重に厳選されたデータ、生成 AI とシンボリック AI、機械学習モデルの力を組み合わせたハイブリッド AI モデルのおかげで、Snyk は多くの一般的なセキュリティ脆弱性を快適な状態から自動修正できるようになりました。お気に入りの IDE。

このブログでは、ワークショップで使用する Java サンプル プロジェクトで Deep Code AI Fix (DCAIF) を最大限に活用する方法を説明します。ソースコードはここにあります。注: このプロジェクトにはいくつかの点で意図的に脆弱性があり、実稼働環境での使用には適していません。

会議スケジュール アプリを使って楽しむ

テクノロジー カンファレンスに参加したり講演したことがある方なら、スケジュールを作成して提示することが最も難しい側面の 1 つであることをご存知でしょう。

リファレンス アプリはこれのひどいバージョンです (私は優れたフロントエンド開発者ではありません!) が、コードが技術的にどのように機能し、同時に安全ではないかを示すのに役立ちます。

Thymeleaf テンプレート エンジンを使用した Spring Boot アプリです。起動時に、一般的な Faker ライブラリを使用して、ランダムなスピーカー、トーク タイトル、トーク説明データを生成します。講演のタイトルと説明はすべて、『銀河ヒッチハイク ガイド』という本の本文から引用しています。注: タイトルと説明はすべて作業に 100% 安全であるとは限りません。警告されました!

イベント用に生成された各講演者には、カンファレンスでの講演のリストを確認できる専用ページもあります。アプリのこの部分に焦点を当てます。

アプリをコンパイルして実行するには、次のコマンドを実行します:

mvn clean install
mvn spring-boot:run

アプリを実行すると、通常の Spring Boot バナーやその他の出力に加えて、次のような出力が表示されます。

Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis
Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier
Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones
Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey
Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast
Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann
Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill
Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner
Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster
Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane
Access talks for micah at: http://localhost:8081/talks?username=micah

注: スピーカーとそのトークはアプリを起動するたびにランダムに生成されるため、まったく同じではありません。

リンクの 1 つをクリックするか、コピー/ペーストすると、講演のリストを含む講演者のページが表示されます。

Automatically fix code vulnerabilities with AI

遊んでみましょう: 脆弱性を見つけてください

TalkController.java を見てください。講演者のページはこのようにしてレンダリングされます。脆弱性を見つけることができますか?

自分の目に頼る必要はありません。私たちは開発者が迅速に行動し、安全なコードを書くことを望んでいます。

私は IntelliJ Idea を使用して Java アプリケーションを作成しています。 Snyk の IDE 拡張機能も使用しています。良いニュースは、すべての人気のある IDE 用の Snyk IDE 拡張機能があり、幅広いプログラミング言語をサポートしていることです。

Snyk アカウントをお持ちでないが、フォローしたい場合は、ここで無料で作成できます。

このアプリには多くの脆弱性があると言いましたか?それは私たちがワークショップで使用しているからです。私が注目したいのは、TalkController.java:

にあるものです。

Automatically fix code vulnerabilities with AI

  1. クロスサイト スクリプティング (XSS) の脆弱性が見つかったことを示します
  2. 同じ脆弱性を持つ 3 つのオープンソース プロジェクトのうちの 1 つとの差分を表示します。これは、どのように修正されたかを示しています (緑色の部分)。
  3. 赤い波線は、コード内の脆弱性のある場所を示します。

これはすべて、問題の解決に非常に役立つ情報です。ただし、#1 の脆弱性の左側にある小さな稲妻アイコン (⚡️) に注目してください。これは、この脆弱性が自動的に修正できることを示しています。

赤い波線の上にマウスを置くと、この問題を解決する:

のオプションが表示されます。

Automatically fix code vulnerabilities with AI
Deep Code AI Fix の結果を見る前に、副操縦士が何をしてくれるか見てみましょう。

これが、42 行目で副操縦士に与えたプロンプトと、それが挿入するコードです:

// guard against XSS
username = username.replaceAll("", ">");

これは 可能性があります が、単純な攻撃に対しては機能する可能性がありますが、すべての種類の XSS 攻撃に対して機能しますか?よくわかりません。実際、Snyk スキャンを再実行すると、XSS 脆弱性は依然として存在します。

Snyk の修正を見てみましょう:

String usernameStr = ""   HtmlUtils.htmlEscape(username)   "'s talks";
================================================


さて、これが好きです。これは、組み込みの Spring Boot ライブラリである HtmlUtils を使用した、慣用的で予想されるアプローチを使用します。これにより、入力: ユーザー名が完全にサニタイズされると確信しています。新しい Snyk スキャンにより、脆弱性が存在しないことがわかりました。

Automatically fix code vulnerabilities with AI
確かに、賛成です! Snyk の自動修正は脆弱性を解決しただけでなく、使用されているフレームワーク (この場合は Spring Boot) に一致する方法で解決しました。

DCAIF は速度を低下させません

この投稿では、Snyk の Deep Code AI Fix が単なる修復アドバイスを超えて、お客様に代わってどのように修復できるかを説明しました。元のセキュリティ脆弱性がなくなったことで、修正の利点を確認することもできます。

Snyk では AI アシスタントが大好きですが、セキュリティに関してはあまり得意ではありません。私たちの調査によると、世の中の Gen AI は人間とほぼ同じ割合 (約 40%) で安全でないコードを生成する傾向があります。 Copilot のような純粋な Gen AI ソリューションが主に既存のコードに基づいてモデルをトレーニングするため、これは理にかなっています。 Snyk のハイブリッド アプローチには、シンボリック AI、Gen AI、機械学習、セキュリティ チームからの精選されたトレーニングが含まれており、結果としてセキュリティ第一のアプローチが得られます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/snyk/automatically-fix-code-vulnerabilities-with-ai-4dbf?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

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

Copyright© 2022 湘ICP备2022001581号-3