検索
ニュース

Microsoft、ソースコード解析ツール「Application Inspector」をOSSとして公開数百万行のコードを解析可能

Microsoftは、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector」を公開した。多種多様なプログラミング言語で記述されたコンポーネントを使用した数百万行のコードを解析できる。コードの時間的な変化はもちろん、特に「危険な」部分がどこなのかを特定できる。

Share
Tweet
LINE
Hatena

 Microsoftは2020年1月16日(米国時間)、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector(Application Inspector)」を公開したと発表した。

 Microsoftは高品質のソフトウェアとサービスを提供するため、オープンソースソフトウェア(OSS)を使って開発を行っている。だが、OSSを信頼することには固有のリスクが伴う。このような認識から、今回のツールを開発したとしている。

 現代のソフトウェア開発では、組織内の別のチームが記述したコードはもちろん、外部のベンダー、オープンソースコミュニティーの「誰か」が作成したコードを使って、アプリケーションを構築することは珍しくない。その結果、何百ものコンポーネントを扱うことになる。このような手法にはメリットがある。コードを再利用することで、市場投入が早くなり、品質や相互運用性なども向上する。だが、副作用もある。複雑さが増え、リスクを伴うことだ。

 社内の開発チームを信頼できたとしても、内製のコードがアプリケーション全体に占める割合は小さい。外部から調達したコンポーネントが実際に何を実行しているのか、明確に理解していない場合も少なくない。

静的解析ツールとの違いは?

 Application Inspectorは、ソースコードから“興味深い”機能(暗号化の利用やリモートエンティティーへの接続など)やメタデータ(動作プラットフォームなど)を特定する。これによって開発者は、アプリケーションが使用するソフトウェアコンポーネントをよりよく理解できる。

 Application Inspectorは一般的な静的解析ツールとは異なるという。同社によればこうだ。

 「コードの中で出来の悪い部分を検出するだけではない。手動では特定するのに時間がかかる、あるいは特定が困難な、興味深い特徴を発見できる」

 これはどのような意味なのだろうか。Microsoftは次のようなPythonで記述されたスニペットを使って説明している。


Pythonで記述したスニペット(出典:Microsoft

 このスニペットは特定のURLからコンテンツをダウンロードし、ファイルシステムに書き込み、シェルコマンドを実行して、ファイルの詳細情報をリスト表示する。

 このコードにApplication Inspectorを適用すると、次のように機能を3行で特定できるため、このプログラムが何を実行するかがよく分かる。

  • FileOperation.Write
  • Network.Connection.Http
  • Process.DynamicExecution

Application Inspectorが力を発揮する場面は?

 Application Inspectorは、多種多様なプログラミング言語で作成されたコンポーネントを使用した数百万行のソースコードを解析できる。こうした作業は手動では不可能だ。

 同社は、Application Inspectorを次のような目的で使っているという。

  • コードの変化を追う バージョン間でコンポーネントの機能セットに加えられた主要な変更を特定する。これにより、攻撃対象領域の拡大から、悪意あるバックドアまで、さまざまなことが明らかになる
  • 危険なコードを特定する 高リスクコンポーネントや、追加調査を要する予想外の機能を持つコンポーネントを特定する。これは、「暗号化や認証、デシリアライズに関わるコンポーネントの脆弱(ぜいじゃく)性は、他の部分の脆弱性よりも大きな影響を及ぼす可能性が高い」という考え方に基づく

Application Inspectorを使うには

 Application Inspectorはコマンドラインから使う。動作には.NET Coreが必要だ。出力は多様であり、JSONやインタラクティブHTMLなど、さまざまなフォーマットを選択できる。HTMLレポートの例を次に示す。


Application InspectorのHTML出力の例(出典:Microsoft

 レポート内の各アイコンは、ソースコード内で識別された機能を表す。これらの機能はレポートの右側に展開される。特定のリンクをクリックすると、選んだ機能に該当するスニペットを表示する。

 さらに、特定された機能は大きく機能区分されたカテゴリーに分類される。各行を展開すると、それぞれの機能の信頼度が分かる。


コードから特定した機能の信頼度を表示したところ(出典:Microsoft

 Application Inspectorは、多くの一般的なプログラミング言語をカバーする数百の機能検出パターンを備えており、次のような機能をサポートしている。

  • アプリケーションフレームワーク(開発、テスト)
  • クラウド/サービスAPI(Microsoft Azure、Amazon Web Services、Google Cloud Platform)
  • 暗号化(対称型、非対称型、ハッシング、TLS)
  • データ型(個人を特定可能な機密情報)
  • OSの機能(プラットフォーム特性、ファイルシステム、レジストリ、ユーザーアカウント)
  • セキュリティ機能(認証、許可)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る