You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+40Lines changed: 40 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,45 @@
1
1
# Changelog
2
2
3
+
## 0.1.7 — 2026-04-10
4
+
### Security — OWASP Top 10 Hardening
5
+
6
+
This is a **security release** addressing 6 Critical and 5 High severity findings from a comprehensive OWASP Top 10 audit.
7
+
8
+
#### A01: Broken Access Control
9
+
-**No default credentials** — `Credentials::from_env()` now returns an error when `STATUS_PANEL_USERNAME` / `STATUS_PANEL_PASSWORD` are unset; no admin/admin backdoor
Copy file name to clipboardExpand all lines: SECURITY.md
+41Lines changed: 41 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,47 @@ The project maintainers will then work with you to resolve any issues where requ
8
8
9
9
---
10
10
11
+
## Authentication Hardening (v0.1.7+)
12
+
13
+
### Credential Configuration
14
+
15
+
The agent has **no default credentials**. Authentication is disabled until you explicitly configure:
16
+
17
+
```bash
18
+
STATUS_PANEL_USERNAME=your-username
19
+
STATUS_PANEL_PASSWORD=your-strong-password
20
+
```
21
+
22
+
If these environment variables are not set:
23
+
- Login returns `503 Service Unavailable`
24
+
- A warning is logged on every login attempt
25
+
- Run `status init` to generate a `.env` template
26
+
27
+
### Agent ID Protection
28
+
29
+
The `AGENT_ID` environment variable must be set to protect API endpoints (`/api/self/*`, `/api/v1/*`). When unset, these endpoints return `401 Unauthorized`.
30
+
31
+
### Session Security
32
+
33
+
- Sessions are stored in-memory with creation timestamps
34
+
-`cleanup_expired(duration)` removes sessions older than the TTL
35
+
- Logout invalidates the session server-side and clears the cookie
36
+
- Cookies use `HttpOnly; Secure; SameSite=Strict` attributes
37
+
-`Max-Age=0` is set on logout to prevent stale cookies
38
+
39
+
### Bind Address
40
+
41
+
The API server defaults to `127.0.0.1` (localhost only). To expose on all interfaces, explicitly pass `--bind 0.0.0.0`. This prevents accidental exposure on public networks.
42
+
43
+
### Self-Update Integrity
44
+
45
+
- Update downloads require HTTPS — HTTP URLs are rejected
46
+
- SHA256 hash is computed on every download
47
+
- If `UPDATE_EXPECTED_SHA256` is set, hash must match or the update fails
48
+
- If not set, a warning is logged with the computed hash for manual verification
0 commit comments