Potential information disclosure: runtime Laravel log accessible without authentication in a Docker deployment
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- apache, docker, laravel, php
- Domain
- infrastructure, security
Research direction
Start by comparing the Docker deployment’s effective Apache configuration and persistent application volume with the supplied .htaccess rules, which returned 403 in a separate local test. Reproduce with a harmless marker in storage/logs/laravel.log and an unauthenticated request; first establish the affected image version and deployment configuration. Done means the request is denied in the affected supported configurations and a regression test covers it.
Written by the indexing model from the issue text.
Description
LinkStack version
The exact application version, container image tag, and image digest of the affected deployment have not yet been recorded. The affected version range is therefore unknown.
Description
In my Docker-hosted LinkStack deployment, the runtime Laravel log is accessible over HTTP without authentication at:
/storage/logs/laravel.log
This report concerns the runtime log, not the separate, currently empty assets/storage/logs/laravel.log file included in the source repository.
Application logs should not be publicly downloadable. Depending on the exceptions and logging configuration, they may disclose stack traces, internal filesystem paths, database error details, or sensitive values included in exception messages. No credentials or personal data are included in this report.
The precise cause in the affected deployment has not yet been established. Possible causes include ineffective access-denial rules, deployment-specific configuration, or an older application directory persisted in a Docker volume. This report does not establish that every official image or a fresh installation is affected.
Details about your system
- Deployment: Docker-hosted LinkStack
- Observed behavior: unauthenticated HTTP access to
/storage/logs/laravel.log - Exact image repository, tag, and digest: not yet recorded
- LinkStack version, PHP version, Docker Compose configuration, and reverse-proxy configuration: not yet provided
How to reproduce
The following describes the reported behavior on the affected deployment; reproduction on a clean official image is still pending.
-
Use a controlled LinkStack test deployment matching the affected configuration.
-
Ensure
storage/logs/laravel.logexists and contains only a harmless test marker. Do not use production log contents. -
From an unauthenticated client, request:
curl -i 'https://<test-instance>/storage/logs/laravel.log' -
Check whether the response exposes the marker.
Expected behavior: The request is denied or the file is not web-accessible, regardless of authentication state.
Reported actual behavior: The log file can be retrieved without authentication.
Validation performed so far: A separate local Apache test using the current application checkout returned 403 Forbidden when the supplied .htaccess rules were enabled. This verifies those rules under that configuration, but is not a reproduction of the affected Docker deployment.
Possible Solution
- Verify that the container’s effective web-server configuration denies access to runtime logs and other private application directories.
- Apply the protection consistently to HTTP and HTTPS virtual hosts and supported deployment configurations.
- Add a regression test that creates a harmless runtime log marker and verifies that an unauthenticated request cannot retrieve it.
- Document how existing installations with persistent application volumes receive updated access-control rules.
- Longer term, serve only public application files from the document root rather than relying on deny rules to protect internal files.
Additional Context
Related architectural discussion:
https://github.com/LinkStackOrg/LinkStack/issues/935
That issue discusses separating public files from private application files and the limitations of .htaccess on other web servers. It does not specifically document this runtime-log exposure in Docker.
- Dominant language
- Shell
- Stars
- 527
- Forks
- 72
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LinkStackOrg/linkstack-docker
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
LinkStackOrg/linkstack-docker#170 · 17 comments · 11 reactions ·
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
LinkStackOrg/linkstack-docker#166 ·
-
Volume path overlap with existing paths inside imagePossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 4/5 1-2 days Newbie friendliness 52/100
LinkStackOrg/linkstack-docker#162 · 2 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 57/100
LinkStackOrg/linkstack-docker#161 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
LinkStackOrg/linkstack-docker#160 · 3 comments ·
All issues in LinkStackOrg/linkstack-docker
Similar issues
-
TLS guide repeats certs/ in the certificate directoryPossibly taken @maheshrijal claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
prometheus/docs#3156 ·
Maintainers usually reply within 2 days
-
triaged
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
fullsend-ai/agents#1786 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
osam-cologne/archlinux-proaudio#917 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
security
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
IBM/bob-oic-tutorials#24 ·
Maintainers usually reply within 1 day