LinkedInがQARKをオープンソース化した。これはJavaで書かれたAndroidアプリに存在する、潜在的セキュリティ脆弱性を発見するための静的解析ツールだ。
QARKは8月のDEFCON 23で紹介され、少ししてGitHubに公開された。QARKは、JavaソースコードのパースにPLYJというPythonツールを、AndroidマニフェストファイルのパースにBeautiful Soupを使っている。また、Procyon、JD-Core、CFR、DEX2JAR、APKToolといった複数のデコンパイラを利用し、その結果をマージすることで、バイナリも扱うことができる。調査対象には以下が含まれる。
- うっかりエクスポートされたコンポーネント
- 不適切に保護された、エクスポートされたコンポーネント
- 横取りや盗聴されやすいIntent
- 不適切なx.509証明書の検証
- 誰でも読み書きできるファイルの作成
- データをリークするおそれのあるActivity
- Sticky Intentの使用
- 安全でなく生成されたPending Intent
- 安全でないBroadcast Intentの送信
- ソースコードに埋め込まれたプライベートキー
- 弱い、不適切な暗号方式の利用
- 攻撃のおそれのあるWebView設定
- エクスポートされたPreference Activity
- タップジャッキング
- バックアップ可能なアプリ
- デバッグ可能なアプリ
- 既知の脆弱性のある古いAPIバージョンをサポートしているアプリ
QARKは脆弱性のおそれを見つけると、簡単な説明と詳細情報を含むWebページへのリンクを提供する。また、見つかった脆弱性がどのように悪用されるか示すため、テスト可能なAPKと発行するADBコマンドを生成することができる。
QARKは今後、Bound ServiceとContent Providerの脆弱性やJava/Androidに無関係な問題の発見、ODEXファイルのパース、拡張性の改善、動的解析などをサポートするよう拡張される予定だ。
Androidツールチェインに統合して、自動的に問題を検出することもできるが、作者はアプリケーションを手作業でレビューし続けることを推奨している。静的解析では見つけることのできない種類の脆弱性があるとともに、ツールがまだカバーしていない脆弱性があるためだ。