Reference detail

Apps with hard-coded usernames and passwords

Android apps shipping an actual credential pair — embedded in a URL as user:password@host, or as a pre-built HTTP Basic authorization header. Unlike an API key, this is a login.

Mapped findings are review signals. Interpret each app’s build, scan date and coverage before drawing a conclusion. Historical verification describes only its recorded scan time.

What this finding means

This category is narrower than a leaked API key and usually worse. It covers a username and password compiled into the app: a URL written as https://user:password@host/path, or an Authorization header built from a Base64-encoded credential pair.

We have recorded this in 89 apps. Base64 is an encoding, not encryption; recovering the password from the header is a single decode step.

Where an API key is typically scoped to one service and designed to be revocable, a credential pair is a login to an account. It often carries whatever that account can do, which is frequently more than the app needs.

Why a credential in a URL is worse than one in a header

A password placed in a URL escapes the request. URLs are written to server access logs, proxy logs and reverse-proxy traces; they appear in Referer headers sent to third parties, in browser and CLI history, and in crash and analytics payloads that capture the failing request.

That means the password is not only in the APK. It has probably been copied into systems you do not control and cannot clean, which changes remediation: rotation is mandatory rather than precautionary.

How to fix it

  • Rotate the credential first. It should be considered public from the moment it shipped, and no obfuscation changes that.
  • Replace shared credentials with per-device or per-user tokens obtained at runtime, so a compromise is revocable for one client rather than all of them.
  • If a backend genuinely requires Basic auth, terminate it on a server you control and have the app authenticate to that server instead.
  • Never carry credentials in the URL. If a credential must be sent, put it in a header over TLS.
  • Check who else uses the account before rotating: a shared service account is why these persist, and an uncoordinated rotation breaks something else.

How we detect it, and what we store

The URL-embedded form and the Basic authorization header form are matched structurally, and the Basic header is decoded only far enough to confirm it carries a credential pair rather than something else.

The value itself is never stored. What is recorded is the scheme prefix, a coarse length bucket and a non-reversible fingerprint — enough to deduplicate the finding and to recognise the same artifact across apps, and not enough to reconstruct the password from anything we publish.

Mapped checks & review guidance (2)

Hard-coded credentials in a URL

Remove the embedded username:password, rotate the credential, and authenticate to the endpoint with short-lived per-user tokens instead.

Browse this category

Hard-coded HTTP Basic credentials

Remove the hard-coded credential from the app package, rotate/revoke it immediately, and move the secret to a backend the app calls with per-user authentication.

Browse this category

Apps with mapped findings

Reset

89 matching apps · Counts below include only this page’s mapped finding types.

Movoto | Real Estate

com.movoto.movotoBuild 15.8.3 · 2026-10-03 21:56 UTC

1 matching category · 1 matching occurrence

C · 55/100Static analysis complete

Honor of Kings

com.levelinfinite.sgameGlobalBuild 12.1.1.4 · 2026-09-30 23:24 UTC

1 matching category · 1 matching occurrence

C · 65/100Static analysis complete

Indeed Job Search

com.indeed.android.jobsearchBuild 296.1.0 · 2026-09-30 21:59 UTC

1 matching category · 1 matching occurrence

Limited coverageRecorded findings available · overall grade withheld

Sezzle: Buy Now, Pay Later

com.sezzle.sezzlemobileBuild 5.3.11 · 2026-09-30 19:48 UTC

1 matching category · 1 matching occurrence

F · 15/100Static analysis complete

Verizon Protect

com.securityandprivacy.android.verizon.vmsBuild 9.1.2-1 · 2026-09-30 16:17 UTC

1 matching category · 2 matching occurrences

C · 55/100Static analysis complete

SpeedTop VPN: Fast & Secure

io.speedtop.appBuild 1.2.1 · 2026-09-30 11:59 UTC

1 matching category · 1 matching occurrence

C · 55/100Static analysis complete

SeaBank

id.co.bankbkemobile.digitalbankBuild 3.52.4 · 2026-09-30 03:21 UTC

1 matching category · 3 matching occurrences

D · 43/100Static analysis complete

Immersive Translate

com.immersivetranslate.transtifyBuild 2.6.11 · 2026-09-29 21:52 UTC

1 matching category · 1 matching occurrence

C · 72/100Static analysis complete

piZap: Design & Edit Photos

com.digitalpalette.pizapBuild 6.8.3 · 2026-09-29 17:18 UTC

1 matching category · 1 matching occurrence

B · 89/100Static analysis complete

JCPenney – Shopping & Deals

com.jcpBuild 11.51.0 · 2026-09-29 12:33 UTC

1 matching category · 1 matching occurrence

C · 72/100Static analysis complete

Joist Invoice & Estimate App

com.joistapp.android.joistBuild 3.86.0 · 2026-09-29 09:43 UTC

1 matching category · 1 matching occurrence

B · 76/100Static analysis complete

Smart Home Manager

com.att.shmBuild 2.2607.501 · 2026-09-15 16:07 UTC

1 matching category · 1 matching occurrence

C · 71/100Static analysis complete

Match Dating App: Chat & Meet

com.match.android.matchmobileBuild 26.15.00 · 2026-09-14 11:07 UTC

1 matching category · 1 matching occurrence

C · 66/100Static analysis complete

Stir: Single Parent Dating App

com.match.android.stirBuild 25.08.02 · 2026-09-11 05:59 UTC

1 matching category · 1 matching occurrence

C · 72/100Static analysis complete