Peter Steinberger
223d7dc23d
feat(gateway)!: require explicit non-loopback control-ui origins
2026-02-24 01:57:11 +00:00
Peter Steinberger
161d9841dc
refactor(security): unify dangerous name matching handling
2026-02-24 01:33:08 +00:00
Peter Steinberger
cfa44ea6b4
fix(security): make allowFrom id-only by default with dangerous name opt-in ( #24907 )
...
* fix(channels): default allowFrom to id-only; add dangerous name opt-in
* docs(security): align channel allowFrom docs with id-only default
2026-02-24 01:01:51 +00:00
Peter Steinberger
663f784e4e
test(core): trim redundant setup and tighten waits
2026-02-24 00:31:58 +00:00
Peter Steinberger
f52a0228ca
test: optimize auth and audit test runtime
2026-02-23 23:31:52 +00:00
Peter Steinberger
b922ecb8c1
test(security): reduce duplicate audit assertions
2026-02-23 22:16:39 +00:00
Peter Steinberger
57b75678d4
test(security): consolidate runtime guardrail scans
2026-02-22 22:06:01 +00:00
Peter Steinberger
0d0f4c6992
refactor(exec): centralize safe-bin policy checks
2026-02-22 13:18:25 +01:00
Peter Steinberger
c283f87ab0
refactor: clarify strict loopback proxy audit rules
2026-02-22 11:35:08 +01:00
Peter Steinberger
29e41d4c0a
fix: land security audit severity + temp-path guard fixes ( #23428 ) (thanks @bmendonca3)
2026-02-22 11:26:17 +01:00
Brian Mendonca
bc78b343ba
Security: expand audit checks for mDNS and real-IP fallback
2026-02-22 11:26:17 +01:00
Peter Steinberger
265da4dd2a
fix(security): harden gateway command/audit guardrails
2026-02-22 08:45:48 +01:00
Peter Steinberger
049b8b14bc
fix(security): flag open-group runtime/fs exposure in audit
2026-02-22 08:22:51 +01:00
Peter Steinberger
fbf0c99d7c
test(security): simplify repeated audit finding assertions
2026-02-21 23:09:15 +00:00
Peter Steinberger
0608587bc3
test: streamline config, audit, and qmd coverage
2026-02-21 22:23:43 +00:00
Peter Steinberger
c240104dc3
refactor(test): snapshot gateway auth env in security audit tests
2026-02-21 19:16:21 +00:00
Peter Steinberger
7724abeee0
refactor(test): dedupe env setup across suites
2026-02-21 19:13:46 +00:00
Peter Steinberger
f97c45c5b5
fix(security): warn on Discord name-based allowlists in audit
2026-02-21 19:45:17 +01:00
Peter Steinberger
f48698a50b
fix(security): harden sandbox browser network defaults
2026-02-21 14:02:53 +01:00
Peter Steinberger
8c1518f0f3
fix(sandbox): use one-time noVNC observer tokens
2026-02-21 13:56:58 +01:00
Peter Steinberger
1835dec200
fix(security): force sandbox browser hash migration and audit stale labels
2026-02-21 13:25:41 +01:00
Peter Steinberger
14b0d2b816
refactor: harden control-ui auth flow and add insecure-flag audit summary
2026-02-21 13:18:23 +01:00
Peter Steinberger
f76f98b268
chore: fix formatting drift and stabilize cron tool mocks
2026-02-19 15:41:38 +01:00
Peter Steinberger
b40821b068
fix: harden ACP secret handling and exec preflight boundaries
2026-02-19 15:34:20 +01:00
Peter Steinberger
5dc50b8a3f
fix(security): harden npm plugin and hook install integrity flow
2026-02-19 15:11:25 +01:00
Peter Steinberger
e3e0ffd801
feat(security): audit gateway HTTP no-auth exposure
2026-02-19 14:25:56 +01:00
habakan
825cc70796
test: dedupe gateway auth and sessions patch coverage ( #20087 )
2026-02-19 03:35:58 -08:00
Jay Caldwell
9edec67a18
fix(security): block plaintext WebSocket connections to non-loopback addresses ( #20803 )
...
* fix(security): block plaintext WebSocket connections to non-loopback addresses
Addresses CWE-319 (Cleartext Transmission of Sensitive Information).
Previously, ws:// connections to remote hosts were allowed, exposing
both credentials and chat data to network interception. This change
blocks ALL plaintext ws:// connections to non-loopback addresses,
regardless of whether explicit credentials are configured (device
tokens may be loaded dynamically).
Security policy:
- wss:// allowed to any host
- ws:// allowed only to loopback (127.x.x.x, localhost, ::1)
- ws:// to LAN/tailnet/remote hosts now requires TLS
Changes:
- Add isSecureWebSocketUrl() validation in net.ts
- Block insecure connections in GatewayClient.start()
- Block insecure URLs in buildGatewayConnectionDetails()
- Handle malformed URLs gracefully without crashing
- Update tests to use wss:// for non-loopback URLs
Fixes #12519
* fix(test): update gateway-chat mock to preserve net.js exports
Use importOriginal to spread actual module exports and mock only
the functions needed for testing. This ensures isSecureWebSocketUrl
and other exports remain available to the code under test.
2026-02-19 03:13:08 -08:00
Coy Geek
f7a7a28c56
fix: enforce hooks token separation from gateway auth ( #20813 )
...
* fix(an-03): apply security fix
Generated by staged fix workflow.
* fix(an-03): apply security fix
Generated by staged fix workflow.
* fix(an-03): remove stale test-link artifact from patch
Remove accidental a2ui test-link artifact from the tracked diff and keep startup auth enforcement centralized in startup-auth.ts.
2026-02-19 02:48:08 -08:00
the sun gif man
114736ed1a
Doctor/Security: fix telegram numeric ID + symlink config permission warnings ( #19844 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: e42bf1e48de947571007df1d65f25d157a399a84
Co-authored-by: joshp123 <1497361+joshp123@users.noreply.github.com >
Co-authored-by: joshp123 <1497361+joshp123@users.noreply.github.com >
Reviewed-by: @joshp123
2026-02-18 00:09:51 -08:00
cpojer
2a4ca7671e
chore: Fix types in tests 35/N.
2026-02-17 15:50:07 +09:00
Peter Steinberger
887b209db4
fix(security): harden sandbox docker config validation
2026-02-16 03:04:06 +01:00
Peter Steinberger
92f8c0fac3
perf(test): speed up suites and reduce fs churn
2026-02-15 19:29:27 +00:00
Peter Steinberger
e3b432e481
fix(telegram): require sender ids for allowlist auth
2026-02-14 16:09:00 +01:00
Peter Steinberger
539689a2f2
feat(security): warn when gateway.tools.allow re-enables dangerous HTTP tools
2026-02-14 12:48:02 +01:00
Nick Taylor
1fb52b4d7b
feat(gateway): add trusted-proxy auth mode ( #15940 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 279d4b304f83186fda44dfe63a729406a835dafa
Co-authored-by: nickytonline <833231+nickytonline@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-14 12:32:17 +01:00
Peter Steinberger
72e9364bac
perf(test): speed up hot test files
2026-02-14 02:55:39 +00:00
Peter Steinberger
c2f7b66d22
perf(test): replace module resets with direct spies and runtime seams
2026-02-13 16:04:49 +00:00
Peter Steinberger
f612e35907
fix: add dmScope guidance regression coverage ( #13129 ) (thanks @VintLin)
2026-02-13 16:43:39 +01:00
Peter Steinberger
1def8c5448
fix(security): extend audit hardening checks
2026-02-13 16:26:58 +01:00
Harald Buerbaumer
30b6eccae5
feat(gateway): add auth rate-limiting & brute-force protection ( #15035 )
...
* feat(gateway): add auth rate-limiting & brute-force protection
Add a per-IP sliding-window rate limiter to Gateway authentication
endpoints (HTTP, WebSocket upgrade, and WS message-level auth).
When gateway.auth.rateLimit is configured, failed auth attempts are
tracked per client IP. Once the threshold is exceeded within the
sliding window, further attempts are blocked with HTTP 429 + Retry-After
until the lockout period expires. Loopback addresses are exempt by
default so local CLI sessions are never locked out.
The limiter is only created when explicitly configured (undefined
otherwise), keeping the feature fully opt-in and backward-compatible.
* fix(gateway): isolate auth rate-limit scopes and normalize 429 responses
---------
Co-authored-by: buerbaumer <buerbaumer@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 15:32:38 +01:00
Peter Steinberger
3421b2ec1e
fix: harden hook session key routing defaults
2026-02-13 02:09:14 +01:00
Peter Steinberger
9230a2ae14
fix(browser): require auth on control HTTP and auto-bootstrap token
2026-02-13 02:02:28 +01:00
Gustavo Madeira Santana
e2dea2684f
Tests: harden flake hotspots and consolidate provider-auth suites ( #11598 )
...
* Tests: harden flake hotspots and consolidate provider-auth suites
* Tests: restore env vars by deleting missing snapshot values
* Tests: use real newline in memory summary filter case
* Tests(memory): use fake timers for qmd timeout coverage
* Changelog: add tests hardening entry for #11598
2026-02-07 21:32:23 -05:00
cpojer
328b69be17
chore: Fix audit test on Windows.
2026-02-06 10:22:48 +09:00
Abdel Sy Fane
bc88e58fcf
security: add skill/plugin code safety scanner ( #9806 )
...
* security: add skill/plugin code safety scanner module
* security: integrate skill scanner into security audit
* security: add pre-install code safety scan for plugins
* style: fix curly brace lint errors in skill-scanner.ts
* docs: add changelog entry for skill code safety scanner
* style: append ellipsis to truncated evidence strings
* fix(security): harden plugin code safety scanning
* fix: scan skills on install and report code-safety details
* fix: dedupe audit-extra import
* fix(security): make code safety scan failures observable
* fix(test): stabilize smoke + gateway timeouts (#9806 ) (thanks @abdelsfane)
---------
Co-authored-by: Darshil <ddhameliya@mail.sfsu.edu >
Co-authored-by: Darshil <81693876+dvrshil@users.noreply.github.com >
Co-authored-by: George Pickett <gpickett00@gmail.com >
2026-02-05 16:06:11 -08:00
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Vignesh
1d37815443
fix(models): recognize Venice-style claude-opus-45 as claude-opus-4-5 thanks @jonisjongithub
2026-01-27 12:40:06 -08:00