Lanalyzer是一款先进的Python静态污点分析工具,旨在检测Python项目中潜在的安全漏洞。它能够识别从不可信数据源(Sources)到敏感操作(Sinks)的数据流,并详细揭示潜在风险。
克隆仓库:
git clone https://github.com/bayuncao/lanalyzer.git
cd lanalyzer
创建虚拟环境并安装依赖:
uv venv
uv pip sync pyproject.toml --all-extras
激活虚拟环境:
source .venv/bin/activate
对Python文件进行污点分析:
lanalyzer --target --config --pretty --output --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
Lanalyzer现在支持模型上下文协议 (MCP),可作为MCP服务器运行,让AI模型和工具通过标准接口访问污点分析功能。
如果你使用pip:
pip install "lanalyzer[mcp]"
如果你使用uv:
uv pip install -e ".[mcp]"
有多种方式启动MCP服务器:
# 查看帮助信息
python -m lanalyzer.mcp --help
# 启动服务器
python -m lanalyzer.mcp run --host 0.0.0.0 --port 8000 --debug
# 查看帮助信息
lanalyzer mcp --help
# 启动服务器
lanalyzer mcp run --host 0.0.0.0 --port 8000 --debug
# 使用FastMCP开发模式(适用时,请验证此命令)
# lanalyzer mcp dev
MCP服务器提供以下核心功能:
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编辑器中工作,可以直接要求AI使用Lanalyzer分析代码:
请使用lanalyzer分析当前文件的安全漏洞并解释潜在风险。
MCP服务器支持以下命令行选项:
--debug:启用调试模式并输出详细日志。--host:设置服务器监听地址(默认:127.0.0.1)。--port:设置服务器监听端口(默认:8000)。你可以使用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文件。