CVE-2026-4251
Unprotected Credential Storage in CityData CityChat Android App
Publication date: 2026-03-16
Last updated on: 2026-04-29
Assigner: VulDB
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| citydata | citychat | to 0.12.6 (inc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-255 | |
| CWE-256 | The product stores a password in plaintext within resources such as memory or files. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
[{'type': 'paragraph', 'content': 'CVE-2026-4251 is a vulnerability in the CityData CityChat Android application (up to version 0.12.6) where sensitive credentials are stored unprotected in the file resources/assets/flutter_assets/assets/credentials.json.'}, {'type': 'paragraph', 'content': "This file contains a Google Cloud service account key embedded within the app's assets, which can be extracted by an attacker through reverse engineering."}, {'type': 'paragraph', 'content': 'The vulnerability corresponds to improper storage of credentials (CWE-256) and allows unauthorized access to Google Cloud Platform services, specifically read-only access to Dialogflow APIs.'}, {'type': 'paragraph', 'content': 'Exploitation requires local access to the device and is considered difficult due to high attack complexity, but a proof-of-concept exploit is publicly available.'}] [1, 2]
How can this vulnerability impact me? :
[{'type': 'paragraph', 'content': 'An attacker who gains local access to a device with the vulnerable CityChat app can extract the exposed Google Cloud service account key.'}, {'type': 'paragraph', 'content': 'With these credentials, the attacker can authenticate to Google Cloud Platform and obtain unauthorized read-only access to Dialogflow APIs.'}, {'type': 'paragraph', 'content': 'This access allows the attacker to retrieve sensitive chatbot configuration data, including agent details and all configured intents, exposing the internal conversational logic.'}, {'type': 'paragraph', 'content': "Such information disclosure can lead to misuse of the chatbot's knowledge base and compromise confidentiality."}] [1, 2]
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
I don't know
How can this vulnerability be detected on my network or system? Can you suggest some commands?
[{'type': 'paragraph', 'content': "This vulnerability can be detected by checking for the presence of the file resources/assets/flutter_assets/assets/credentials.json within the CityData CityChat Android application package (ai.citydata.citychat). Since the vulnerability involves unprotected storage of credentials in this file, inspecting the app's assets for this file is key."}, {'type': 'paragraph', 'content': 'On a device or system where the app is installed, you can extract the APK and search for the credentials.json file inside the assets directory.'}, {'type': 'list_item', 'content': 'Use the command to extract the APK: `adb pull /data/app/ai.citydata.citychat-*/base.apk`'}, {'type': 'list_item', 'content': 'Unzip the APK: `unzip base.apk -d extracted_apk`'}, {'type': 'list_item', 'content': 'Check for the credentials file: `find extracted_apk/resources/assets/flutter_assets/assets/ -name credentials.json`'}, {'type': 'paragraph', 'content': 'Additionally, attackers may use Google dorking techniques such as searching for the URL path `inurl:resources/assets/flutter_assets/assets/credentials.json` to identify exposed instances on the internet.'}] [1]
What immediate steps should I take to mitigate this vulnerability?
Immediate mitigation steps include removing or replacing the vulnerable component that contains the unprotected credentials.json file.
Since no official countermeasures or patches have been provided by the vendor, it is recommended to:
- Avoid using CityData CityChat versions up to 0.12.6 that contain the vulnerable credentials file.
- Replace the affected application or component with an alternative product that does not expose sensitive credentials.
- Restrict local access to devices running the vulnerable app to prevent exploitation.
Monitoring for unauthorized access to Google Cloud services and Dialogflow APIs using the exposed credentials is also advisable.