Snyk CodeとSymbolic AIでセキュリティ課題を解決
2025年2月27日
0 分で読めますコードパスを分析し、セキュリティ脆弱性を検出する自動化されたエキスパートシステムとして、Symbolic AIはどれほど優れているのでしょうか?Snyk Codeをテストし、ルールベースのアルゴリズムシステムの利点を実証します。
SnykのSymbolic AIセキュリティエンジンとは?
コードベースの静的セキュリティ分析を行うSnykのSASTエンジンは、Symbolic AIシステムを基盤としており、より高い精度と高速な実行を実現します。また、セキュリティ研究者の専門知識を深く活用し、脆弱性ルールを基盤とするセキュリティエキスパートシステムを提供します。
こうしたSnyk Codeの特長により、従来のパターンマッチング(grepのような正規表現検索)より優れた技術で、コード内の脆弱性を検出できます。
SASTがコードセキュリティの課題を解決
Florin Walterは、セキュリティの実務家であり、ペネトレーションテスターです。ここ数カ月、LinkedInでセキュリティ課題やセキュアコーディングのクイズ記事を共有しています。
さまざまなプログラミング言語のコードに潜む脆弱性をSnykが検出できるか気になり、Florinのコードリポジトリをインポートしました。この記事の続きで、その検出結果を見ていきます。
PythonのFlaskアプリケーションにおけるオープンリダイレクト
Flaskは、Pythonで人気のWebアプリケーションフレームワークです。次のPythonコードでは、異なるルートを使ってホームページとログインページを表示します。
しかし、ユーザーやシステム間でリダイレクト先URLを指定できるため、オープンリダイレクトの脆弱性が潜んでいます。
開発者は、プロダクトバックログにある製品関連のタスクを優先するあまり、見落としてしまうかもしれません。それでも、SnykはこのPythonコードに静的アプリケーションセキュリティテストを実行し、オープンリダイレクトの脆弱性を検出できます。

Snykは、安全でないコードを検出するだけにとどまりません。オープンソースコミュニティから得たセキュリティ上の欠陥とその修正をSnykの機械学習エンジンが分析することで、開発者がコードに適用できるセキュリティ修正を推定して提案し、このオープンリダイレクトの脆弱性を解消できます。
以下は、Snykが提案する3つのコード修正のうち1つのスクリーンショットです。脆弱性の防止に関するベストプラクティスと、この種のセキュリティ脆弱性についてのコンテキスト情報も表示されています。

Node.jsアプリケーションのJavaScriptコードにおけるSSRFとXSS
次のセキュリティ課題はJavaScriptで書かれており、Expressで構築されたサーバーサイドのNode.js Webアプリケーションを題材にしています。
コードに目を通して、セキュリティ脆弱性を見つけてみてください。
この課題もSnykにインポートしました。以下は、Snykが検出した複数の問題です。
Axiosを使用したサーバーサイドリクエストフォージェリ(SSRF)
Snykは、HTTPパラメーター(req.query.url)から取得したサニタイズされていない入力が、24行目のHTTPクライアントライブラリaxiosに渡されていることを検出しました。このurl変数は、HTTPリクエストの送信先となるリモートURLを指定します。
ユーザーがURL全体を制御できるため、http://localhostのような内部アドレスや、データの収集・情報の抽出に使えるその他の内部IPアドレスや予約済みIPアドレスを指定し、悪用する可能性があります。
Snykは、脆弱性の影響を受けるすべてのコードパスと関連するコード行を示し、安全でないコードを次のように特定しました。

ExpressのHTTPレスポンスにおけるクロスサイトスクリプティング脆弱性
上記のコードでは、完全なURLを制御可能な変数を使ってHTTPリクエストを送信するため、SSRFの脆弱性があります。Snykはさらに別の脆弱性も検出しました。

次の問題は見つけにくく、SSRFだけの問題ではありません。Snykの分析で25行目にハイライトされたコードに注目すると、HTTPレスポンスがそのままブラウザーに送信されていることがわかります。
ExpressはデフォルトでHTTPレスポンスヘッダーをapplication/htmlに設定します。つまり、攻撃者がリモートサーバーを制御できる場合、悪意あるJavaScriptコードを埋め込んでクライアント側でXSSを引き起こし、ブラウザーにHTMLレスポンス全体を解釈させることができます。
Snykが検出するもう1つの安全でないコードの問題は、CRLFインジェクションの可能性です。上記のExpress Webアプリケーションコードのこの部分を見てみましょう。
SnykのSASTは、脆弱性の検出結果の一部として、このCRLFインジェクションの可能性も簡単に検出します。

Snykはどのようにコードをセキュリティ脆弱性から守るのですか?
Snykの静的アプリケーションセキュリティテストツールSnyk Codeを使えば、IDE内に安全でないコードの検出結果がリアルタイムで表示され、開発者はコードの脆弱性を見つけられます。
無料で今すぐ始めましょう。VS Code Snyk拡張機能をインストールして、セキュリティのバグを一掃しましょう!

無料のオンラインコードチェッカーツール
次のコミットの前に、コードを安全に保護しましょう。



