vsnappy1/secure-flow
GitHub: vsnappy1/secure-flow
SecureFlow 是一个 Android 安全与隐私自动化 Gradle 插件,帮助开发团队在 CI 中早期检测硬编码密钥、不安全日志和明文流量等风险模式。
Stars: 0 | Forks: 0
# SecureFlow
SecureFlow 是一个开源的 Android 安全与隐私自动化工具包,旨在帮助开发者在风险模式进入生产环境之前识别它们。目前的 MVP 提供了基于 Gradle 的硬编码密钥、不安全日志和明文流量扫描器,并计划针对导出组件、WebView 风险以及 AI 提示词隐私审查推出 Android lint 规则。
现代 Android 应用程序通常通过分析、日志、后端 API、AI 工作流以及第三方 SDK 集成来处理敏感用户数据。SecureFlow 将轻量级、对 CI 友好的隐私和安全检查引入 Android 开发工作流中,以便团队可以更早地发现问题,减少人工审查的工作量,并增强发布的准备度。
## 目的
该项目的目标是通过将常见的审查关注点转化为可重复的自动化检查,使隐私和安全审查对 Android 工程团队来说更加实用。
SecureFlow 专注于:
* 减少敏感用户数据的意外暴露,
* 识别不安全的日志记录模式,
* 检测有风险的 manifest 和网络配置,
* 改进发布就绪检查,
* 支持注重隐私的 AI 工作流,
* 并帮助团队采用一致的安全开发实践。
## 为什么这很重要
支持 AI 和数据驱动的移动应用程序通常会处理用户生成的内容、提示词、元数据、分析事件和后端 payload。如果没有适当的保护措施,敏感信息可能会意外地出现在日志、提示词、崩溃报告、分析事件或配置错误的网络请求中。
SecureFlow 通过扫描 Android 源代码和项目配置中值得关注的风险模式,帮助开发者及早发现这些问题。
## 当前状态
SecureFlow 目前处于早期的 MVP 开发阶段。
首批实现的功能是基于 Gradle 的硬编码密钥检测、不安全日志检测和明文流量检测。这些检查会扫描源代码和配置文件,以查找可疑的密钥、引用敏感值的不安全日志记录语句,以及不安全的 Android 网络配置。
已实现:
* 硬编码密钥检测
* 不安全日志检测
* 明文流量检测
* Markdown 报告生成
* JSON 报告生成
* 可配置的 Gradle extension
* 通过 failOnFindings 支持构建失败
* 支持本地 Maven 发布
计划下一步:
* 导出的 Android 组件审查
* 有风险的 WebView 配置检测
* AI 提示词隐私审查
* Android lint 集成
* Android Studio 插件支持
## 计划中的 MVP 检查
### 1. 硬编码密钥检测
检测 Kotlin、Java、XML、Gradle 和 properties 文件中可疑的硬编码值。
状态:✅ 已实现。详情请参阅[硬编码密钥检测](docs/hardcoded-secret-detection/README.md)。
示例模式:
* API keys
* access tokens
* bearer tokens
* client secrets
* AI provider keys
* Firebase server keys
### 2. 不安全日志检测
标记可能会暴露敏感值的生产环境日志记录语句。
状态:✅ 已实现。详情请参阅[不安全日志检测](docs/unsafe-logging-detection/README.md)。
示例模式:
```
Log.d("User", user.email)
Log.e("AI_REQUEST", prompt)
println(accessToken)
```
### 3. 明文流量检测
检测潜在不安全的网络配置,例如:
状态:✅ 已实现。详情请参阅[明文流量检测](docs/cleartext-traffic-detection/README.md)。
```
android:usesCleartextTraffic="true"
```
### 4. 导出组件审查
标记可能需要额外权限保护的已导出 Android 组件。
示例:
```
```
### 5. 有风险的 WebView 配置
检测可能需要额外审查的 WebView 设置,例如启用 JavaScript 或使用 JavaScript bridge。
示例:
```
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(...)
```
### 6. AI 提示词隐私审查
检测原始用户输入可能在没有可见的最小化或脱敏处理的情况下被发送到 AI 提示词或后端 AI 工作流的代码模式。
示例:
```
val prompt = "Summarize this user content: $userInput"
```
目的不是阻止 AI 的使用,而是鼓励更安全的 AI 数据处理实践。
## 用法示例
应用插件:
```
plugins {
id("dev.randos.secure-flow") version "0.3.0"
}
```
运行安全流程扫描:
```
./gradlew secureFlowCheck
```
生成报告:
```
./gradlew secureFlowReport
```
示例输出:
```
SecureFlow Report
----------------------------
Critical: 2
Warning: 4
Info: 3
[Critical] Hardcoded secret detected in NetworkModule.kt
[Critical] Cleartext traffic enabled in AndroidManifest.xml
[Warning] Raw AI prompt logged in RecipeAIService.kt
[Warning] WebView JavaScript enabled in WebViewScreen.kt
```
## 报告格式
MVP 将支持:
* Markdown 报告
* JSON 报告
计划输出:
```
build/reports/secure-flow/privacy-report.md
build/reports/secure-flow/privacy-report.json
```
## CI/CD 集成
SecureFlow 旨在运行于诸如 GitHub Actions、Jenkins、Bitrise 和 CircleCI 等 CI pipeline 中。
GitHub Actions 使用示例:
```
name: Secure Flow
on:
pull_request:
push:
branches: [ main ]
jobs:
secure-flow:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Run Secure Flow
run: ./gradlew secureFlowCheck
```
## 项目路线图
### 第一阶段:MVP
* Gradle 插件
* 基础文件扫描
* 隐私/安全规则引擎
* Markdown 和 JSON 报告
* Android 示例应用
* GitHub Actions 示例
### 第二阶段:Android Lint 集成
* 自定义 Android lint 规则
* IDE 可见的警告
* Lint baseline 支持
* 严重级别配置
### 第三阶段:Android Studio 插件
* Android Studio 内部的工具窗口
* 项目隐私评分
* 快速导航到有风险的文件
* IDE 内的规则文档
* 建议的修复步骤
### 第四阶段:高级的注重隐私的 AI 工作流检查
* 提示词最小化检查
* AI payload 日志检测
* 敏感字段脱敏建议
* AI provider 配置审查
* 隐私政策与实施对齐清单
## 愿景
SecureFlow 旨在成为希望构建安全、注重隐私且具备生产就绪能力的移动应用的 Android 开发者的实用开源工具。
长期目标是帮助工程团队在软件开发生命周期中尽早进行隐私和安全检查,因为在这个阶段问题更容易修复,成本也更低。
标签:Android, DevSecOps, DSL, Gradle插件, LNA, 上游代理, 后台面板检测, 安全合规, 移动开发, 网络代理, 静态扫描