Android Security Analyzer
Android Security Analyzer
MCP-сервер для статического анализа безопасности исходного кода Android-приложений. Работает на Cloudflare Workers как удалённый MCP-сервер через Streamable HTTP.
Что он делает
Анализирует исходные файлы Android-проекта — без сборки проекта — и возвращает структурированный отчёт по безопасности. Анализ охватывает:
Анализ манифеста — экспортированные компоненты, опасные разрешения, незашифрованный трафик, debug-флаги, настройки резервного копирования, версии SDK
Конфигурацию Gradle/сборки — ошибки конфигурации release-сборки, устаревшие SDK, подозрительные зависимости, захардкоженные секреты
Исходный код (Java/Kotlin) — небезопасный WebView, обход SSL/TLS, слабая криптография, паттерны SQL-инъекций, выполнение процессов, небезопасное хранение файлов, проблемы с PendingIntent
XML-конфигурацию — слабые места в network security config, слишком широкие пути file provider
Сканирование секретов — API-ключи, токены, пароли, приватные ключи, облачные учётные данные, строки с высокой энтропией
Весь анализ основан на регулярных выражениях/паттернах и выполняется нативно в среде Workers без внешних инструментов, Java или Android SDK.
Related MCP server: APK Security Guard MCP Suite
Архитектура
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
Лёгкий XML-парсинг через
fast-xml-parserВалидация входных данных через
zodРазмер бандла: ~66KB gzipped
MCP-инструменты
Инструмент | Описание |
| Полный анализ безопасности файлов проекта |
| Список всех реализованных правил безопасности |
| Подробное объяснение конкретного правила |
| Статус сервера и статистика движка правил |
Установка
Хостируемый сервер (рекомендуется для Cline / MCP-клиентов): локальная установка не требуется. Сервер работает по адресу:
https://android-security-analyzer.ako-labs.workers.dev/mcp
Добавьте этот URL в конфигурацию вашего MCP-клиента (см. Подключение из MCP-клиента ниже).
Локальная разработка:
npm installРазработка
npm run devЭто запускает локальный 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"
}
}
}Правила безопасности
Анализатор реализует 53 правила безопасности в 5 категориях:
Категория | Префикс | Правил | Примеры |
Manifest | MAN-* | 17 | debuggable, allowBackup, экспортированные компоненты, разрешения |
Gradle | GRD-* | 9 | конфигурация release, версии SDK, зависимости, секреты |
Source | SRC-* | 17 | WebView, SSL/TLS, криптография, инъекции, хранение файлов |
XML Config | XML-* | 4 | network security config, пути file provider |
Secret | SEC-* | 7 | API-ключи, токены, пароли, облачные учётные данные |
Каждое найденное замечание включает:
Стабильный ID правила
Серьёзность (critical/high/medium/low/info) и уверенность (high/medium/low)
Путь к файлу и номер строки (когда это можно определить)
Фрагмент-доказательство
Сопоставление с CWE и OWASP Mobile Top 10
Практическую рекомендацию
Оценка риска
Оценка риска (0-100) вычисляется на основе серьёзности замечаний:
Critical: 9 баллов
High: 6 баллов
Medium: 3 балла
Low: 1 балл
Info: 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Добавление новых правил
Определите правило в соответствующем файле в
src/rules/Добавьте логику обнаружения в соответствующий анализатор в
src/analyzers/Добавьте сопоставление CWE в
src/mappings/cwe.tsпри необходимостиДобавьте тестовый пример
Правило автоматически регистрируется через
src/core/registry.ts
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
MCP server for Appcircle mobile CI/CD platform.
MCP server: static security scanner for MCP servers, agent skills & plugins. 17 attack patterns.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides a one-stop automated solution for Android APK security analysis by integrating tools like JEB, JADX, APKTOOL, FlowDroid, and MobSF into unified MCP standard API interfaces.11-
- FlicenseNot gradedqualityDmaintenanceIntegrates multiple Android APK security analysis tools into MCP standard APIs for automated static and dynamic analysis and vulnerability detection.-
- AlicenseAqualityCmaintenanceMCP server for Android APK triage, providing tools to parse APK headers, list DEX classes, and decode AndroidManifest.xml using apktool or androguard backends.51MIT
- AlicenseNot gradedqualityDmaintenanceLocal static-analysis assistant for Android malware research that manages investigation cases, exposes MCP tools via a local server, and persists evidence-backed findings without cloud dependency.MIT