@vibekiln/cutline-mcp-cli 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4365,6 +4365,39 @@ var UNIVERSAL_CONSTRAINTS = [
4365
4365
  file_patterns: ["**/api/auth/**", "**/api/login*", "**/api/callback*", "**/api/checkout*", "**/middleware/**"],
4366
4366
  framework: "baseline"
4367
4367
  },
4368
+ {
4369
+ id_suffix: "sensitive_tokens_not_in_urls",
4370
+ category: "security",
4371
+ summary: "Auth/session/API tokens MUST NOT be passed in URL query parameters during redirects. Sensitive tokens in URLs leak via logs, browser history, and referrers.",
4372
+ keywords: ["token", "query-param", "callback", "returnUrl", "redirect", "referrer", "url-leakage"],
4373
+ severity: "critical",
4374
+ action: "Use Authorization headers or httpOnly cookies for token transport. Validate callback/return URLs against an allowlist and never append bearer/session tokens to redirected URLs.",
4375
+ checklist_ref: "D11",
4376
+ file_patterns: ["**/auth/**", "**/api/auth/**", "**/api/**/checkout*", "**/mcp-auth*", "**/session/**", "**/middleware/**"],
4377
+ framework: "baseline"
4378
+ },
4379
+ {
4380
+ id_suffix: "no_secrets_in_query_params",
4381
+ category: "security",
4382
+ summary: "Secrets (revalidation secrets, API secrets, webhook secrets) MUST NOT be transported via URL query parameters. Query-string secrets are leaked through logs, referrers, and browser history.",
4383
+ keywords: ["secret", "query-param", "url", "revalidate", "webhook", "referrer", "leakage"],
4384
+ severity: "critical",
4385
+ action: "Accept secrets only via headers or signed request bodies. Reject secret-bearing query params in production endpoints. Rotate any secret previously sent in URLs.",
4386
+ checklist_ref: "D12",
4387
+ file_patterns: ["**/api/**", "**/webhooks/**", "**/revalidate/**", "**/middleware/**"],
4388
+ framework: "baseline"
4389
+ },
4390
+ {
4391
+ id_suffix: "no_state_change_get_cookie_auth",
4392
+ category: "security",
4393
+ summary: "State-changing operations MUST NOT be reachable via GET when cookie authentication is accepted. GET + cookie auth creates CSRF risk.",
4394
+ keywords: ["csrf", "get", "state-change", "cookie-auth", "origin-check", "referer", "method-safety"],
4395
+ severity: "critical",
4396
+ action: "Use POST/PUT/DELETE for side effects. If GET fallback is unavoidable, enforce strict same-origin checks (Origin/Referer/sec-fetch-site) and avoid cookie-based auth fallback where possible.",
4397
+ checklist_ref: "D13",
4398
+ file_patterns: ["**/api/**", "**/auth/**", "**/checkout/**", "**/middleware/**"],
4399
+ framework: "baseline"
4400
+ },
4368
4401
  {
4369
4402
  id_suffix: "ai_cost_caps",
4370
4403
  category: "security",
@@ -5551,6 +5584,9 @@ D7. Do sensitive actions (account deletion, email change, role escalation) requi
5551
5584
  D8. Is payment/billing logic validated server-side? Can prices or quantities be tampered with client-side?
5552
5585
  D9. Are redirect URLs validated against an allowlist? Can open redirects be exploited for phishing?
5553
5586
  D10. Are webhook signatures verified before processing payment or event data?
5587
+ D11. Are auth/session/API tokens kept out of URL query params (including callback/returnUrl redirects) and transported via headers or httpOnly cookies instead?
5588
+ D12. Are secrets (revalidate/API/webhook/etc.) kept out of URL query params and accepted only via headers or signed bodies?
5589
+ D13. Are side-effecting endpoints using non-GET methods, and are cookie-auth GET fallbacks protected with strict same-origin checks?
5554
5590
 
5555
5591
  ### E. Security Rules & Infrastructure
5556
5592
  E1. For Firestore/database rules: do they enforce per-user data isolation?
@@ -5629,7 +5665,7 @@ Return a JSON object with exactly these fields:
5629
5665
  - targetUsers (string): Who uses this product, from a security perspective.
5630
5666
  - referenceClasses (string[]): Security frameworks or standards that apply (e.g., "OWASP Top 10 2021", "SOC 2 Type II").
5631
5667
  - constraints (object?): Resource constraints \u2014 team, budget_usd, deadline_days, must_ship_scope.
5632
- - checklist_summary (object): Keys are checklist IDs (A1-A8, B1-B6, C1-C7, D1-D8, E1-E4, F1-F3, G-*, H1-H3, I1-I8, J1-J6, K1-K8), values are "pass"|"fail"|"warn"|"not_applicable". This forces systematic coverage.
5668
+ - checklist_summary (object): Keys are checklist IDs (A1-A8, B1-B6, C1-C8, D1-D13, E1-E7, F1-F4, G-*, H1-H3, I1-I8, J1-J6, K1-K8), values are "pass"|"fail"|"warn"|"not_applicable". This forces systematic coverage.
5633
5669
  - compliance_signals (array of {framework: "pci_dss"|"hipaa"|"fedramp"|"gdpr_ccpa"|"owasp_llm"|"glba"|"ferpa_coppa"|"csa_ccm"|"ios_app_store", signal: string, confidence: number}?): Detected compliance framework signals. Return [] if none.
5634
5670
 
5635
5671
  Be concrete and specific. Reference file paths and line numbers where possible. If a checklist item cannot be assessed from the provided files, mark it "not_applicable" and note why. Cover ALL sections A through K.`;
@@ -5855,6 +5891,11 @@ var SECURITY_PATH_PATTERNS = [
5855
5891
  /\/permissions?/i,
5856
5892
  /\/roles?/i,
5857
5893
  /\/tokens?/i,
5894
+ /\/redirect/i,
5895
+ /\/callback/i,
5896
+ /returnurl/i,
5897
+ /\/mcp-auth/i,
5898
+ /checkout-link/i,
5858
5899
  /\/csrf/i,
5859
5900
  /\/rate-limit/i,
5860
5901
  /\/encrypt/i,
@@ -6538,6 +6579,11 @@ var SECURITY_PATH_PATTERNS2 = [
6538
6579
  /billing/i,
6539
6580
  /stripe/i,
6540
6581
  /webhook/i,
6582
+ /redirect/i,
6583
+ /callback/i,
6584
+ /returnurl/i,
6585
+ /mcp-auth/i,
6586
+ /checkout-link/i,
6541
6587
  // Scalability & reliability patterns
6542
6588
  /\/db\//i,
6543
6589
  /queries?\//i,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibekiln/cutline-mcp-cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "CLI and MCP servers for Cutline — authenticate, then run constraint-aware MCP servers in Cursor or any MCP client.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",