BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FacebookのMariana Trenchが、開発者によるAndroidアプリとJavaアプリの脆弱性発見を支援

FacebookのMariana Trenchが、開発者によるAndroidアプリとJavaアプリの脆弱性発見を支援

原文(投稿日:2021/10/02)へのリンク

最近Mariana Trench(MT)がFacebookによってオープンソース化された。MTは開発者がAndroidアプリケーションとJavaアプリケーションのセキュリティとプライバシーのバグを特定して防止するのを支援することを目的としたものだ。

MTは、大規模なモバイルコードベースをスキャンし、本番環境に移行する前にプルリクエストの潜在的な問題にフラグを立てることができるように設計されています。これは、Facebookのセキュリティエンジニアとソフトウェアエンジニアの緊密なコラボレーションの結果として構築されました。彼らがMTをトレーニングし、コードを調べ、データがどのように流れるかを分析します。

Mariana Trenchの背景にある重要な考え方は、多くのプライバシー問題と脆弱性をデータフローの問題(つまり、データが移動してはならない場所に到達すること)としてモデル化できるということである。このアプローチは、Facebookで開発された他のツールでも共有されている。例えば、ZoncolanPysaなどで、これらはHackアプリやPythonアプリにフォーカスしている。

MTのデータフローは、ソースとシンクによって記述される。コードベースにはそのようなソースとシンクを多数含めることができる。MTは、抽象解釈と呼ばれる静的分析手法を使って、ソースから対応するシンクへの利用できるパスを見つけることができる。MTを使うために、エンジニアは機密データがシステムに入る場所(ファイルシステムなど)と、データが移動する予定のない場所(ログファイル、APIなど)を指定する。このプロセスには、ある程度の微調整も必要となる。多数の誤検知がある可能性があるが、それも含めて、特定されたすべての問題のレビューも必要である。

FacebookでMTを使う場合、それが誤検知を増やすことを意味しても、より多くの潜在的な問題を見つけることを優先します。これは、エッジケースに対処しなければならないためです。つまり、本番環境ではめったに発生しないが、理論的には起こり得ることで悪用できてしまうデータフローです。

このトリアージは、最終的に、すべてのPRで実行できる一連のルールの定義につながる。

このプロセスで重要な役割を果たすのは、結果のレビューと分析である。これは、Facebookの静的分析ポストプロセッサ(SAPP)を使うと簡単にできる。これはFacebookが提供する別のオープンソースツールで、MTの未加工の出力を解釈し、データがソースからシンクへどのように送信されるかを示す。以下の画像は、SAPPトレースがどのようなものかを示している。

上記の例では、Mariana Trenchは、MainActivity.onCreateで、Activity.getIntentからのデータを使って、ProcessBuilderのコンストラクタに流れるリモートコード実行を検出した。

Mariana Trenchは、GitHubとPyPIから入手できる。前述のように、MTは任意のJavaリポジトリで実行でき、Androidアプリのみに制限されない。

この記事に星をつける

おすすめ度
スタイル

BT