T03 · Remote Payload Retrieval and Execution
- Location
references/stdlib-guide.md:125- Finding
Mutable Remote PlantUML Includes Permit Unreviewed Payload Retrieval
- Content
View full analysis
Vulnerability Details
File Location:
references/stdlib-guide.md:125-130,references/stdlib-guide.md:154-157, andreferences/stdlib-guide.md:170-174
Vulnerability Type: Remote PlantUML payload retrieval and supply-chain exposure
Risk Level: MediumThe 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.pumlAzure 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.pumlDevicons 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.pumlTechnical Analysis
PlantUML processes remote
!includecontent as part of the diagram source. Consequently, the effective input interpreted during rendering is not limited to the reviewed Skill package. Themasterand 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
View remediation
Remediation Suggestions
- Replace remote examples with PlantUML's bundled local standard library wherever equivalent icons are available.
- Vendor required icon libraries into a reviewed local directory and use local
!includepaths during rendering. - If remote retrieval is unavoidable, pin every dependency to a specific reviewed commit hash rather than
masteror a mutable release branch. - Download dependencies in a separate controlled acquisition step, verify an approved SHA-256 digest, and render only the verified local copy.
- Run PlantUML with a restrictive security profile that disables URL access and unnecessary local-file access by default.
- Block renderer network egress in sensitive or offline environments; allow it only through an explicit, audited opt-in workflow.
- Update the examples so the secure local workflow is the default and move URL-based includes into a clearly marked advanced section.
- Document the tested PlantUML version and keep the local JAR updated to address parser and preprocessing vulnerabilities.
