シナプスの技術部 システム開発課の蔵坪と申します。
.NET用の脆弱性静的解析ツール Security Code Scan - static code analyzer for .NETを、試してみました。
Security Code Scan - static code analyzer for .NET とは
オープンソースの.NET用の脆弱性の静的解析ツールになります。さまざまなセキュリティの脆弱性パターンを検出することができます。
- SQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)、XML外部エンティティインジェクション(XXE)など。
Visual Studio 2019の拡張機能
Security Code Scanは、Nuget パッケージ、Visual Studio 拡張機能、スタンドアロン版で提供されております。今回は、Visual Studio 2019 拡張機能での利用方法を紹介します。
インストール
拡張機能のインストールで、検索ボックスにSecurity Code Scan
を入力し、Security Code Scan(for VS2019 and newer)
をインストールします。
アプリケーションを落とすように案内が出た場合は、一旦アプリケーションを終了させてください。
バックグラウンド分析の範囲
通常、ソリューションで開いているファイルだけが静的解析の範囲ですが、ソリューション全体を解析することもできます。
ソリューション全体にしてしまった場合、パフォーマンスが落ちるので注意が必要です。
解析結果
脆弱性がある場合、エラー一覧に、表示されます。
上から、クロスサイトリクエストフォージェリ(CSRF)、ディレクトリトラバーサル、SQLインジェクションの脆弱性になります。
エディター上での表記
ソースエディタ上でも、脆弱性が存在する行を教えてくれます。また、具体的どう変更すればいいかも、リンク先(下の図のSCS0002の部分)をクリックすることで教えてくれるので、非常に便利です。
SQLインジェクション
https://security-code-scan.github.io/#SCS0002
ディレクトリトラバーサル
https://security-code-scan.github.io/#SCS0018
CIとの連携
スタンドアロン版を利用することで、CIに組み込むことができます。CIに組み込むことで、Gitへプッシュ時に、エラーにしたり、レビュー時に解析結果を表示することが可能になります。
さいごに
脆弱性のコードは、開発者やレビュアーのケアレスミス(見逃し)でシステムに組み込まれてしまうことが多いと思いますので、開発者、レビュアー側が静的解析を活用することで、アプリケーションの安全性を高めることができそうです。
ただし、脆弱性は、静的解析で100%防ぐことは不可能なので、開発者、レビュアー共に、あくまで補助の一貫であることを意識して、静的解析を利用することが重要だと思いました。