シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

Security Code Scan - static code analyzer for .NET を試してみた

シナプスの技術部 システム開発課の蔵坪と申します。

.NET用の脆弱性静的解析ツール Security Code Scan - static code analyzer for .NETを、試してみました。

Security Code Scan - static code analyzer for .NET とは

security-code-scan.github.io

オープンソースの.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)をインストールします。

f:id:mkuratsubo:20220113134824p:plain
拡張機能の管理

アプリケーションを落とすように案内が出た場合は、一旦アプリケーションを終了させてください。

バックグラウンド分析の範囲

通常、ソリューションで開いているファイルだけが静的解析の範囲ですが、ソリューション全体を解析することもできます。

f:id:mkuratsubo:20220113144651p:plain
設定

ソリューション全体にしてしまった場合、パフォーマンスが落ちるので注意が必要です。

解析結果

脆弱性がある場合、エラー一覧に、表示されます。

f:id:mkuratsubo:20220113134907p:plain
エラー一覧

上から、クロスサイトリクエストフォージェリ(CSRF)、ディレクトリトラバーサル、SQLインジェクションの脆弱性になります。

エディター上での表記

ソースエディタ上でも、脆弱性が存在する行を教えてくれます。また、具体的どう変更すればいいかも、リンク先(下の図のSCS0002の部分)をクリックすることで教えてくれるので、非常に便利です。

SQLインジェクション

f:id:mkuratsubo:20220113134936p:plain
SQLインジェクション

https://security-code-scan.github.io/#SCS0002

ディレクトリトラバーサル

f:id:mkuratsubo:20220113135003p:plain
ディレクトリトラバーサル

https://security-code-scan.github.io/#SCS0018

CIとの連携

スタンドアロン版を利用することで、CIに組み込むことができます。CIに組み込むことで、Gitへプッシュ時に、エラーにしたり、レビュー時に解析結果を表示することが可能になります。

さいごに

脆弱性のコードは、開発者やレビュアーのケアレスミス(見逃し)でシステムに組み込まれてしまうことが多いと思いますので、開発者、レビュアー側が静的解析を活用することで、アプリケーションの安全性を高めることができそうです。

ただし、脆弱性は、静的解析で100%防ぐことは不可能なので、開発者、レビュアー共に、あくまで補助の一貫であることを意識して、静的解析を利用することが重要だと思いました。