Skip to content

fix(a2a): fail closed when no auth is configured on unrecognized runtimes - #2450

Open
sebastionoss wants to merge 4 commits into
BuilderIO:mainfrom
sebastionoss:fix/cwe287-server-authentica-06df
Open

fix(a2a): fail closed when no auth is configured on unrecognized runtimes#2450
sebastionoss wants to merge 4 commits into
BuilderIO:mainfrom
sebastionoss:fix/cwe287-server-authentica-06df

address review: add changeset, update A2A skill, add route-level regr…

f544849
Select commit
Loading
Failed to load commit list.
Builder.io Integration / Review Agent completed Jul 28, 2026 in 13m 18s

3 potential issues found

Incremental Code Review Summary

This update closes the previously identified reverse-proxy loopback bypass by requiring an explicit NODE_ENV=development|test signal in addition to a loopback peer, and adds broad regression coverage for both JSON-RPC and processor routes. The core security direction is sound, and the previous blocking findings were fixed in the prior increment.

Risk level: High, because this PR changes authentication and asynchronous task execution boundaries.

New findings

  • 🟡 MEDIUM — Agent cards can still omit JWT authentication metadata on unrecognized runtimes even though remote unsigned requests now receive 503, creating a discovery/protocol mismatch.
  • 🟡 MEDIUM — API-key-only authenticated async requests can enqueue tasks whose processor dispatch is rejected because _process-task only accepts A2A_SECRET-signed or trusted-local requests.
  • 🟡 MEDIUM — The new server integration tests do not clear every production-runtime environment signal, so CI provider variables can make supposedly non-production cases fail nondeterministically.

Focused incremental reviews found no further security bypasses. Browser testing is not applicable to these backend/authentication and test changes.

🧪 Browser testing: Skipped — PR only modifies backend authentication, documentation, changeset metadata, and tests, with no user-facing UI impact.