Homer: Hardcoded Default Admin Password 'sipcapture' With No Forced Change on First Login
### Summary On every fresh Homer deployment using internal authentication, the bootstrap process automatically creates an `admin` account with the password `sipcapture` (stored as a legacy SHA-256 hex hash). There is no first-login forced-change mechanism. Any attacker who reaches the login endpoint immediately gains full administrative access. ### Details **`config/config.go` lines 858-861:** ```go // DefaultInternalAuthPasswordHash is the SHA-256 hex digest of the default // bootstrap password (cleartext: sipcapture). const DefaultInternalAuthPasswordHash = "883ffc1f37fd0fe542b0fb9740035c4383e7d976c411161d24e62edace280f90" ``` **`coordinator/services/auth_bootstrap.go` lines 20-71:** `EnsureBootstrapAdminUser()` runs at startup. If no admin user exists, it inserts a row with `username=admin`, `password_hash=DefaultInternalAuthPasswordHash`. No `force_change`, no `first_login` flag, no expiry is set. **`coordinator/services/auth_bootstrap_test.go` line 114** confirms the plaintext: ```go u, err := svc.Authenticate(ctx, "admin", "sipcapture") ``` **`passwordhash/password.go` lines 36-45:** Legacy SHA-256 hex hashes are accepted via `legacySHA256HexEqual`, so the default credential is functional on any deployment. ### PoC ```bash # Authenticate with default credentials — works on any fresh Homer deployment curl -s -X POST http:///api/v3/auth \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"sipcapture"}' # Response: {"token":"","data":{"userGroup":"ad
- Products
- github.com/sipcapture/homer-app
- Affected versions
- Not specified
- Fixed versions
- 0.0.0-20260625091610-b2e942031ff8
- CVEs
- CVE-2026-62252
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 08:46 UTC · Revision 1
Source evidence
Homer: Hardcoded Default Admin Password 'sipcapture' With No Forced Change on First Login
core-osv · Original sourcePublished 7 Oct 2026, 16:12 UTC
### Summary On every fresh Homer deployment using internal authentication, the bootstrap process automatically creates an `admin` account with the password `sipcapture` (stored as a legacy SHA-256 hex hash). There is no first-login forced-change mechanism. Any attacker who reaches the login endpoint immediately gains full administrative access. ### Details **`config/config.go` lines 858-861:** ```go // DefaultInternalAuthPasswordHash is the SHA-256 hex digest of the default // bootstrap password (cleartext: sipcapture). const DefaultInternalAuthPasswordHash = "883ffc1f37fd0fe542b0fb9740035c4383e7d976c411161d24e62edace280f90" ``` **`coordinator/services/auth_bootstrap.go` lines 20-71:** `EnsureBootstrapAdminUser()` runs at startup. If no admin user exists, it inserts a row with `username=admin`, `password_hash=DefaultInternalAuthPasswordHash`. No `force_change`, no `first_login` flag, no expiry is set. **`coordinator/services/auth_bootstrap_test.go` line 114** confirms the plaintext: ```go u, err := svc.Authenticate(ctx, "admin", "sipcapture") ``` **`passwordhash/password.go` lines 36-45:** Legacy SHA-256 hex hashes are accepted via `legacySHA256HexEqual`, so the default credential is functional on any deployment. ### PoC ```bash # Authenticate with default credentials — works on any fresh Homer deployment curl -s -X POST http:///api/v3/auth \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"sipcapture"}' # Response: {"token":"","data":{"userGroup":"ad
osv:GHSA-6xp5-7rcx-xfgx
github.com/sipcapture/homer-app
Fixed versions: 0.0.0-20260625091610-b2e942031ff8
Complete source record
{
"id": "9ca3eb202a8e18a9ab89606fa746b603dc713fb11fffb424b6f50a6cb86ab46c",
"url": "https://osv.dev/vulnerability/GHSA-6xp5-7rcx-xfgx",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Homer: Hardcoded Default Admin Password 'sipcapture' With No Forced Change on First Login",
"summary": "### Summary On every fresh Homer deployment using internal authentication, the bootstrap process automatically creates an `admin` account with the password `sipcapture` (stored as a legacy SHA-256 hex hash). There is no first-login forced-change mechanism. Any attacker who reaches the login endpoint immediately gains full administrative access. ### Details **`config/config.go` lines 858-861:** ```go // DefaultInternalAuthPasswordHash is the SHA-256 hex digest of the default // bootstrap password (cleartext: sipcapture). const DefaultInternalAuthPasswordHash = \"883ffc1f37fd0fe542b0fb9740035c4383e7d976c411161d24e62edace280f90\" ``` **`coordinator/services/auth_bootstrap.go` lines 20-71:** `EnsureBootstrapAdminUser()` runs at startup. If no admin user exists, it inserts a row with `username=admin`, `password_hash=DefaultInternalAuthPasswordHash`. No `force_change`, no `first_login` flag, no expiry is set. **`coordinator/services/auth_bootstrap_test.go` line 114** confirms the plaintext: ```go u, err := svc.Authenticate(ctx, \"admin\", \"sipcapture\") ``` **`passwordhash/password.go` lines 36-45:** Legacy SHA-256 hex hashes are accepted via `legacySHA256HexEqual`, so the default credential is functional on any deployment. ### PoC ```bash # Authenticate with default credentials — works on any fresh Homer deployment curl -s -X POST http:///api/v3/auth \\ -H 'Content-Type: application/json' \\ -d '{\"username\":\"admin\",\"password\":\"sipcapture\"}' # Response: {\"token\":\"\",\"data\":{\"userGroup\":\"ad",
"evidence": "osv:GHSA-6xp5-7rcx-xfgx",
"products": [
{
"name": {
"value": "github.com/sipcapture/homer-app",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "0.0.0-20260625091610-b2e942031ff8",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "critical",
"structured": {
"id": "GHSA-6xp5-7rcx-xfgx",
"aliases": [
"CVE-2026-62252",
"GHSA-6xp5-7rcx-xfgx",
"GO-2026-6671"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "0.0.0-20260625091610-b2e942031ff8"
}
]
}
],
"package": {
"name": "github.com/sipcapture/homer-app",
"purl": "pkg:golang/github.com/sipcapture/homer-app",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-6xp5-7rcx-xfgx/GHSA-6xp5-7rcx-xfgx.json"
}
}
],
"modified": "2026-10-20T00:55:38.909531918Z",
"provider": "osv",
"references": [
"https://github.com/sipcapture/homer/security/advisories/GHSA-6xp5-7rcx-xfgx",
"https://github.com/sipcapture/homer/pull/838",
"https://github.com/sipcapture/homer/commit/b2e942031ff8cd7435a244ebef306ee97d16b809",
"https://github.com/sipcapture/homer",
"https://github.com/sipcapture/homer/releases/tag/11.0.283"
],
"provider_metadata": {
"cwe_ids": [
"CWE-798"
],
"severity": "CRITICAL",
"github_reviewed": true,
"nvd_published_at": null,
"github_reviewed_at": "2026-10-07T16:12:02Z"
}
},
"related_cves": [
{
"value": "CVE-2026-62252",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 376880,
"published_at": "2026-10-07T16:12:02+00:00"
}