T03 · Remote Payload Retrieval and Execution
Warning
- Location
- references/stdlib-guide.md:125
- Finding
- Mutable Remote PlantUML Includes Permit Unreviewed Payload Retrieval## Vulnerability Details **File Location**: `references/stdlib-guide.md:125-130`, `references/stdlib-guide.md:154-157`, and `references/stdlib-guide.md:170-174` **Vulnerability Type**: Remote PlantUML payload retrieval and supply-chain exposure **Risk Level**: Medium The guide provides ready-to-render examples that retrieve PlantUML source from mutable external GitHub locations. AWS example (`references/stdlib-guide.md:125-130`): ```plantuml !define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v18.0/dist !include AWSPuml/AWSCommon.puml !include AWSPuml/Compute/EC2.puml !include AWSPuml/Database/RDS.puml !include AWSPuml/NetworkingContentDelivery/CloudFront.puml !include AWSPuml/NetworkingContentDelivery/ElasticLoadBalancing.puml ``` Azure example (`references/stdlib-guide.md:154-157`): ```plantuml !define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-9/dist !include AzurePuml/AzureCommon.puml !include AzurePuml/Compute/AzureAppService.puml !include AzurePuml/Databases/AzureSQLDatabase.puml ``` Devicons example (`references/stdlib-guide.md:170-174`): ```plantuml !define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons2 !include DEVICONS/python.puml !include DEVICONS/postgresql.puml !include DEVICONS/redis.puml !include DEVICONS/nginx.puml ``` ### Technical Analysis PlantUML processes remote `!include` content as part of the diagram source. Consequently, the effective input interpreted during rendering is not limited to the reviewed Skill package. The `master` and release-style references shown above are not pinned to verified commit hashes or protected by an integrity digest, so upstream content can change after the Skill has been audited. If an upstream repository, maintainer account, release branch, or content-delivery path is compromised, an attacker could replace an expected ico ...[truncated 2472 chars]
- Remediation
- ## Remediation Suggestions 1. Replace remote examples with PlantUML's bundled local standard library wherever equivalent icons are available. 2. Vendor required icon libraries into a reviewed local directory and use local `!include` paths during rendering. 3. If remote retrieval is unavoidable, pin every dependency to a specific reviewed commit hash rather than `master` or a mutable release branch. 4. Download dependencies in a separate controlled acquisition step, verify an approved SHA-256 digest, and render only the verified local copy. 5. Run PlantUML with a restrictive security profile that disables URL access and unnecessary local-file access by default. 6. Block renderer network egress in sensitive or offline environments; allow it only through an explicit, audited opt-in workflow. 7. Update the examples so the secure local workflow is the default and move URL-based includes into a clearly marked advanced section. 8. Document the tested PlantUML version and keep the local JAR updated to address parser and preprocessing vulnerabilities.
