Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
Lifecycle Timeline
8DescriptionCVE.org
A security vulnerability has been detected in liangliangyy DjangoBlog up to 2.1.0.0. Affected is an unknown function of the file owntracks/views.py of the component Amap API Call Handler. Such manipulation of the argument key leads to use of hard-coded cryptographic key . The attack may be launched remotely. The exploit has been disclosed publicly and may be used. The vendor was contacted early about this disclosure but did not respond in any way.
AnalysisAI
Hard-coded Amap API key exposure in DjangoBlog allows remote attackers to abuse geolocation services without authentication. DjangoBlog versions up to 2.1.0.0 embed a fixed cryptographic key in owntracks/views.py for Amap API calls, enabling unauthorized API usage with low confidentiality, integrity, and availability impact. Publicly available exploit code exists (POC=YES). EPSS data not provided. Not listed in CISA KEV. Vendor unresponsive to disclosure.
Technical ContextAI
DjangoBlog is a Django-based blogging platform. The owntracks component integrates with Amap (AutoNavi/Gaode Maps), a Chinese mapping service similar to Google Maps. The vulnerability (CWE-321: Use of Hard-coded Cryptographic Key) occurs when API credentials are embedded directly in source code rather than externalized to configuration files or environment variables. The hard-coded Amap API key in owntracks/views.py allows anyone with read access to the code repository or deployed application to extract the key and make unauthorized API calls against the developer's Amap account. This violates API key rotation best practices and creates persistent credential exposure. The CVSS vector (AV:N/AC:L/PR:N/UI:N) indicates the key is network-accessible without authentication, though actual exploitation requires the attacker to obtain the source code (commonly public in open-source projects). The low CIA impact (C:L/I:L/A:L) reflects API quota abuse, potential geolocation data exposure, and service disruption through rate-limit exhaustion rather than direct system compromise.
RemediationAI
No vendor-released patch identified at time of analysis due to maintainer non-responsiveness. Users must implement manual remediation: (1) Remove hard-coded API key from owntracks/views.py and replace with environment variable or secrets management (e.g., Django settings with os.getenv('AMAP_API_KEY')). (2) Regenerate the Amap API key through the Amap developer console to invalidate the exposed credential. (3) Implement API key rotation policy and restrict key permissions to minimum required scopes (IP whitelisting if Amap supports). (4) If owntracks/Amap functionality is unused, disable or remove the owntracks component entirely to eliminate attack surface (trade-off: loss of geolocation tracking features). (5) Monitor Amap API usage for anomalous activity indicating key abuse. For deployment teams unable to modify code, firewall rules blocking outbound connections to Amap API endpoints from the Django application can prevent key usage, though this breaks legitimate owntracks functionality. Reference the POC at https://github.com/3em0/cve_repo/blob/main/DjangoBlog/Vuln-5-Hardcoded-Amap-API-Key.md for technical details to validate your remediation.
More in Djangoblog
View allDjangoBlog up to version 2.1.0.0 contains an authentication bypass vulnerability in the blog/views.py Clean Endpoint tha
Missing authentication in DjangoBlog 2.1.0.0 and prior allows remote unauthenticated attackers to inject GPS tracking da
Cross-site Scripting (XSS) - Stored in GitHub repository liangliangyy/djangoblog prior to master. Rated medium severity
DjangoBlog up to version 2.1.0.0 contains hard-coded credentials in djangoblog/settings.py that can be exploited remotel
Liangliangyy DjangoBlog up to version 2.1.0.0 contains hard-coded credentials in the SECRET_KEY parameter within djangob
Command injection in DjangoBlog WeChat Bot Interface allows authenticated remote attackers to execute arbitrary system c
Improper authorization in liangliangyy DjangoBlog versions up to 2.1.0.0 allows authenticated remote attackers to manipu
DjangoBlog versions up to 2.1.0.0 use a hard-coded cryptographic key in djangoblog/settings.py when the SECRET_KEY argum
Same weakness CWE-321 – Use of Hard-coded Cryptographic Key
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-23714
GHSA-xf7j-p5gh-45hr