Commit Graph

66 Commits

Author SHA1 Message Date
renovate[bot]
adf5797b17 chore(deps): update weekly-non-major-updates 2026-01-16 02:17:40 +00:00
renovate[bot]
7a55cb0be9 fix(deps): update weekly-non-major-updates 2026-01-15 16:34:35 +00:00
GitHub Actions
2f44da2c34 feat(security): add plugin signature allowlisting and security hardening
Implement Phase 3 of Custom DNS Provider Plugin Support with comprehensive
security controls for external plugin loading.

Add CHARON_PLUGIN_SIGNATURES env var for SHA-256 signature allowlisting
Support permissive (unset), strict ({}), and allowlist modes
Add directory permission verification (reject world-writable)
Configure container with non-root user and read-only plugin mount option
Add 22+ security tests for permissions, signatures, and allowlist logic
Create plugin-security.md operator documentation
Security controls:

Signature verification with sha256: prefix requirement
World-writable directory rejection
Non-root container execution (charon user UID 1000)
Read-only mount support for production deployments
Documented TOCTOU mitigation with atomic deployment workflow
2026-01-14 19:59:41 +00:00
GitHub Actions
118e35f73e fix: patch golang.org/x/crypto in CrowdSec builder stage
Add x/crypto v0.46.0 upgrade to CrowdSec builder stage to remediate:
- GHSA-j5w8-q4qc-rx2x (SSH public key parsing DoS)
- GHSA-f6x5-jh6r-wrfv (SSH certificate parsing DoS)

The CrowdSec builder was missing the x/crypto patch that exists in
our backend go.mod, causing scanners to detect v0.42.0 vulnerabilities
in the final image.
2026-01-11 21:50:50 +00:00
GitHub Actions
e06eb4177b fix; CVE-2025-68156 remediation
- Changed report title to reflect security audit focus
- Updated date and status to indicate approval for commit
- Enhanced executive summary with detailed validation results
- Included comprehensive test coverage results for backend and frontend
- Documented pre-commit hooks validation and known issues
- Added detailed security scan results, confirming absence of CVE-2025-68156
- Verified binary inspection for expr-lang dependency
- Provided risk assessment and recommendations for post-merge actions
- Updated compliance matrix and final assessment sections
- Improved overall report structure and clarity
2026-01-11 19:33:25 +00:00
GitHub Actions
4d7f0425ee fix: pin CrowdSec builder to Go 1.25.5 to eliminate HIGH CVEs and enhance email header validation to prevent CRLF injection 2026-01-10 03:02:23 +00:00
GitHub Actions
543492092b fix(docker): improve security comments and clarify user privilege handling in Dockerfile 2026-01-10 00:15:18 +00:00
GitHub Actions
703bdb0745 fix(docker): resolve ARM64 cross-compilation gold linker failure
Go 1.25 hardcodes -fuse-ld=gold for ARM64 external linking, but Alpine's
clang toolchain only includes LLD. Add a clang wrapper that:
- Intercepts -fuse-ld=gold and replaces with -fuse-ld=lld
- Spoofs GNU gold version output for Go's linker validation

Fixes continuous CI failures on linux/arm64 platform builds.
2026-01-07 23:55:51 +00:00
GitHub Actions
048b0c10a7 chore(deps): upgrade Caddy to v2.11.0-beta.2
- Bump Caddy from v2.10.2 to v2.11.0-beta.2
- Remove manual quic-go v0.57.1 patch (now at v0.58.0 upstream)
- Remove manual smallstep/certificates v0.29.0 patch (now upstream)
- Keep expr-lang/expr v1.17.7 patch (still required)

All tests pass with 86%+ coverage. Zero security vulnerabilities.
2026-01-06 20:20:41 +00:00
GitHub Actions
8f15fdd97f chore: Update QA report and improve test coverage
- Updated the QA/Security Validation Report with new dates and status.
- Enhanced coverage verification metrics for backend and frontend tests.
- Improved TypeScript checks and security scans, ensuring all checks passed.
- Refactored ProxyHosts tests to utilize mock implementations for hooks and APIs.
- Added smoke test for login functionality using Playwright.
- Adjusted vitest configuration to use thread pooling for tests.
- Removed unnecessary peer dependency from package-lock.json.
2026-01-02 07:10:08 +00:00
GitHub Actions
739895d81e fix(security): resolve CrowdSec startup and permission issues
Fixes CrowdSec not starting automatically on container boot and LAPI
binding failures due to permission issues.

