慣性聚合 関心のあるブログ、ニュース、テクノロジーを効率的に追跡
原文を読む 慣性聚合で開く

おすすめ購読元

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
博客园 - 叶小钗
MyScale Blog
MyScale Blog
V
Visual Studio Blog
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
I
InfoQ
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python)
私はセキュリティスキャナーで10個の人気F-Droidアプリをスキャンしました—オープンソースでセキュア
Yehor Mamaie · 2026-05-24 · via DEV Community

Yehor Mamaiev

「オープンソースだから安全だよ。」

私はよくこんなことを聞く。考え方はシンプルだ:コードが公開されれば、誰かがそれをレビューしたはずだ。脆弱性が見つかる。コミュニティがそれを修正する。

私は実際のデータでこの仮説を検証することにした。

私たちはF-Droidから10個の人気のあるオープンソースAndroidアプリを取り出しました—毎日何百万人もの人が使っているアプリ—それらを私の静的解析セキュリティスキャナーで走らせました。その後、私はデコンパイルされたAPKコードに対して、一つ一つの発見を手動で確認しました.

結果は10個のアプリから60個の確認された脆弱性です.


アプリ

私は意図的に、さまざまなカテゴリーでよく知られている、活発にメンテナンスされているアプリを選びました:

  • AntennaPod — パodcastマネージャー
  • Bitcoin Wallet — クリプトカレンシーワレット
  • DAVx5 — CalDAV/CardDAV同期
  • GnuCash Android — 財務会計
  • K-9 Mail — メールクライアント
  • KeePassDX — パスワードマネージャー
  • NewPipe — YouTubeフロントエンド
  • Nextcloud — クラウドストレージクライアント
  • Signal — 暗号化メッセージング
  • VLC — メディアプレイヤー

これらは放棄されたサブプロジェクトではありません。これらは成熟し人気のあるアプリで、活発な開発者コミュニティがあります。それらのうちのいくつかは非常に機密性の高いデータを扱っています——パスワード、暗号通貨、プライベートメッセージ、財務記録.


方法論

各アプリについてI:

  1. APKをF-Droidからダウンロード
  2. 私の静的解析スキャナーを実行(マニフェスト分析、smaliコード分析、ネイティブライブラリ検査、汚染分析、暗号チェックをカバーする自動SAST)
  3. APKをapktoolを使用して逆コンパイルしてsmaliコード、マニフェスト、リソースを取得
  4. 実際の逆コンパイルされたコードと比較して、マニュアルで各発見を検証フラグ付けされたコードが本当に脆弱性だったか、誤検知だったかを確認

この最後のステップは重要です。自動スキャナーは多くの候補を生成します。手動の検証がないと、何が本物で何がノイズなのか分かりません.


私が発見したもの:最も一般的な5つの脆弱性

10つのアプリケーションについてすべての発見を手動で検証した後、明確なパターンが現れました。同じ間違いが繰り返し現れた——アプリの人気や扱うデータの機密性に関わらず。

1. 許可保護なしでエクスポートされたコンポーネント

発見箇所:10のアプリのうち9つ

Androidコンポーネント(アクティビティ、サービス、リシーバー、コンテントプロバイダー)が、それらと相互作用するためのいかなる許可も要求せずにexported="true"として宣言されている。これは、同じデバイスにインストールされているいかなるアプリもこれらのコンポーネントを起動したり、データを送信したり、データを受信したりできることを意味する。

この危険な理由は何ですか:金融アプリでは、悪意のあるアプリが「お金を送る」画面を起動できる可能性があります。パスワードマネージャーでは、データベースのロック解除フローをトリガーできる可能性があります。メールクライアントでは、事前に埋められたデータで作成画面を起動できる可能性があります。

対処法は簡単です——外部アクセスが必要ないコンポーネントにはexported="false"を設定するか、追加します。android:permission は、それらとどのようにやり取りできるかを制限する属性として使用されます。

2. 過度に広範な FileProvider パス

見つかりました:10 アプリのうち 4件

Android の FileProvider は、アプリ間でファイルを安全に共有するために設計されています。しかし、プロバイダーのパス設定が <root-path path="." /> を含んでいる場合<external-path path="." />は、コンテントURIを通じて効果的に全体のファイルシステムやすべての外部ストレージへのアクセスを提供します。

ファイルプロバイダの設定が許可するアプリがあったので、/storage/(すべての外部ストレージ)、アプリ全体の内部ディレクトリ、最悪の場合はデバイス全体のファイルシステムへのアクセスが可能です。

これらのプロバイダは通常エクスポートされていないにもかかわらず、使用します。grantUriPermissions="true" — それで、もしexportされたアクティビティがURI権限を転送する場合(一般的なAndroidパターン)、広範なパスは悪用可能になる。

