`createMcpExpressApp` / `createMcpHonoApp`: non-loopback `host` silently skips Host/Origin checks (only `0.0.0.0`/`::` warn) |
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 65/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- node.js, typescript
- Lĩnh vực
- backend-api-design, security
Hướng nghiên cứu
Vấn đề nằm trong packages/middleware/express/src/express.ts và packages/middleware/hono/src/hono.ts. Hãy xem xét logic thêm middleware localhostHostValidation và ghi lại cảnh báo. Nhiệm vụ là mở rộng cảnh báo hoặc xác thực sang các máy chủ không phải loopback như '192.168.1.10'. Kiểm tra cách các tùy chọn allowedHosts và allowedOrigins được sử dụng. Một bài kiểm tra nên xác minh rằng cảnh báo xuất hiện hoặc việc xác thực được áp dụng cho một máy chủ không phải loopback.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Static review of public source at commit 603217008710. No traffic was sent to any MCP environment.
createMcpExpressApp (and the matching Hono helper) auto-arm Host + Origin validation only for loopback hosts. Binding to 0.0.0.0 / :: logs a warning, but any other non-loopback host (LAN IP, container hostname, public DNS name) gets neither middleware nor that warning:
packages/middleware/express/src/express.ts (same ladder in packages/middleware/hono/src/hono.ts):
const localhostHosts = ['127.0.0.1', 'localhost', '::1'];
if (localhostHosts.includes(host)) {
app.use(localhostHostValidation());
} else if (host === '0.0.0.0' || host === '::') {
console.warn(
`Warning: Server is binding to ${host} without DNS rebinding protection. ` +
'Consider using the allowedHosts option...'
);
}
// Origin: only armed for loopback or explicit allowedOrigins
So createMcpExpressApp({ host: '192.168.1.10' }) or { host: 'mcp.internal' } serves without Host/Origin checks and without the operator nudge that 0.0.0.0 already gets. DNS rebinding / browser-origin abuse is exactly what those middleware exist for on HTTP MCP endpoints.
Suggested change:
- Treat every non-loopback
hostlike0.0.0.0: requireallowedHosts(and ideallyallowedOrigins), or at least emit the same warning. - Or fail closed: refuse to construct the app for non-loopback binds unless allowlists are provided.
- Keep the explicit opt-out path for demos that truly need an open bind.
Severity: medium as insecure default / defense-in-depth for non-loopback HTTP mounts; not claiming a working exploit against a specific deployment. No proof-of-concept.
Happy to send a focused PR if this direction is useful.
- Ngôn ngữ chính
- TypeScript
- Star
- 13.4k
- Fork
- 2.2k
- Merge trung bình
- 4 ngày 18 giờ
- Pull request đã merge (30 ngày)
- 6
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelcontextprotocol/typescript-sdk
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Auth metadata discovery: fallback URL built on resource host instead of authorization-server host Đang mởv1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
-
v1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
modelcontextprotocol/typescript-sdk#2783 · 1 bình luận ·
-
v1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
modelcontextprotocol/typescript-sdk#2773 · 1 bình luận ·
-
v2
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
modelcontextprotocol/typescript-sdk#2766 · 1 bình luận ·
Tất cả issue của modelcontextprotocol/typescript-sdk
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
bcgov/bc-wallet-mobile#4761 · 1 bình luận ·
-
external-issue to-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
area-deployment area-integrations triage:bot-seen
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 86/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100