Snyk CodeがC#と.NETのセキュリティスキャンに対応
Frank Fischer
2021年7月29日
0 分で読めますまず個人的な話をすると、私は.NETに縁があり、Microsoftで.NETエバンジェリストとして働いていたこともあります。また、C#とTypeScriptの設計者であるAnders Jejlsberg氏にも短時間お会いしたことがあり、この記事には少し個人的な思い入れがあります。
このたび、Snyk Codeが新たにC#のセキュリティ脆弱性をスキャンし、修正方法を提案できるようになりました。これにより、Java、JavaScript、TypeScript、Pythonに対応するポートフォリオに、主要なプログラミング言語が加わります。

C#は.NET Frameworkと密接に結び付いており、これまで多くの変更を重ねてきました。2020年にバージョン9.0がリリースされ、ECMA(ECMA-334)とISO(23270)の両規格になっています。C#は、構造化、命令型、オブジェクト指向、イベント駆動、タスク駆動、関数型、ジェネリック、リフレクティブ、並行処理型など、複数のパラダイムを備えています。つまり、歴史を持つ成熟した言語です。
C#は開発者向けプログラミング言語市場のおよそ8%を占め、Java、JavaScript、Pythonに次ぐ4位です。もともとはWindowsや業務アプリケーション向けの言語として選ばれていましたが、Unityアプリケーションで広く使われていることから、ゲーム開発やVR業界でも採用されています。

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の課題の解き方を学びましょう。
