Repository navigation
Security: resolve pre-release review findings (LAB-38…LAB-44) - #2
Merged
Merged
Conversation
- LAB-38: dashboard rejects spoofed Host / cross-origin requests; /api/exec is POST + application/json (streamed via fetch, no more GET CSRF vector) - LAB-39: every server-sourced value HTML-escaped before innerHTML - LAB-40: Wherobots API key moved to Secrets Manager; Lambdas fetch at cold start under a one-secret GetSecretValue policy; teardown deletes the secret - LAB-41: wherobots-python-sdk pinned (0.4.0) and vendored into Lambda zips; no network install at cold start - LAB-42: API Gateway stage throttled (burst 10 / rate 5); relay returns generic errors with details to CloudWatch; 256KB payload cap; trust model documented in the relay docstring and a README security section - LAB-43: dependabot.yml for pip + github-actions (repo-setting toggles need an org admin — tracked in the Linear issue) - LAB-44: SRI on highlight.js, internal SCP comment removed, ManagedBy tag now wherobots-labs, bogus teardown policy delete fixed - tests: 7 new (request-gate regression suite + pinned-requirements check)
LAB-44 [Low] Hygiene: SRI on CDN script, internal SCP comment, ManagedBy tag, teardown policy name
Small fixes, bundled together:
LAB-38 [High] Dashboard accepts cross-origin requests: any website can trigger deploy/teardown or start job runs
Where: The local dashboard server never checks the requesting site (
Reproduced locally (no
Fix:
|
…letion, restore soft deletes, fail loudly after 2 minutes
Contributor
Author
|
@salty-hambot review |
Contributor
Author
|
@salty-hambot review |
jiayuasu
approved these changes
Oct 2, 2026
… the current Overture release
…ect JSON bodies with a 400 instead of hanging
Contributor
Author
|
@salty-hambot review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves the code-level findings from the Labs charter security review (LAB-37) at
c7774eb./api/execis now POST +application/json, streamed via fetch; 6 regression testsesc()helper; every server-sourced value escaped beforeinnerHTMLGetSecretValuepolicy; fetched at cold start; teardown deletes itwherobots-python-sdk==0.4.0pinned and vendored into the zips at deploy timedependabot.yml(pip + github-actions). Secret scanning / push protection / Dependabot-alert toggles need an org admin (this token has only maintain)ManagedBy=wherobots-labs, bogus teardown policy delete removedVerified: 22 unit tests green (7 new),
bash -non both scripts, vendoring resolves to manylinux wheels and imports, live request-gate smoke (spoofed Host 403 / foreign Origin 403 / GET exec 404 / text-plain POST 415 / evil-origin POST 403 / legit 200), dashboard exercised in a real browser with zero console errors (SRI hashes verified by the browser). Not yet verified live on AWS (local AWS session expired): the reworked02_deploy.shsecret + vendored-zip flow needs one deploy→run→teardown cycle once credentials are refreshed.🤖 Generated with Claude Code