Skip to main content

Snyk CodeがC#と.NETのセキュリティスキャンに対応

著者

Frank Fischer

blog feature snyk code path traversal

2021年7月29日

0 分で読めます

まず個人的な話をすると、私は.NETに縁があり、Microsoftで.NETエバンジェリストとして働いていたこともあります。また、C#とTypeScriptの設計者であるAnders Jejlsberg氏にも短時間お会いしたことがあり、この記事には少し個人的な思い入れがあります。

このたび、Snyk Codeが新たにC#のセキュリティ脆弱性をスキャンし、修正方法を提案できるようになりました。これにより、Java、JavaScript、TypeScript、Pythonに対応するポートフォリオに、主要なプログラミング言語が加わります。

System.IO.File.ReadAllTextへのデータフローにおける、C#のパストラバーサル脆弱性のセキュリティ分析

C#は.NET Frameworkと密接に結び付いており、これまで多くの変更を重ねてきました。2020年にバージョン9.0がリリースされ、ECMA(ECMA-334)とISO(23270)の両規格になっています。C#は、構造化、命令型、オブジェクト指向、イベント駆動、タスク駆動、関数型、ジェネリック、リフレクティブ、並行処理型など、複数のパラダイムを備えています。つまり、歴史を持つ成熟した言語です。

C#は開発者向けプログラミング言語市場のおよそ8%を占め、Java、JavaScript、Pythonに次ぐ4位です。もともとはWindowsや業務アプリケーション向けの言語として選ばれていましたが、Unityアプリケーションで広く使われていることから、ゲーム開発やVR業界でも採用されています。

ディレクトリトラバーサルの例、悪用コマンド、C#の修正コードを示すパストラバーサル脆弱性の分析。

C#プロジェクトをSnykに追加する方法

リポジトリをスキャンする方法はいくつかあります。IDEを使えば、バージョン管理システムとは別にソースコードをスキャンできるため、コードをチェックインする前に確認できます。

プロのヒント:フォークやクローンをせずに、オープンソースのリポジトリをスキャンできます。Add project > Monitor public GitHub reposを使うだけです。

Snyk Codeは、GitHub、GitLab、Bitbucket Cloud、Azure Reposに対応しています。インテグレーションはSettingsで設定できます。注:Azure Reposは、Addプロジェクトメニューに直接表示されません。+ Otherをクリックして選択してください。

すでにSnykをご利用の場合、C#の結果をすぐに確認するには、インポート済みのプロジェクトを再スキャンする必要があります。再スキャンしない場合は、通常の再スキャン時に結果が表示されます。

Snyk Codeで脆弱性を検出

Snyk Codeはデータフロー解析を行い、SQLインジェクション、XMLインジェクション、オープンリダイレクト、LDAPインジェクションなど、典型的なインジェクション攻撃を検出します。トレーニングデータでは、パストラバーサルも頻繁に確認されました。この攻撃では、外部データを事前にサニタイズせずに使ってファイルを開きます。攻撃者はファイルパスを利用してディレクトリ間を移動し、保護すべきファイルを読み取ったり、書き換えたりする可能性があります。また、ZIPファイルを展開し、パッケージに保存されたパスを使うと、重要なファイルが上書きされることがあります。これはZip Slipと呼ばれる攻撃で、もちろんSnyk Codeはこれもスキャンします。さらに、Snyk Codeはファイルをまたぐファイル間の問題も検出します。C#ではクラス定義を複数のファイルに分割できるため、特に有用です。

Snyk Codeは、.NET Framework、.NET Core、ASP.NET(4.x)、ASP.NET Coreなど、主要な.NETフレームワークに対応しています。また、通常どおり、C#を使うすべてのライブラリを追加設定なしでサポートします。

プロのヒント:Snyk Codeは、拡張子が*.csのソースファイルをスキャンしますが、*.cshtmlのマークアップファイルはスキャンしません。

今すぐC#プロジェクトを安全に

リリースから6か月が経ち、Snyk CodeはJavaScript、TypeScript、C#、Python、Javaに対応しました。今後も対応言語を増やす予定で、これから数か月の間に新しい言語を次々と追加していきます。お使いの言語がまだリストにない場合は、ぜひ定期的にご確認ください。新しいお知らせがあるかもしれません。

Capture the Flagを始めよう

オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。