Commit graph

4 commits

Author SHA1 Message Date
google-labs-jules[bot]
de3bed10ba 🛡️ Sentinel: [MEDIUM] Fix error handling in web dashboard
🚨 Severity: MEDIUM
💡 Vulnerability: Information Exposure (CWE-209)
   - The web dashboard returned raw exception messages to users, potentially leaking internal details (stack traces, file paths, sensitive info).
   - This violated the principle of "Fail Securely".

🎯 Impact:
   - Attackers could glean information about the internal file structure or database errors to facilitate further attacks.

🔧 Fix:
   - Configured `logging` to capture errors securely to stderr (standard practice for containerized apps).
   - Updated `dashboard()` and `get_cached_markdown` to log the full exception traceback server-side.
   - Changed user-facing response to a generic "Internal Server Error" (500).

 Verification:
   - Added unit test `test_dashboard_error_handling` in `scripts/test_web_dashboard.py`.
   - Verified that the test passes: `python scripts/test_web_dashboard.py`.
   - Confirmed that the response body contains "Internal Server Error" and does NOT contain the mock secret.
2026-02-22 06:40:33 +00:00
google-labs-jules[bot]
0b8a09a572 Add security headers to web dashboard (CSP, HSTS, X-Frame-Options)
- Implemented `@app.after_request` in `scripts/web_dashboard.py` to inject security headers.
- Added `Content-Security-Policy` with `default-src 'self'`, blocking inline scripts.
- Added `X-Content-Type-Options: nosniff`.
- Added `X-Frame-Options: SAMEORIGIN`.
- Added `Referrer-Policy: strict-origin-when-cross-origin`.
- Added unit test `test_security_headers` to `scripts/test_web_dashboard.py` to verify header presence.
- Mitigates Stored XSS, Clickjacking, and MIME sniffing risks.
2026-02-09 11:27:48 +00:00
google-labs-jules[bot]
644c00e696 🎨 Palette: Add skip-to-content link for accessibility 2026-02-08 11:20:56 +00:00
google-labs-jules[bot]
9d93a21039 Bolt: Optimize health check endpoint
💡 What: Separated the /health endpoint from the main dashboard rendering logic. It now returns a lightweight JSON response.
🎯 Why: The previous implementation rendered the full Markdown dashboard for every health check, consuming unnecessary CPU and I/O resources during frequent polling.
📊 Impact: Reduces health check processing time from file reading + markdown parsing (~milliseconds) to a simple JSON return (~microseconds).
🔬 Measurement: Verified with new test script scripts/test_web_dashboard.py and updated render.yaml/app.yaml to use the new endpoint.
2026-01-21 05:17:23 +00:00