HIGH: Secrets and internal network details committed in .env files in version control #39

Closed
opened 2026-05-09 05:19:25 +00:00 by Mark · 14 comments
Owner

Severity: High

Description

Multiple .env files with sensitive configuration are committed to version control, exposing secrets and internal network topology.

backend/.env exposed values:

  • OSINT_LLM_BASE_URL — points to internal Ollama LLM server (port 11434, private IP)
  • OSINT_DB_URL — SQLite database path
  • OSINT_CELERY_BROKER_URL — Redis broker URL (no auth)
  • OSINT_ADMIN_PASSWORD — adminadmin
  • OSINT_SECRET_KEY — dev-secret-key-change-in-production

.env exposed values:

  • JWT_SECRET — change-me-in-prod-min-32-chars-long
  • ADMIN_PASSWORD — adminadmin
  • OSINT_LLM_API_BASE_URL — internal LLM server
  • OSINT_BRAVE_API_KEY — empty (placeholder)
  • OSINT_SERPAPI_KEY — empty
  • OSINT_GOOGLE_CSE_KEY — empty
  • OSINT_GOOGLE_CSE_CX — empty

Impact

  1. Internal network IP addresses exposed revealing network topology
  2. Default JWT secret and admin password available to anyone with repo access
  3. Redis connection details exposed (no password authentication)
  4. LLM server endpoint without auth exposed

Recommendation

  1. Remove .env files from git tracking (git rm --cached)
  2. Add .env to .gitignore
  3. Provide .env.example with dummy/placeholder values only
  4. Rotate any secrets that may have been exposed
## Severity: High ## Description Multiple `.env` files with sensitive configuration are committed to version control, exposing secrets and internal network topology. ### `backend/.env` exposed values: - `OSINT_LLM_BASE_URL` — points to internal Ollama LLM server (port 11434, private IP) - `OSINT_DB_URL` — SQLite database path - `OSINT_CELERY_BROKER_URL` — Redis broker URL (no auth) - `OSINT_ADMIN_PASSWORD` — adminadmin - `OSINT_SECRET_KEY` — dev-secret-key-change-in-production ### `.env` exposed values: - `JWT_SECRET` — change-me-in-prod-min-32-chars-long - `ADMIN_PASSWORD` — adminadmin - `OSINT_LLM_API_BASE_URL` — internal LLM server - `OSINT_BRAVE_API_KEY` — empty (placeholder) - `OSINT_SERPAPI_KEY` — empty - `OSINT_GOOGLE_CSE_KEY` — empty - `OSINT_GOOGLE_CSE_CX` — empty ## Impact 1. Internal network IP addresses exposed revealing network topology 2. Default JWT secret and admin password available to anyone with repo access 3. Redis connection details exposed (no password authentication) 4. LLM server endpoint without auth exposed ## Recommendation 1. Remove .env files from git tracking (`git rm --cached`) 2. Add .env to `.gitignore` 3. Provide `.env.example` with dummy/placeholder values only 4. Rotate any secrets that may have been exposed
Author
Owner

GSD VERIFY phase failed after 3 attempts.
═══ Gate: verify-passed (osint-hub#39) ═══
Mode: Tier 1 (functional only)

GATE OK: All gates up to 'implement' pass
── Tier 1: Functional ────────────────────────────────
Running tests...
❌ Tests failed (exit 4)
configfile: pyproject.toml
plugins: anyio-4.13.0, httpx-0.36.2, timeout-2.4.0, xdist-3.8.0, cov-7.1.0, split-0.11.0, asyncio-1.4.0
timeout: 60.0s
timeout method: signal
timeout func_only: False
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 0 items

============================ no tests ran in 0.00s =============================
ERROR: file or directory not found: tests/

============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/b/Projects/osint-hub
configfile: pyproject.toml
plugins: anyio-4.13.0, httpx-0.36.2, timeout-2.4.0, xdist-3.8.0, cov-7.1.0, split-0.11.0, asyncio-1.4.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 0 items

============================ no tests ran in 0.00s =============================
Running linter...
✅ Lint clean
Running type checker...
✅ Types check clean
Previous test count: unknown

❌ GATE FAIL: verify-passed
- Tests failed with exit code 4
GATE FAIL: verify — blocked at 2026-05-27T12:20:49Z
Class: test-failure
Evidence: Verification failed: 1 failures
Git tag: osint-hub#39-gate-verify-fail-3b602df09c02 (use gate-retry after fixing)

GSD VERIFY phase failed after 3 attempts. ═══ Gate: verify-passed (osint-hub#39) ═══ Mode: Tier 1 (functional only) GATE OK: All gates up to 'implement' pass ── Tier 1: Functional ──────────────────────────────── Running tests... ❌ Tests failed (exit 4) configfile: pyproject.toml plugins: anyio-4.13.0, httpx-0.36.2, timeout-2.4.0, xdist-3.8.0, cov-7.1.0, split-0.11.0, asyncio-1.4.0 timeout: 60.0s timeout method: signal timeout func_only: False asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collected 0 items ============================ no tests ran in 0.00s ============================= ERROR: file or directory not found: tests/ ============================= test session starts ============================== platform linux -- Python 3.11.14, pytest-9.0.3, pluggy-1.6.0 rootdir: /home/b/Projects/osint-hub configfile: pyproject.toml plugins: anyio-4.13.0, httpx-0.36.2, timeout-2.4.0, xdist-3.8.0, cov-7.1.0, split-0.11.0, asyncio-1.4.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collected 0 items ============================ no tests ran in 0.00s ============================= Running linter... ✅ Lint clean Running type checker... ✅ Types check clean Previous test count: unknown ❌ GATE FAIL: verify-passed - Tests failed with exit code 4 GATE FAIL: verify — blocked at 2026-05-27T12:20:49Z Class: test-failure Evidence: Verification failed: 1 failures Git tag: osint-hub#39-gate-verify-fail-3b602df09c02 (use gate-retry after fixing)
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Author
Owner

🤖 [quickfix-osint-hub-39] still working — monitoring

🤖 [`quickfix-osint-hub-39`] still working — monitoring
Mark 2026-06-04 14:06:36 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/osint-hub#39
No description provided.