Microsoft、ソースコード解析ツール「Application Inspector」をOSSとして公開:数百万行のコードを解析可能
Microsoftは、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector」を公開した。多種多様なプログラミング言語で記述されたコンポーネントを使用した数百万行のコードを解析できる。コードの時間的な変化はもちろん、特に「危険な」部分がどこなのかを特定できる。
Microsoftは2020年1月16日(米国時間)、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector(Application Inspector)」を公開したと発表した。
Microsoftは高品質のソフトウェアとサービスを提供するため、オープンソースソフトウェア(OSS)を使って開発を行っている。だが、OSSを信頼することには固有のリスクが伴う。このような認識から、今回のツールを開発したとしている。
現代のソフトウェア開発では、組織内の別のチームが記述したコードはもちろん、外部のベンダー、オープンソースコミュニティーの「誰か」が作成したコードを使って、アプリケーションを構築することは珍しくない。その結果、何百ものコンポーネントを扱うことになる。このような手法にはメリットがある。コードを再利用することで、市場投入が早くなり、品質や相互運用性なども向上する。だが、副作用もある。複雑さが増え、リスクを伴うことだ。
社内の開発チームを信頼できたとしても、内製のコードがアプリケーション全体に占める割合は小さい。外部から調達したコンポーネントが実際に何を実行しているのか、明確に理解していない場合も少なくない。
静的解析ツールとの違いは?
Application Inspectorは、ソースコードから“興味深い”機能(暗号化の利用やリモートエンティティーへの接続など)やメタデータ(動作プラットフォームなど)を特定する。これによって開発者は、アプリケーションが使用するソフトウェアコンポーネントをよりよく理解できる。
Application Inspectorは一般的な静的解析ツールとは異なるという。同社によればこうだ。
「コードの中で出来の悪い部分を検出するだけではない。手動では特定するのに時間がかかる、あるいは特定が困難な、興味深い特徴を発見できる」
これはどのような意味なのだろうか。Microsoftは次のようなPythonで記述されたスニペットを使って説明している。
このスニペットは特定のURLからコンテンツをダウンロードし、ファイルシステムに書き込み、シェルコマンドを実行して、ファイルの詳細情報をリスト表示する。
このコードにApplication Inspectorを適用すると、次のように機能を3行で特定できるため、このプログラムが何を実行するかがよく分かる。
- FileOperation.Write
- Network.Connection.Http
- Process.DynamicExecution
Application Inspectorが力を発揮する場面は?
Application Inspectorは、多種多様なプログラミング言語で作成されたコンポーネントを使用した数百万行のソースコードを解析できる。こうした作業は手動では不可能だ。
同社は、Application Inspectorを次のような目的で使っているという。
- コードの変化を追う バージョン間でコンポーネントの機能セットに加えられた主要な変更を特定する。これにより、攻撃対象領域の拡大から、悪意あるバックドアまで、さまざまなことが明らかになる
- 危険なコードを特定する 高リスクコンポーネントや、追加調査を要する予想外の機能を持つコンポーネントを特定する。これは、「暗号化や認証、デシリアライズに関わるコンポーネントの脆弱(ぜいじゃく)性は、他の部分の脆弱性よりも大きな影響を及ぼす可能性が高い」という考え方に基づく
Application Inspectorを使うには
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- C++やPython向けのコード可視化ツール「Sourcetrail」がオープンソースに
Coati Softwareは、クロスプラットフォームのインタラクティブなコード可視化ツール「Sourcetrail」を、無料のオープンソースソフトウェアとして公開した。CやC++、Java、Pythonなどに対応している。コードを読むことにほとんどの時間を費やす開発者に役立つツールだ。 - 「未対策なら1分でできる」 スマホアプリの改ざんを防ぐには?
スマートフォン向けアプリケーションを開発する際にもセキュリティ対策は欠かせない。DeNAの舟久保氏は内製ツールと自作アプリを利用して模擬的に改ざん行為を行い、アプリ開発時にどういった対策が有効になるかを解説した。 - Microsoft、安全で高効率のプログラミング言語として「Rust」を高く評価
Microsoft Security Response Center(MSRC)は、ソフトウェアのセキュリティ確保と効率性の両方の要件を満たす最も有望なシステムプログラミング言語の一つとして、「Rust」を高く評価した。メモリ破壊バグをそもそも作り込まないことでセキュリティを確保できるという。