安德福MCP v1.0.0
一个模型上下文协议(MCP)服务器,通过REST API v2为完成Broadcom Endevor SCM交互提供43个工具。专为人工智能驱动的大型机操作而构建——库存浏览、元素生命周期管理、包工作流和以安全为重点的源代码审查。
Endevor MCP+hack3270:源代码知情的大型机渗透测试
与Endevor MCP搭配使用时,其功能变得异常强大 黑客3270 (52个用于TN3270数据流操作的MCP工具)。它们共同为单一的AI代理提供了95种工具——能够读取大型机应用程序背后的每一行源代码 *和* 同时操作实时应用程序。这是一种根本不同的测试能力。
为何这很重要
大型机CICS应用程序是在20世纪80年代至21世纪初围绕不再适用的信任模型构建的: 3270终端是安全边界。 字段保护、仅限数字的限制、字段长度限制、隐藏字段和屏幕流控制都是由终端硬件执行的,而不是服务器。这些屏幕后面的COBOL程序通常接受MAP输入,并在算术、SQL查询、文件访问和事务路由中直接使用它,而无需任何服务器端验证。
hack3270打破了这种信任模型。它拦截TN3270数据流,允许您修改受保护的字段,将非数字数据发送到数字字段,覆盖隐藏字段,绕过屏幕流,并发送任意AID密钥——这些都是真正的3270终端所不允许的。
但是没有源代码,hack3270测试是盲目的。 你可以模糊字段并观察崩溃,但你不知道 *为什么* 场是脆弱的, *什么* 服务器会处理您的输入,或者 *哪里* 真正的攻击面是。你猜。
Endevor MCP消除了猜测。 通过访问Endevor源代码库,AI代理可以:
- 阅读BMS地图 在接触实时应用程序之前,了解每个屏幕上的每个字段,包括隐藏的暗场、受保护的字段及其预期的数据格式
- 阅读COBOL程序 看看之后会发生什么
EXEC CICS RECEIVE MAP:哪些字段经过验证,哪些字段被盲目信任,哪些字段直接进入EXEC SQL控制事务路由的语句 - 阅读文案 要知道
PIC每个字段的子句——两者之间的区别PIC X(10)(字母数字)和PIC S9(7)V99 COMP-3(打包的十进制数将使SOC7在无效数据时终止) - 阅读JCL 了解批处理作业结构、数据集命名约定、STEPLIB连接,并找到硬编码凭据——如果实现TSO逃逸,这些智能将立即可操作
- 跟踪程序流 通过
EXEC CICS LINK和EXEC CICS XCTL用于查找授权的链绕过了可以直接调用敏感程序的地方,跳过了调用程序中的安全检查 - 查看变更历史记录 优先测试最近修改的代码——新代码有新的bug
结果:AI代理执行的不是使用hack3270进行盲模糊测试 手术、知情开采。它读取COBOL源代码,识别 ORDQTYI 直接进入a COMPUTE 没有 IS NUMERIC 检查,然后使用hack3270 send_field_data() 向该字段发送字母字符并触发SOC7异常终止。上面写着 EVALUATE EIBAID 块,发现PA1调用一个未记录的管理菜单,然后使用hack3270 send_aid_key() 源代码中的每个发现都可以被实时证明,每个实时异常都可以追溯到代码中的根本原因。
这将大型机应用程序渗透测试从缓慢、不确定的过程转变为系统、全面的评估,涵盖COBOL、BMS、Copybook、JCL、DB2、VSAM、CICS和批处理中的19个不同漏洞类别。
作者
加兰德·格莱斯纳-- gglessner@gmail.com
许可证
GNU通用公共许可证v3.0--请参阅 许可证
特性
- 43个MCP工具 涵盖完整的Endevor REST API v2
- 完整库存浏览:数据源、环境、阶段、系统、子系统、类型、元素、成员
- 元素生命周期管理:
- 添加、更新、检索、打印、生成、移动、删除 - 登录/注销以锁定元素 - 跨库存地点转移 - 组件依赖性分析(ACM)
- 包工作流管理:
- 创建、更新、强制转换、批准、拒绝、执行、提交 - 提交、重置、回退、回退、删除
- 异步任务管理:列出、检查状态和检索长时间运行的操作的结果
- SCL提交:执行任意软件控制语言语句
- 指纹验证:乐观并发控制
- 通过环境变量自动连接:配置
ENDEVOR_*env变量mcp.json--服务器与Basic Auth连接,获得JWT,并立即准备就绪(无需手动endevor_connect需要)
- 身份验证支持:
- 通过env变量进行自动身份验证(启动时使用基本身份验证->JWT) - HTTP基本身份验证(用户名/密码) - 承载令牌(JWT) - 通过Endevor/auth端点获取JWT - 具有客户端证书的双向TLS(mTLS)
- TLS/SSL支持:自定义CA证书、客户端证书、测试环境的验证旁路
- 安全评估就绪:专门为大型机源代码审查和漏洞分析构建的工作流程
- 秘密编辑(MCP护甲):每个工具响应都经过供应商的过滤
mcp_armor在到达AI模型之前,库。作业控制语言PASSWORD=、RACF/ACF2/TSS密码操作数、IDCAMS VSAM密码、DB2CONNECT … USING,FTP-脚本凭据和标准云/API-key集替换为[REDACTED]。未编辑的点击记录到endevor_mcp/logs/endevor_mcp_armor_.log供测试人员审查。模式可在中配置endevor_mcp/libs/mcp_armor/patterns.yaml.
快速开始
1.克隆并安装
git clone https://github.com/gglessner/Endevor-MCP.git
cd Endevor-MCP
pip install -r requirements.txt2.在光标中打开
打开 Endevor-MCP 目录作为您在Cursor中的项目。一切都是预先配置的:
.cursor/mcp.json--自动注册MCP服务器(43个工具).cursor/skills/endevor-mcp/SKILL.md--教授AI助手所有工具和工作流程
无需手动设置。看 MCP_SETUP.md 用于VS Code和高级配置。
3.配置凭据
编辑 .cursor/mcp.json 使用您的Endevor实例详细信息:
{
"mcpServers": {
"endevor-mcp": {
"command": "python",
"args": ["run_endevor_mcp.py"],
"cwd": "${workspaceFolder}",
"env": {
"ENDEVOR_HOST": "mainframe.example.com",
"ENDEVOR_PORT": "443",
"ENDEVOR_DATASOURCE": "ENDVCONF",
"ENDEVOR_USERNAME": "USER01",
"ENDEVOR_PASSWORD": "secret"
}
}
}
}服务器自动连接到Basic Auth,获得JWT承载令牌,所有43个工具都可以立即使用 conn_id="auto".
手动连接 (备选方案——如果未配置env变量):
endevor_connect(host="mainframe.example.com", port=443,
datasource="ENDVCONF",
username="USER01", password="secret")工具参考(43个工具)
连接管理(3个工具)
| 工具 | 说明 |
|---|---|
endevor_connect | 连接到具有完全身份验证支持的Endevor REST API |
endevor_disconnect | 关闭连接 |
endevor_connections | 列出所有活动连接 |
身份验证和健康(3个工具)
| 工具 | 说明 |
|---|---|
endevor_authenticate | 从/auth端点获取JWT令牌 |
endevor_healthcheck | 运行数据源健康检查 |
endevor_get_report | 从以前的请求中获取报告 |
异步任务管理(3个工具)
| 工具 | 说明 |
|---|---|
endevor_list_tasks | 列出异步任务(正在进行/已完成) |
endevor_get_task_status | 获取异步任务的状态 |
endevor_get_task_result | 获取已完成异步任务的结果 |
库存/列表工具(8个工具)
| 工具 | 说明 |
|---|---|
endevor_list_datasources | 列出所有数据源配置 |
endevor_list_environments | 列出环境 |
endevor_list_stages | 列出阶段编号 |
endevor_list_systems | 列表系统 |
endevor_list_subsystems | 列出子系统 |
endevor_list_types | 列出元素类型 |
endevor_list_elements | 使用通配符和CCID筛选列出元素 |
endevor_list_members | 列出元素类型的成员 |
元素动作(11个工具)
| 工具 | 说明 |
|---|---|
endevor_add_element | 添加(创建)新元素 |
endevor_update_element | 使用同步支持更新现有元素源 |
endevor_retrieve_element | 检索(下载)元素源内容 |
endevor_print_element | 打印元素信息(浏览/更改/历史/摘要/主/列表) |
endevor_print_element_components | 打印元素组件信息(需要ACM) |
endevor_generate_element | 生成(编译/处理)一个元素 |
endevor_move_element | 在地图上向上移动元素 |
endevor_delete_element | 删除元素 |
endevor_signin_element | 登录(解锁)某个元素 |
endevor_signout_element | 注销(锁定)元素 |
endevor_transfer_element | 将元素转移到其他库存位置 |
软件包操作(13个工具)
| 工具 | 说明 |
|---|---|
endevor_list_packages | 列出具有状态/类型/详细信息过滤的包 |
endevor_create_package | 使用SCL创建新包 |
endevor_update_package | 更新现有包 |
endevor_cast_package | 铸造(冻结)一个包以供审查 |
endevor_approve_package | 批准一个包 |
endevor_deny_package | 拒绝包裹 |
endevor_execute_package | 执行包 |
endevor_submit_package | 提交一个包以进行批处理执行 |
endevor_commit_package | 提交已执行的包 |
endevor_reset_package | 将包重置为INEDIT状态 |
endevor_backout_package | 退回已执行的包 |
endevor_backin_package | 撤销撤销 |
endevor_delete_package | 删除包 |
SCL和指纹(2个工具)
| 工具 | 说明 |
|---|---|
endevor_submit_scl | 提交SCL报表以供执行 |
endevor_validate_fingerprint | 验证元素指纹的并发性 |
Endevor库存层次结构
Datasource (configuration — points to an Endevor instance)
└── Environment (DEV, QA, PROD, ...)
└── Stage Number (1, 2, ...)
└── System (FINANCE, HR, PAYMENTS, ...)
├── Subsystem (ACCTS, PAYROLL, CLAIMS, ...)
│ └── Element (PAYCALC, EMPRPT, CUSTMNT, ...)
└── Type (COBOL, COPYBOOK, JCL, ASMPGM, PLI, BMS, ...)常见元素类型
| 类型 | 描述 | 安全相关性 |
|---|---|---|
COBOL | COBOL源程序 | 应用程序逻辑、SQL查询、CICS调用、身份验证检查 |
COPYBOOK / COPY | COBOL副本(包括标题) | 数据结构、记录布局、字段定义 |
JCL | 作业控制语言 | 批处理作业、STEPLIB/PROCLIB、数据集引用 |
ASMPGM / ASM | 汇编程序 | 低级系统调用、SVC例程、授权程序 |
PLI / PL1 | PL/I程序 | 应用程序逻辑(比COBOL更不常见) |
BMS | BMS地图集(屏幕定义) | TN3270屏幕布局、隐藏字段、字段属性 |
CLIST / REXX | TSO命令程序 | 自动化脚本,可能包含凭据 |
PROC | JCL过程 | 可重用的JCL,编译/链接步骤 |
LMOD / LOAD | 加载模块(编译输出) | 可执行二进制文件 |
DBRM | DB2数据库请求模块 | SQL访问路径、DB2计划绑定 |
类型名称因安装而异。使用 endevor_list_types 以发现配置了什么。
建筑
Endevor-MCP/
├── .cursor/
│ ├── mcp.json # Auto-registers MCP server with env var auth
│ └── skills/
│ └── endevor-mcp/
│ ├── SKILL.md # Core skill — 43 tools, auth, workflows
│ ├── mainframe-security.md # 19 vulnerability classes with COBOL patterns
│ └── security-checklist.md # Review checklist + hack3270 cross-reference
├── endevor_mcp/
│ ├── __init__.py # Package metadata
│ ├── client.py # HTTP REST client & connection manager
│ ├── server.py # FastMCP server with 43 tools + auto-connect
│ └── libs/mcp_armor/ # Vendored secret-redaction library (patterns.yaml)
├── run_endevor_mcp.py # Entry point
├── requirements.txt # Dependencies
├── MCP_SETUP.md # Setup guide for Cursor & VS Code
├── README.md # This file
└── LICENSE # GPL v3HTTP REST客户端(Client.py)
线程安全持久HTTP会话管理:
requests-基于连接池的HTTP客户端- 基本身份验证和承载令牌身份验证
- 完整的TLS配置(自定义CA、mTLS、验证旁路)
- 自动数据源路径前缀
- 通过Endevor/auth端点获取JWT令牌
MCP服务器(Server.py)
FastMCP服务器,按类别组织43个注册工具:
- 连接管理和身份验证
- 长时间运行操作的异步任务管理
- 支持通配符的库存浏览
- 元素生命周期操作(内容上传的多部分/表单数据)
- 包工作流管理(JSON正文)
- SCL提交和指纹验证
- 具有结构化输出的智能响应解析
秘密行动(libs/mcp_marm)
server.py 包裹 mcp.tool 以便每个工具的返回值(以及任何 异常消息)传递 mcp_armor.ContentFilter 在离开之前 服务器。过滤器由正则表达式驱动 endevor_mcp/libs/mcp_armor/patterns.yaml,该船与上游都有 云/API-key模式和 z/OS特定块 涵盖JCL、RACF、ACF2、, 绝密、IDCAMS、DB2、FTP、MQ和COBOL MOVE … TO …-PASSWORD 文字。 如果 libs/mcp_armor/ 删除后,服务器将不经过滤运行——包装是 尽最大努力,优雅地降级。
身份验证快速参考
| 方法 | 参数 |
|---|---|
| 基本身份验证 | username, password |
| 承载令牌 | bearer_token |
| JWT通过API | 连接基本Auth,然后 endevor_authenticate |
| mTLS | ssl_certfile, ssl_keyfile |
| 无需验证 | ssl_no_verify=True |
| 自定义CA | ssl_cafile |
软件包生命周期
INEDIT → (cast) → INAPPROVAL → (approve) → APPROVED → (execute) → EXECUTED → (commit) → COMMITTED
↓ ↓ ↓
(deny) (reset) (backout)
↓ ↓ ↓
DENIED INEDIT EXECUTED
(backin)安全评估详细信息
19个漏洞类别
技能文档涵盖了适用于大型机应用程序安全整个领域的19个漏洞类别(请参见 主机安全.md 有关COBOL源代码模式的完整详细信息):
| # | 漏洞类 | 源类型 |
|---|---|---|
| 1 | 侦察/应用测绘 | 全部 |
| 2 | BMS地图分析(隐藏/保护字段) | BMS |
| 3 | 缺少输入验证 | COBOL |
| 4 | SQL注入(COBOL-DB2) | COBOL |
| 5 | 硬编码凭证 | COBOL、JCL、REXX |
| 6 | 缺少授权(RACF旁路) | COBOL |
| 7 | 公共区域/通道数据泄漏 | COBOL |
| 8 | 临时存储队列暴露 | COBOL |
| 9 | 伪会话状态篡改 | COBOL |
| 10 | 事务路由/应用程序转义 | COBOL |
| 11 | 隐藏AID密钥功能 | COBOL |
| 12 | 数字数据异常(SOC7/S0C7) | COBOL,Copybook |
| 13 | VSAM文件访问(IDOR) | COBOL |
| 14 | CICS分配信息披露 | COBOL |
| 15 | 错误处理信息泄露 | COBOL |
| 16 | REDEFINES类型混淆 | Copybook |
| 17 | 批量JCL安全 | JCL |
| 18 | 程序流/授权旁路 | COBOL |
| 19 | 变更情报(优先测试) | 全部 |
此外,还有一份全面的10类源代码审查清单和一份21行的hack3270+Endevor MCP对照表 安全检查表.md.
参数参考
公共参数
| 参数 | 说明 |
|---|---|
conn_id | 连接ID来自 endevor_connect |
environment | Endevor环境名称(DEV、QA、PROD) |
stage | 阶段编号(1、2) |
system | 系统名称(应用程序组) |
subsystem | 子系统名称(应用细分) |
type_name | 元素类型(COBOL、COPYBOOK、JCL等) |
element | 元素名称(程序名称) |
更改控制参数
| 参数 | 说明 |
|---|---|
ccid | 更改控件ID(1-12个字符) |
comment | 评论文本(1-40个字符) |
override_signout | 覆盖其他用户的注销(是/否) |
fingerprint | 16位十六进制用于乐观并发 |
搜索和筛选参数
| 参数 | 说明 |
|---|---|
search | 搜索Endevor地图(是/否) |
path | 映射路径:LOG(逻辑)或PHY(物理) |
return_opt | 返回选项:FIR(首次找到)或ALL |
where_ccid_current | 主控制文件中按CCID过滤 |
where_ccid_all | 在MCF和deltas中按CCID进行过滤 |
where_ccid_retrieve | 按检索CCID筛选 |
where_proc_group | 按处理器组筛选 |
limit | 最大结果(0=无限制) |
打印选项
| 值 | 描述 |
|---|---|
browse | 带有级别注释的当前源(默认) |
changes | 在特定级别插入/删除 |
history | 源代码中所有级别的所有行 |
summary | 每级一行摘要 |
master | 主控制文件数据 |
listing | 上次生成的输出列表 |
包状态
| 状态 | 描述 |
|---|---|
INEDIT | 正在编辑,SCL可修改 |
INAPPROVAL | 演员阵容,等待批准 |
APPROVED | 准备执行 |
INEXECUTION | 当前正在执行 |
EXECUTED | 已成功执行 |
EXECFAILED | 执行失败 |
COMMITTED | 承诺,不可能退缩 |
DENIED | 批准被拒绝 |
SCL快速参考
SCL(软件控制语言)是Endevor的原生脚本语言,通过以下方式提交 endevor_submit_scl:
LIST ELEMENT '*'
FROM ENVIRONMENT 'DEV' SYSTEM 'FINANCE' SUBSYSTEM '*'
TYPE 'COBOL' STAGE NUMBER 1
OPTIONS SEARCH .
RETRIEVE ELEMENT 'PAYCALC'
FROM ENVIRONMENT 'DEV' SYSTEM 'FINANCE' SUBSYSTEM 'ACCTS'
TYPE 'COBOL' STAGE NUMBER 1
TO DSN 'USER01.REVIEW.COBOL' MEMBER 'PAYCALC'
OPTIONS CCID 'REVIEW01' COMMENT 'Security review' .
MOVE ELEMENT 'PAYCALC'
FROM ENVIRONMENT 'DEV' SYSTEM 'FINANCE' SUBSYSTEM 'ACCTS'
TYPE 'COBOL' STAGE NUMBER 1
OPTIONS CCID 'REL21' COMMENT 'Release 2.1' .需求
- Python 3.9+
mcp[cli]>=1.0.0(MCP框架)requests>=2.31.0(HTTP客户端)urllib3>= 2.0.0
目标API
- Endevor REST API v2(版本2.26)
- 与Endevor 18.0、18.1和19.0兼容
