mcpField
A
Android Security Analyzer

Android Security Analyzer

远程服务
github.com/ako2345安全333 周前更新
代码仓库

关于 Android Security Analyzer

Android Security Analyzer 是运行于 Cloudflare Workers 的远程 MCP 服务,用于无需构建项目即可对 Android 源码进行静态安全分析。它面向 Android 开发与安全审查,采用基于正则和模式的规则检测并生成结构化报告。

主要功能

  1. 01分析 Manifest、Gradle、Java/Kotlin 与 XML
  2. 02扫描密钥、令牌和密码
  3. 03输出带严重性与建议的发现项
  4. 04提供安全规则列表与规则说明
  5. 05无需构建项目或安装 Android SDK

适用场景

  1. 01在构建前检查 Android 源码配置
  2. 02排查 WebView、TLS 和存储风险
  3. 03扫描源码中的凭据与密钥

MCP 相关

该服务通过 Streamable HTTP 提供 MCP 工具,包括项目分析、安全检查列表、发现项说明和健康状态查询。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://android-security-analyzer.ako-labs.workers.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

4
参数类型必填说明
filesarray是要分析的项目文件数组
optionsobject否分析选项
options.maxFileSizeKbnumber否要处理的最大文件大小,单位为 KB(默认:512)
options.enableSecretScanboolean否启用密钥/凭据扫描(默认:true)
options.includeInfoLevelboolean否包含信息级别的发现项(默认:true)
projectNamestring是正在分析的 Android 项目名称

详细介绍

Android 安全分析器

用于对 Android 应用源代码进行静态安全分析的 MCP 服务。作为远程 MCP 服务运行在 Cloudflare Workers 上,通过 Streamable HTTP 提供服务。

功能

分析 Android 项目源文件——无需构建项目——并返回结构化安全报告。分析范围包括:

  • 清单分析 — 导出的组件、危险权限、明文流量、调试标志、备份设置、SDK 版本
  • Gradle/构建配置 — 发布构建配置错误、过时的 SDK、可疑依赖、硬编码密钥
  • 源代码(Java/Kotlin) — 不安全的 WebView、SSL/TLS 绕过、弱加密、SQL 注入模式、进程执行、不安全的文件存储、PendingIntent 问题
  • XML 配置 — 网络安全配置弱点、范围过宽的文件提供程序路径
  • 密钥扫描 — API 密钥、令牌、密码、私钥、云凭据、高熵字符串

所有分析均基于正则表达式/模式,并在 Workers 运行时原生执行,无需外部工具、Java 或 Android SDK。

架构

POST /mcp ──► McpServer (JSON-RPC 2.0) ──► Tool Router
                                              │
              ┌───────────────────────────────┘
              ▼
         Orchestrator
              │
    ┌─────────┼─────────┬─────────────┬──────────────┐
    ▼         ▼         ▼             ▼              ▼
 Manifest  Gradle   Source Code   XML Config    Secret
 Analyzer  Analyzer  Analyzer     Analyzer     Scanner
    │         │         │             │              │
    └─────────┴─────────┴─────────────┴──────────────┘
              │
              ▼
     Scoring + Deduplication ──► AnalysisReport

关键设计决策:

  • 无状态 — 无会话、无 Durable Objects
  • 最精简的 MCP JSON-RPC 2.0 实现(无繁重的 SDK 依赖)
  • 数据驱动的规则引擎,支持可扩展的规则注册表
  • 独立分析器,使用统一的 Finding 类型
  • 使用 fast-xml-parser 进行轻量级 XML 解析
  • 使用 zod 验证输入
  • 打包体积:gzip 压缩后约 66KB

MCP 工具

工具描述
analyze_android_project对项目文件进行完整的安全分析
list_android_security_checks列出所有已实现的安全规则
explain_finding详细说明特定规则
health服务状态和规则引擎统计信息

安装

托管服务(推荐用于 Cline / MCP 客户端): 无需本地安装。服务运行于:

https://android-security-analyzer.ako-labs.workers.dev/mcp

将此 URL 添加到 MCP 客户端配置中(参见下文从 MCP 客户端连接)。

本地开发:

npm install

开发

npm run dev

这会启动本地 Wrangler 开发服务器。MCP 端点位于 http://localhost:8787/mcp。

部署

npm run deploy

部署到 Cloudflare Workers。需要通过 wrangler 进行身份验证(npx wrangler login)。

测试

npm test              # Run all tests
npm run test:watch    # Watch mode
npm run typecheck     # TypeScript type checking

本地 MCP 测试

初始化连接

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

Windows(PowerShell):

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' -UseBasicParsing).Content
列出可用工具

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

Windows(PowerShell):响应位于 result.tools 中;若要以 JSON 形式查看列表,请使用原始响应:

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' -UseBasicParsing).Content

或者通过对象访问:(Invoke-RestMethod ...).result.tools | ConvertTo-Json -Depth 5

检查运行状况

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health","arguments":{}}}'