Changes:
- Fix Dockerfile: Add charon:charon ownership for CrowdSec directories
- Move reconciliation from routes.go goroutine to main.go initialization
- Add mutex protection to prevent concurrent reconciliation
- Increase LAPI startup timeout from 30s to 60s
- Add config validation in entrypoint script

Testing:
- Backend coverage: 85.4% ( meets requirement)
- Frontend coverage: 87.01% ( exceeds requirement)
- Security: 0 Critical/High vulnerabilities ( Trivy + Go scans)
- All CrowdSec-specific tests passing ( 100%)

Technical Details:
- Reconciliation now runs synchronously during app initialization
  (after DB migrations, before HTTP server starts)
- Maintains "GUI-controlled" design philosophy per entrypoint docs
- Follows principle of least privilege (charon user, not root)
- No breaking changes to API or behavior

Documentation:
- Implementation guide: docs/implementation/crowdsec_startup_fix_COMPLETE.md
- Migration guide: docs/implementation/crowdsec_startup_fix_MIGRATION.md
- QA report: docs/reports/qa_report_crowdsec_startup_fix.md

Related: #crowdsec-startup-timeout
2025-12-23 01:59:21 +00:00
GitHub Actions
60de33e160 fix: enhance Docker socket integration and privilege management in entrypoint script 2025-12-22 22:24:15 +00:00
GitHub Actions
e902774e85 fix(crowdsec): resolve non-root container migration issues
Container migration from root to non-root (UID 1000) broke CrowdSec startup due to:
- Missing config template population
- Incorrect symlink creation timing
- Permission conflicts on /etc/crowdsec directory

Changes:
- Dockerfile: Generate config templates at build time, remove /etc/crowdsec directory creation
- Entrypoint: Implement proper symlink creation with migration logic, add fail-fast error handling
- Variables: Centralize CrowdSec path management with CS_LOG_DIR

Testing:
-  10/11 CrowdSec verification tests passed
-  Backend coverage: 85.8% (target: 85%)
-  Frontend coverage: 87.01% (target: 85%)
-  Type safety checks passed
-  All linting passed

Fixes issues with CrowdSec not starting after container non-root migration.
2025-12-22 04:03:04 +00:00
GitHub Actions
05c2045f06 chore: reorganize repository structure
- Move docker-compose files to .docker/compose/
- Move docker-entrypoint.sh to .docker/
- Move DOCKER.md to .docker/README.md
- Move 16 implementation docs to docs/implementation/
- Delete test artifacts (block_test.txt, caddy_*.json)
- Update all references in Dockerfile, Makefile, tasks, scripts
- Add .github/instructions/structure.instructions.md for enforcement
- Update CHANGELOG.md

Root level reduced from 81 items to ~35 visible items.
2025-12-21 04:57:31 +00:00
GitHub Actions
af8384046c chore: implement instruction compliance remediation
- Replace Go interface{} with any (Go 1.18+ standard)
- Add database indexes to frequently queried model fields
- Add JSDoc documentation to frontend API client methods
- Remove deprecated docker-compose version keys
- Add concurrency groups to all 25 GitHub Actions workflows
- Add YAML front matter and fix H1→H2 headings in docs

Coverage: Backend 85.5%, Frontend 87.73%
Security: No vulnerabilities detected

Refs: docs/plans/instruction_compliance_spec.md
2025-12-21 04:08:42 +00:00
GitHub Actions
942901fb9a fix: remove Caddy version check that hangs build (CVE-2025-68156) 2025-12-17 18:37:20 +00:00
GitHub Actions
bd0dfd5487 fix: include scripts directory in Docker image for database recovery 2025-12-17 15:15:42 +00:00
renovate[bot]
e17e9b0bc0 chore(deps): update module github.com/expr-lang/expr to v1.17.7 2025-12-16 15:17:35 +00:00
GitHub Actions
53f3e44999 fix: upgrade c-ares to address CVE-2025-62408 and add MaxMind GeoLite2 configuration files 2025-12-16 14:47:48 +00:00
GitHub Actions
99b8ed1996 chore: add renovate comments for alpine base image tracking
Ensures Renovate detects and updates Alpine 3.23 to future versions
(3.24, 3.25, etc.) automatically without manual monitoring.
2025-12-14 06:36:42 +00:00
GitHub Actions
9384c9c81f fix: build CrowdSec from source to address stdlib vulnerabilities and ensure compatibility with Go 1.25.5+ 2025-12-14 04:04:01 +00:00
GitHub Actions
3fd85ce34f fix: upgrade Go to 1.25 for Caddy 2.10.2 compatibility
Caddy 2.10.2 requires Go 1.25 (declared in its go.mod). The previous
commit incorrectly downgraded to Go 1.23 based on the false assumption
that Go 1.25.5 doesn't exist.

