2026 week 34 update - #123
Conversation
Synced from private repo (tibco/platform-provisioner) main branch @ 9d52c6a3. Covers weeks 25-34 (55 commits since the 2026-06-16 sync). Excluded from this sync: tests/run-skill-tests.sh (runner for the private-only .ai/skills tree). Original prompt: ``` /sync-public-repo ``` Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
owen-pengtao
left a comment
There was a problem hiding this comment.
APPROVED — AIP review · 4 lenses (security primary / qa / performance / design) · No CRITICAL.
Weekly public-repo sync of weeks 25–34 (55 commits, +19.9k/-1k). The dominant theme is a well-executed round of security hardening of the Automation Hub (Flask + Playwright bootstrap service), plus a large regression-test expansion and automation-reliability fixes tracking recent CP UI changes (PCP-20335 / PCP-21866 / PCP-22439 et al).
Security (primary) — PASS (net improvement).
server.py: wildcard CORS dropped (TPSEC-124);/cp_apiSSRF closed with a positiveapi_pathguard (single leading slash + netloc equality) that runs before the bearer token is fetched, and deliberately nocurl -Lso a CP 3xx can't bounce the token (TPSEC-116);/run-gui-scriptconstrained to a first-party case allowlist, fail-safe 404 (TPSEC-135);/get_envconverted to a strict default-deny non-secret allowlist with URL userinfo stripping and a default-off dev opt-in (TPSEC-124).- Env-injection sink hardened:
_BLOCKED_REQUEST_ENV_KEYS/prefixes blockNODE_*/LD_*/PYTHON*/KUBECONFIG/GIT_SSH*etc., and/run-cli-scriptis further namespaced toTIBCOP_CLI_*(TPSEC-134). helper.py: kubeconfig exec-plugin RCE guard with a fail-closed quote/pathsep parsing-differential defense (TPSEC-163); zip-slip + symlink-member rejection via a sharedis_withincontainment predicate (TPSEC-128);MSYS_NO_PATHCONVfix for the tibtunnel accessKey (PCP-20701).- Reasoning is sound and consistently fails closed. The residual argument-injection through free-text
other_args/description params reaching tibcop's generated scripts is explicitly acknowledged in-code and tracked separately (the holistic fix being endpoint authN) — not a regression introduced here.
QA / Testing — strong.
- 39 new pytest suites + 6 bats suites, one per security fix (
test_run_cli_script_injection,test_server_cp_api_ssrf,test_upload_path_traversal,test_helper_get_env_vars_kubeconfig,test_server_get_env,test_server_run_gui_script_allowlist, …); bootstrap pytest suite now enforced in CI.
Performance — no concerns. New polling helpers (check_dom_enabled, check_dom_attribute) have bounded waits and never raise.
Design / Consistency — good. Single-source-of-truth constants for allowlists / index prefix / containment; extensive rationale comments; consistent with sibling automation patterns.
Should-address (none blocking):
- none
Nice-to-have:
_SHELL_DANGEROUS_CHARSintentionally omits quotes/space (positive RFC-1123 validation covers the k8s identifiers); the free-text residual is already tracked — worth folding into the same follow-up that authenticates the endpoint.
(C0 H0 M0 L1)
Summary
Weekly sync from the private repository, covering weeks 25-34 (55 commits since the last sync on 2026-06-16).
The main driver this cycle is a round of security hardening of the Platform Automation Hub (the Flask + Playwright bootstrap service under
docs/recipes/automation/tp-setup/bootstrap/), together with a large expansion of its regression test coverage. The rest is automation reliability work tracking recent Control Plane UI changes.Changes
/run-cli-script, blocked arbitrary module loading and environment injection through/run-gui-script, fixed SSRF in/cp_apiand in license upload that could leak the Control Plane bearer token (upload is now pinned to the tenant CP with TLS restored), sanitized/uploadfilenames and closed a zip-slip in activation-zip extraction, redacted/get_envto a non-secret allowlist and locked CORS, and blocked kubeconfig exec-plugin RCE viaTP_AUTO_KUBECONFIG.Integration_GeneralandMessaging_General, and several wizard races were fixed (async-rendered toggles, absent System Config toggle for the Global resource, add-card failures now surface instead of passing silently).tibco-cp-bc) capability toggle onboarded default-off, BW5CE utilities install driven off the BW5CE enable flag, Start Flogo/BWCE/BW5CE App toggles honoured in CLI mode, proactive BW5/BW6 product-permission grants on the BMDP install path, and unsatisfiable capability requests are now refused instead of crashing.Sync Details
🤖 Generated with Claude Code