Windows(PowerShell):

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health","arguments":{}}}' -UseBasicParsing).Content
运行分析(最简示例)

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools/call",
    "params": {
      "name": "analyze_android_project",
      "arguments": {
        "projectName": "TestApp",
        "files": [
          {
            "path": "app/src/main/AndroidManifest.xml",
            "content": "<manifest><application android:debuggable=\"true\" android:allowBackup=\"true\"></application></manifest>"
          }
        ]
      }
    }
  }'

Windows(PowerShell):

$body = @{
  jsonrpc = "2.0"
  id = 4
  method = "tools/call"
  params = @{
    name = "analyze_android_project"
    arguments = @{
      projectName = "TestApp"
      files = @(
        @{
          path = "app/src/main/AndroidManifest.xml"
          content = "<manifest><application android:debuggable=`"true`" android:allowBackup=`"true`"></application></manifest>"
        }
      )
    }
  }
} | ConvertTo-Json -Depth 10
(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body $body -UseBasicParsing).Content
从 MCP 客户端连接

将以下内容添加到 MCP 客户端配置中:

{
  "mcpServers": {
    "android-security-analyzer": {
      "url": "http://localhost:8787/mcp"
    }
  }
}

生产环境(托管服务):

{
  "mcpServers": {
    "android-security-analyzer": {
      "url": "https://android-security-analyzer.ako-labs.workers.dev/mcp"
    }
  }
}

安全规则

分析器在 5 个类别中实现了 53 条安全规则:

类别前缀规则数示例
清单MAN-*17debuggable、allowBackup、导出的组件、权限
GradleGRD-*9发布配置、SDK 版本、依赖、密钥
源代码SRC-*17WebView、SSL/TLS、加密、注入、文件存储
XML 配置XML-*4网络安全配置、文件提供程序路径
密钥SEC-*7API 密钥、令牌、密码、云凭据

每条发现均包含:

  • 稳定的规则 ID
  • 严重性(critical/high/medium/low/info)和置信度(high/medium/low)
  • 文件路径和行号(可确定时)
  • 证据片段
  • CWE 和 OWASP Mobile Top 10 映射
  • 可执行的建议

评分

风险分数(0-100)根据发现项的严重程度计算:

  • 严重:9 分
  • 高:6 分
  • 中:3 分
  • 低:1 分
  • 信息:0 分

原始总分会根据预期最高分 50 分进行归一化。

局限性

  • 不能替代 SAST — 基于模式/正则表达式的启发式分析,不进行完整的 AST/数据流分析
  • 无需构建 — 分析原始源代码,因此无法看到构建时转换
  • 可能出现误报 — 尤其是在密钥扫描和某些代码模式方面
  • Workers 限制 — 128MB 内存限制、CPU 时间限制,且无法访问文件系统
  • 不分析 APK/AAB — 仅分析源代码
  • 不进行过程间分析 — 按文件匹配模式,不跨调用图分析

项目结构

src/
├── index.ts                          # Worker entry point
├── server/
│   ├── mcp.ts                        # MCP JSON-RPC 2.0 handler
│   └── tools/                        # MCP tool implementations
│       ├── analyzeAndroidProject.ts
│       ├── listAndroidSecurityChecks.ts
│       ├── explainFinding.ts
│       └── health.ts
├── core/
│   ├── types.ts                      # TypeScript types & Zod schemas
│   ├── scoring.ts                    # Risk score computation
│   ├── registry.ts                   # Rule registry
│   └── orchestrator.ts              # Analysis orchestrator
├── analyzers/
│   ├── manifestAnalyzer.ts
│   ├── gradleAnalyzer.ts
│   ├── sourceAnalyzer.ts
│   ├── xmlConfigAnalyzer.ts
│   └── secretScanner.ts
├── parsers/
│   ├── xml.ts                        # XML parser wrapper
│   ├── gradle.ts                     # Gradle file parser
│   ├── source.ts                     # Source code pattern matcher
│   └── files.ts                      # File classifier
├── rules/
│   ├── manifestRules.ts
│   ├── gradleRules.ts
│   ├── sourceRules.ts
│   ├── xmlRules.ts
│   └── secretRules.ts
├── mappings/
│   ├── cwe.ts                        # CWE descriptions
│   └── owaspMobile.ts               # OWASP Mobile Top 10
└── utils/
    ├── lines.ts                      # Line number utilities
    ├── paths.ts                      # Path classification
    └── text.ts                       # Text utilities
test/
├── fixtures/                         # Sample Android project files
├── unit/                             # Unit tests per module
└── integration/                      # Full analysis integration tests

添加新规则

  1. 在 src/rules/ 下的相应文件中定义规则
  2. 在 src/analyzers/ 下对应的分析器中添加检测逻辑
  3. 如有需要,在 src/mappings/cwe.ts 中添加 CWE 映射
  4. 添加一个测试用例
  5. 规则会通过 src/core/registry.ts 自动注册

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。