T08 · Insecure Dependencies
- Location
api/quick-start.md:10- Finding
Unpinned Dynamic SDK Dependencies Permit Unreviewed Supply-Chain Changes
- Content
View full analysis
Vulnerability Details
File Location:
api/quick-start.md:10-19
Additional Locations:SKILL.md:62-68,README.md:72-78,README_zh.md:72-78
Vulnerability Type: Dynamic dependency version resolution
Risk Level: MediumVulnerable Code
gradle dependencies { // LLM Agent SDK implementation 'com.amap.lbs.client:amap-agent:1.1.41' // Navigation SDK (required) implementation 'com.amap.api:navi-3dmap:latest.integration' // Location SDK (required for real-time location updates) implementation 'com.amap.api:location:latest.integration' }Technical Analysis
The navigation and location SDK dependencies use the dynamic version selector
latest.integration. Unlike the explicitly pinned Agent SDK version, these selectors allow Gradle to resolve a different artifact over time without any source change or explicit review.This makes builds non-reproducible and weakens supply-chain controls. A newly published, compromised, or incompatible artifact can be incorporated automatically during a clean build or dependency refresh. The risk is elevated because these SDKs operate inside an Android application that may possess network and precise-location permissions.
Exploitation requires an attacker to control or compromise an artifact, repository, publishing account, or dependency-resolution source from which Gradle resolves these coordinates. The documentation does not itself retrieve a known malicious package, so this finding represents an unsafe dependency practice rather than evidence that the current SDK is malicious.
Attack Path
- A developer follows the integration guide and adds the dynamic dependencies.
- An attacker compromises an authorized package publication channel or repository, or otherwise causes a malicious newer artifact to be returned for one of the coordinates.
- A clean build or dependency refresh resolves
latest.integration...[truncated 799 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace each
latest.integrationselector with an exact, reviewed release version. - Enable Gradle dependency locking and commit the generated lock files.
- Enable Gradle dependency verification with trusted checksums or signatures.
- Restrict dependency resolution to explicitly approved official HTTPS repositories.
- Reject dynamic and changing dependency versions in CI.
- Review release notes and security changes before deliberately upgrading each SDK.
- Use a controlled internal artifact mirror if SDK packages are distributed outside a standard repository.
- Generate and monitor a software bill of materials for released applications.
- Replace each