3. 平文トラフィックが許可されている + ユーザーCA信頼

見つかった場所:10のアプリのうち6つ

多くのアプリは、ネットワークセキュリティ設定でcleartextTrafficPermitted="true"を許可していた。それ以外にも、いくつかのアプリは明示的にユーザーがインストールしたCA証明書を信頼していた<certificates src="user" />.

自托管サーバー(CalDAV、メール、クラウドストレージ)に接続するアプリケーションについては、一部意図的にそうなっている——ユーザーは自分のサーバーに接続する必要があり、これらはHTTPを使用したり、自己署名の証明書を使用したりする可能性があるからだ。しかし、この設定はグローバルに適用され、自托管エンドポイントだけに適用されない。アプリケーションが行うすべての接続——API呼び出し、分析、更新チェックを含む——は、デフォルトで傍受を許可する。

特に懸念すべきケース:メディアプレイヤーが平文HTTPで更新ファイルをダウンロードした。同じネットワーク上のマルウェアを中間者攻撃者が悪意のあるAPKとして正当な更新として提供できる。

4. 弱い暗号化実装

見つかった場所:10のアプリのうち3つ

これらは危険なものから時代遅れのものまで様々だった:

  • SSL検証が完全に無効化されていた — すべての証明書を受け入れるメソッドを呼び出すアプリ。金融アプリ。現金を扱っている。
  • ECB暗号モード — メディアプレイヤーのリモートアクセス機能がAESをECBモードで使用している。同じ平文ブロックが同じ暗号文ブロックを生成する。これは教科書の暗号ミスである。
  • java.util.Random暗号学的文脈 — その代わりにSecureRandomにより出力が予測可能になります.
  • 信頼まず使用 (TOFU) なしでピン留め — サーバー証明書が受け入れられたら、永遠に信頼され、証明書が変更される場合(これはMITM攻撃を示す可能性がある)でもそうします.

5. 缺少タップジャッキング(オーバーレイ攻撃)保護

見つかった場所:10のアプリのうち8つ

ほとんどのアプリが設定していませんfilterTouchesWhenObscured="true" は、機密性の高い UI 要素において機能します。これは、オーバーレイ権限を持つ悪意のあるアプリが、アプリの上に目に見えないレイヤーを描画し、ユーザーのタップをキャプチャできる、あるいはユーザーを意図しないボタンをタップさせることに騙せることを意味します。

これは特に以下のものにとって懸念されるものです:

  • パスワードマネージャー(マスターパスワードの入力をキャプチャ)
  • クリプト通貨ウォレット(取引の確認)
  • 悪意ある証明書の受諾に関する対話画面
  • OAuth/ログイン画面(アクセスの承認)

これはどういう意味ですか

オープンソースであるからといって安全であるとは限りません。コードが公開されていることを意味するだけで、それが検証されているとは限りません はレビューされました。これらは人気があり、維持状態が良いアプリで、活発なコミュニティがあり、それらにはシステム的なレビューで見つけられるセキュリティ上の問題がまだあります。

これは開発者を恥辱させることについてではありません。オープンソースのメンテナはしばしば素晴らしい仕事をしているボランティアです。ポイントは、セキュリティには専念し、集中した注意が必要であるということです。機能を構築するためのスキルセットとは異なるスキルセットであり、専用のツールと専門知識の恩恵を受けることができます。

Androidアプリが機密データ(財務情報、資格情報、個人情報、健康データ)を扱っている場合、セキュリティレビューを受ける価値があります単なる自動スキャンで数百の候補を生成して終わりではなく、すべての発見が検証され文脈で解釈される適切な評価です


主要なポイント

  1. 自動スキャナーは候補を発見するだけで、確認された脆弱性ではありません 手動検証なしでは、何が本物か分からない。

  2. 同じ5つの脆弱性パターンがほぼ全てのアプリケーションに見られる。 エクスポートされたコンポーネント、広範なファイルプロバイダー、平文トラフィック、弱い暗号化、欠落したオーバーレイ保護。これらはあらゆるセキュリティレビューで見逃せない低垂り果実だ。

  3. コンテキストは非常に重要だ。 メディアプレイヤーで公開動画をストリーミングしている際の平文トラフィックは、バンキングアプリでの平文トラフィックとは異なるリスクです。文脈のないセキュリティの発見は、単なる報告書の一行に過ぎません.

  4. オープンソースはセキュリティレビューを可能にしますが、それを置き換えるものではありません. コードが公開されていることは、徹底的な分析の前提条件ですが、分析が行われていることを保証するものではありません.


私はモバイルセキュリティ研究者で、Androidアプリケーションセキュリティ評価を専門としています。アプリのセキュリティ体制について話し合いたい場合は、yehor.mamaiev@gmail.comまでお気軽にご連絡ください。