article
README
🚀 Lanalyzer
Lanalyzer是一款先进的Python静态污点分析工具,旨在检测Python项目中潜在的安全漏洞。它能够识别从不可信数据源(Sources)到敏感操作(Sinks)的数据流,并详细揭示潜在风险。
🚀 快速开始
前提条件
- Python 3.10 或更高版本
- uv(建议用于依赖管理)
安装步骤
-
克隆仓库:
git clone https://github.com/bayuncao/lanalyzer.git cd lanalyzer -
创建虚拟环境并安装依赖:
uv venv uv pip sync pyproject.toml --all-extras -
激活虚拟环境:
source .venv/bin/activate
✨ 主要特性
- 污点分析:跟踪从数据源到敏感操作的数据流。
- 可定制规则:自定义数据源、敏感操作、数据净化函数和污点传播路径。
- 静态分析:无需执行代码。
- 可扩展性:轻松添加新规则以检测如SQL注入、XSS等漏洞。
- 详细报告:生成包含漏洞详情和缓解建议的全面分析报告。
- 命令行界面:可直接在终端运行分析。
💻 使用示例
基础用法
对Python文件进行污点分析:
lanalyzer --target <target_file> --config <config_file> --pretty --output <output_file> --log-file <log_file> --debug
命令行选项
--target:要分析的Python文件或目录的路径。--config:配置文件的路径。--output:保存分析报告的路径。--log-file:保存日志文件的路径。--pretty:美化输出格式。--detailed:显示详细的分析统计信息。--debug:启用调试模式并输出详细日志。
示例
lanalyzer --target example.py --config rules/sql_injection.json --pretty --output example_analysis.json --log-file example_analysis.log --debug
🧩 模型上下文协议 (MCP) 支持
Lanalyzer现在支持模型上下文协议 (MCP),可作为MCP服务器运行,让AI模型和工具通过标准接口访问污点分析功能。
安装MCP依赖
如果你使用pip:
pip install "lanalyzer[mcp]"
如果你使用uv:
uv pip install -e ".[mcp]"
启动MCP服务器
有多种方式启动MCP服务器:
使用Python模块
# 查看帮助信息
python -m lanalyzer.mcp --help
# 启动服务器
python -m lanalyzer.mcp run --host 0.0.0.0 --port 8000 --debug
使用lanalyzer命令行工具
# 查看帮助信息
lanalyzer mcp --help
# 启动服务器
lanalyzer mcp run --host 0.0.0.0 --port 8000 --debug
# 使用FastMCP开发模式(适用时,请验证此命令)
# lanalyzer mcp dev
MCP服务器特性
MCP服务器提供以下核心功能:
- 代码分析:分析Python代码字符串中的安全漏洞。
- 文件分析:分析特定文件中的安全漏洞。
- 路径分析:分析整个目录或项目中的安全漏洞。
- 漏洞解释:详细解释发现的漏洞。
- 配置管理:获取、验证和创建分析配置。
与AI工具集成
MCP服务器可与支持MCP协议的AI工具集成:
# 使用FastMCP客户端
from fastmcp import FastMCPClient
# 创建连接到服务器的客户端
client = FastMCPClient("http://127.0.0.1:8000")
# 分析代码
result = client.call({
"type": "analyze_code",
"code": "user_input = input()\nquery = f\"SELECT * FROM users WHERE name = '{user_input}'\"",
"file_path": "example.py",
"config_path": "/path/to/config.json"
})
# 打印分析结果
print(result)
在Cursor中使用
如果你在Cursor编辑器中工作,可以直接要求AI使用Lanalyzer分析代码:
请使用lanalyzer分析当前文件的安全漏洞并解释潜在风险。
MCP命令行选项
MCP服务器支持以下命令行选项:
--debug:启用调试模式并输出详细日志。--host:设置服务器监听地址(默认:127.0.0.1)。--port:设置服务器监听端口(默认:8000)。
高级MCP用法
自定义配置
你可以使用get_config、validate_config和create_config工具管理漏洞检测配置:
# 获取默认配置
config = client.call({
"type": "get_config"
})
# 创建新配置
result = client.call({
"type": "create_config",
"config_data": {...}, # 配置数据
"config_path": "/path/to/save/config.json" # 可选
})
批量文件分析
分析整个项目或目录:
result = client.call({
"type": "analyze_path",
"target_path": "/path/to/project",
"config_path": "/path/to/config.json",
"output_path": "/path/to/output.json" # 可选
})
🤝 贡献代码
我们欢迎贡献!请查看CONTRIBUTING.md文件,了解如何为Lanalyzer贡献代码。
📄 许可证
本项目采用GNU Affero通用公共许可证v3.0。详情请参阅LICENSE文件。
📞 联系我们
- 问题反馈:GitHub Issues
- 邮箱:support@mx-crafts.com
微信扫一扫