This fix:
- Updates Dockerfile Go images from 1.23-alpine to 1.25-alpine
- Updates backend/go.mod to go 1.25
- Updates go.work to go 1.25

Fixes CI Docker build failures in xcaddy stage.
2025-12-14 01:06:03 +00:00
GitHub Actions
481208caf2 fix: correct Go version to 1.23 in Dockerfile (1.25.5 does not exist) 2025-12-14 00:44:27 +00:00
Jeremy
5b54b6582c Merge pull request #363 from Wikid82/main
chore: Sync main to development
2025-12-12 21:17:00 -05:00
GitHub Actions
4b49ec5f2b feat: Enhance LiveLogViewer with Security Mode and related tests
- Updated LiveLogViewer to support a new security mode, allowing for the display of security logs.
- Implemented mock functions for connecting to security logs in tests.
- Added tests for rendering, filtering, and displaying security log entries, including blocked requests and source filtering.
- Modified Security page to utilize the new security mode in LiveLogViewer.
- Updated Security page tests to reflect changes in log viewer and ensure proper rendering of security-related components.
- Introduced a new script for CrowdSec startup testing, ensuring proper configuration and parser installation.
- Added pre-flight checks in the CrowdSec integration script to verify successful startup and configuration.
2025-12-12 22:18:28 +00:00
GitHub Actions
7da24a2ffb Implement CrowdSec Decision Test Infrastructure
- Added integration test script `crowdsec_decision_integration.sh` for verifying CrowdSec decision management functionality.
- Created QA report for the CrowdSec decision management integration test infrastructure, detailing file verification, validation results, and overall status.
- Included comprehensive test cases for starting CrowdSec, managing IP bans, and checking API responses.
- Ensured proper logging, error handling, and cleanup procedures within the test script.
- Verified syntax, security, and functionality of all related files.
2025-12-12 20:33:41 +00:00
renovate[bot]
a753211528 chore(deps): update node.js to v24.12.0 2025-12-11 22:45:47 +00:00
GitHub Actions
8294d6ee49 Add QA test outputs, build scripts, and Dockerfile validation
- Created `qa-test-output-after-fix.txt` and `qa-test-output.txt` to log results of certificate page authentication tests.
- Added `build.sh` for deterministic backend builds in CI, utilizing `go list` for efficiency.
- Introduced `codeql_scan.sh` for CodeQL database creation and analysis for Go and JavaScript/TypeScript.
- Implemented `dockerfile_check.sh` to validate Dockerfiles for base image and package manager mismatches.
- Added `sourcery_precommit_wrapper.sh` to facilitate Sourcery CLI usage in pre-commit hooks.
2025-12-11 18:26:24 +00:00
GitHub Actions
65d837a13f chore: clean cache 2025-12-11 18:17:21 +00:00
GitHub Actions
571a61aaea feat: install CrowdSec CLI (cscli) in Docker runtime stage
- Add cscli installation from official CrowdSec releases
- Update to CrowdSec v1.7.4 (from v1.6.0)
- Extract both crowdsec and cscli binaries from release tarball
- Install cscli to /usr/local/bin for PATH availability
- Add build-time validation with cscli version check
- Maintain minimal image size (293MB)
- Keep existing multi-stage build structure intact
2025-12-08 23:19:38 +00:00
Jeremy
8d9e677c74 Merge branch 'feature/beta-release' into development 2025-12-07 23:48:18 -05:00
renovate[bot]
f5657ec0ee chore(deps): update tonistiigi/xx docker tag to v1.9.0 2025-12-08 00:35:50 +00:00
GitHub Actions
72ff6313de Implement CrowdSec integration with API endpoints for managing IP bans and decisions
- Added unit tests for CrowdSec handler, including listing, banning, and unbanning IPs.
- Implemented mock command executor for testing command execution.
- Created tests for various scenarios including successful operations, error handling, and invalid inputs.
- Developed CrowdSec configuration tests to ensure proper handler setup and JSON output.
- Documented security features and identified gaps in CrowdSec, WAF, and Rate Limiting implementations.
- Established acceptance criteria for feature completeness and outlined implementation phases for future work.
2025-12-05 17:23:26 +00:00
renovate[bot]
a060db58de chore(deps): update module github.com/quic-go/quic-go to v0.57.1 (#317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 06:29:42 +00:00
renovate[bot]
aebae095b4 chore(deps): update module github.com/expr-lang/expr to v1.17.6 (#316)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 06:29:20 +00:00
GitHub Actions
562bb012fb feat: Enhance Dockerfile for Caddy with security patches and automate dependency management
- Added custom manager in renovate.json to track Go dependencies patched in Dockerfile for Caddy CVE fixes.
- Updated Dockerfile to pre-fetch and override vulnerable module versions for dependencies (expr, quic-go, smallstep/certificates) during the build process.
- Improved build resilience by implementing a fallback mechanism for Caddy versioning.
- Introduced tests for user SMTP audit, covering invite token security, input validation, authorization, and SMTP config security.
- Enhanced user invite functionality with duplicate email protection and case-insensitive checks.
- Updated go.work.sum to include new dependencies and ensure compatibility.
2025-12-05 02:15:43 +00:00
renovate[bot]
727b02701e chore(deps): update alpine docker tag to v3.23 2025-12-03 21:08:00 +00:00
renovate[bot]
362a76f962 chore(deps): update golang docker tag to v1.25.5 2025-12-03 14:22:26 +00:00
GitHub Actions
53244d77a8 feat: add CrowdSec installation and create necessary directories in Dockerfile 2025-12-01 16:22:21 +00:00
GitHub Actions
83afbbf1fc feat: Add CrowdSec management endpoints and feature flags handler
- Implemented CrowdSec process management with start, stop, and status endpoints.
- Added import functionality for CrowdSec configuration files with backup support.
- Introduced a new FeatureFlagsHandler to manage feature flags with database and environment variable fallback.
- Created tests for CrowdSec handler and feature flags handler.
- Updated routes to include new feature flags and CrowdSec management endpoints.
- Enhanced import handler with better error logging and diagnostics.
- Added frontend API calls for CrowdSec management and feature flags.
- Updated SystemSettings page to manage feature flags and CrowdSec controls.
- Refactored logs and other components for improved functionality and UI consistency.
2025-12-01 16:19:05 +00:00
GitHub Actions
00b2bc798a chore(docker): pin golang base images to 1.25.4-alpine to satisfy hadolint DL3006 2025-12-01 16:19:05 +00:00
renovate[bot]
9d3805f1ee chore(deps): update alpine docker tag to v3.22 2025-12-01 14:37:58 +00:00
GitHub Actions
fc1e37f408 build: propagate VERSION into frontend build (VITE_APP_VERSION) 2025-11-30 00:06:50 +00:00
CI
a60be34f60 chore(ci): add PR-only Trivy app-only scan and pin Caddy v2.10.2 2025-11-29 21:23:54 +00:00
Wikid82
a0b2d3ffef fix: use find to locate and move dlv binary reliably 2025-11-22 00:43:23 -05:00
Wikid82
4d8c6fbb13 fix: handle dlv binary location dynamically without GOBIN 2025-11-22 00:33:10 -05:00
Wikid82
61b13a4b2b fix: use GOBIN to force dlv installation path in Dockerfile 2025-11-22 00:31:08 -05:00
Wikid82
902a09d686 fix: ensure dlv binary is verifiable and copied correctly in multi-arch build 2025-11-22 00:23:59 -05:00
Wikid82
9914e20817 feat: optimize Dockerfile build process with cache mounts for frontend and backend 2025-11-21 10:54:03 -05:00
renovate[bot]
766075298c chore(deps): update tonistiigi/xx docker tag to v1.8.0 2025-11-21 15:24:14 +00:00