Files
kzbkowskiandClaude Sonnet 5 b313c126ce
CI / PHP 8.2 (push) Failing after 1m40s
CI / PHP 8.3 (push) Failing after 55s
CI / PHP 8.4 (push) Failing after 1m11s
Release image / image (push) Successful in 2m33s
ADconsole v1.1.0
Config backup, a Docker dev/prod split, and a Gitea-built release image.

Added
- /settings -> General -> "Configuration backup": JSON export/import of the
  panel's general settings + attribute definitions
  (App\Services\ConfigBackupService); audited as config.export / config.import.
  Export can leave out the attribute-encryption key. No AD data included.
- docker/compose.dev.yaml: live-reload dev stack that bind-mounts the working
  tree. docker/php/Dockerfile is now multi-stage (base -> dev / prod).
- .github/workflows/release.yml: on every vX.Y.Z tag, builds the prod image and
  pushes gitea.kzbikowski.pl/kzbkowski/adconsole:{X.Y.Z,X.Y,latest}.

Changed
- docker/compose.yaml: self-contained prod image (app code + composer install
  --no-dev baked in via COPY); persistent state in docker/data/{app_storage,db};
  defaults to the released image (ADCONSOLE_VERSION pins a tag, ADCONSOLE_IMAGE
  replaces the ref). Apache now honours public/.htaccess (AllowOverride All).
  Run from the repo root with --env-file .env.
- Repo root now holds only README.md; CHANGELOG / CONTRIBUTING / SECURITY /
  CODE_OF_CONDUCT moved under docs/.

Upgrade notes: docs/upgrading.md#v110--docker-layout. Full log: docs/CHANGELOG.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKT9p3bfP8RZesExdYCS52
2026-09-10 09:13:04 +02:00

2.0 KiB

Security policy

Reporting a vulnerability

Please do not open a public issue for security problems.

Email the maintainer at mail@kzbikowski.pl with the subject prefixed [ADconsole security]. If the host offers private vulnerability reporting, that channel is fine too.

Please include:

  • affected version / commit
  • a description and impact assessment
  • reproduction steps or a proof of concept
  • any suggested fix

You'll get an acknowledgement within a few working days. Please give a reasonable window for a fix before public disclosure; we'll credit you in the release notes unless you'd rather stay anonymous.

Scope

In scope: authentication and the AD_LOGIN_GROUP gate, authorisation between modules, LDAP query/filter construction (injection), handling of the service account credentials, the attribute-encryption feature, session handling, CSRF, XSS in the Blade views, privilege escalation via the bulk actions.

Out of scope: issues that require a already-privileged panel account performing actions it is legitimately delegated to do in AD; missing hardening that is the operator's responsibility (see below); vulnerabilities in Laravel, LdapRecord or other dependencies (report those upstream — do tell us so we can pin/patch).

Operator responsibilities

ADconsole is a privileged tool. When you deploy it, you are responsible for:

  • Serving it over HTTPS only, reachable from admin networks / VPN only.
  • APP_DEBUG=false, APP_ENV=production.
  • An encrypted LDAP channel (LDAP_SSL / LDAP_TLS) and, ideally, LDAP_TLS_VERIFY=true.
  • Delegating the service account only the AD rights you actually use (active-directory.md).
  • Keeping AD_LOGIN_GROUP small and audited.
  • Protecting .env (file mode 600) — it contains the service-account password.
  • Applying updates promptly.

See the hardening checklist.

Supported versions

The latest release on main receives security fixes. This is a community/self-hosted project with no long-term-support branches.