Microsoft Application Inspectorでソースコードを解析してみよう
2020-01-22
azblob://2022/11/11/eyecatch/2020-01-22-microsoft-app-inspector-000.png

こんにちは、風邪に悩まされている石川です。

先日、MicrosoftよりApplication Inspectorがリリースされました。ソースコードの解析を行ってくれるツールのようです。早速、使ってみることにします。

Microsoftのリリース記事はこちら

1. ダウンロードする

GitHubのリポジトリ( https://github.com/Microsoft/ApplicationInspector )からダウンロードしてきましょう。

Releasesから実行する環境にあったものを取得するといいと思います。

2. 動かす

日頃扱ってる環境がWindowsなのでWindows用のzipをDLしてきて展開します。コマンドラインツールなのでコマンドラインから実行します。

PS C:\Users\ishikawa.jumpei\Documents\App\ApplicationInspector_1.0.21> .\AppInspector.exe
Microsoft Application Inspector 1.0.21
AppInspector 1.0.21
(c) Microsoft Corporation. All rights reserved

ERROR(S):
  No verb selected.

  analyze        Inspect source directory/file/compressed file (.tgz|zip) against defined characteristics

  tagdiff        Compares unique tag values between two source paths

  tagtest        Test presence of smaller set or custom tags in source (compare or verify modes)

  exporttags     Export default unique rule tags to view what features may be detected

  verifyrules    Verify rules syntax is valid

  help           Display more information on a specific command.

  version        Display version information.

実際にソースディレクトリの解析を行うと以下のような感じになります。

PS C:\Users\ishikawa.jumpei\Documents\App\ApplicationInspector_1.0.21> .\AppInspector.exe analyze -s C:\Users\ishikawa.jumpei\source\repos\*********\
Microsoft Application Inspector 1.0.21
Analyze command running
100% source files processed
Preparing report
Analyze command completed

で、肝心の解析結果はWebページとして表示されます。

ASP.NETのWebApiなのでC#のソースファイルが検出されているのが確認できます。package.jsonとかは付随するjsonファイルが検出されているのかな……

続いてFeaturesページを見てみます。

コード内から検出された要素がハイライト表示されているようですね。

画像では

  • Build - Visual Studioでビルドを行っている
  • Sourcecode Repository - ソースコードを管理するリポジトリがある
  • Development framework - 何れかのフレームワークを使用している

というのが確認できます。

逆にグレーアウトしているものは使われていないということになります。Testing frameworkは色付けなきゃなぁと思いつつ手を付けれていません。

少し戻ってSummaryページのTags Listでは検出された要素が信頼度とセキュリティ的な重要度と一緒に一覧表示されます。

3. 掘り下げる

気になったので検出ルールのファイルを確認してみます。

zipを展開した中にあるrulesから適当なファイルを開いてみます。

regex-wordとあるように正規表現でキーワードを検出しそれを要素のタグと紐づけているようですね。

ということはルールを書くと検出対象の追加もできそうです。

ここではやりませんが…

まとめ

GitHubで公開されてるコードを実行する前に解析にかけてみてどういうことを行っているか確認する、といった感じで使うのもアリなのかなと思います。

中身が若干薄いですがMicrosoftからリリースされたApplication Inspectorを触ってみた記事でした。