T03 · Remote Payload Retrieval and Execution
- Location
docx_engine.py:221- Finding
Automatic Execution of an Unverified Remote .NET Installer
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This DOCX-generation skill is useful but can automatically run remote .NET installer scripts and delete a user-level .NET directory without confirmation.
Install only if you are comfortable with the skill running local build commands and, when .NET is missing or broken, downloading and executing Microsoft-hosted installer scripts into your user profile. Prefer preinstalling .NET yourself and reviewing or disabling the automatic provisioning and ~/.dotnet cleanup paths before using it on important workstations, CI runners, or untrusted DOCX templates.
docx_engine.py:221Automatic Execution of an Unverified Remote .NET Installer
check/pipeline.py:60Unbounded Archive Extraction in the DOCX Validation Pipeline
docx_engine.py:1382Unbounded Archive Extraction During Mapping Application
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
Generating PNG assets via HTML/CSS browser rendering is not inherently malicious, but when undisclosed in a skill expected to perform deterministic DOCX work, it changes the trust and attack model substantially. Hidden rendering subsystems can process untrusted markup/templates and bring in complex dependencies that increase exploitation and supply-chain risk.
The skill executes remote installer scripts and other external system commands not narrowly required for transforming document content. In this context, that behavior is especially dangerous because a content-generation skill should not need to run internet-fetched code, making the attack surface disproportionate to its stated purpose.
When the runtime is deemed corrupted, the code deletes the user's entire ~/.dotnet directory automatically. This is destructive behavior that can remove unrelated SDKs or user-installed components, causing data loss and denial of service beyond the scope of the skill.
This path performs a destructive operation by removing ~/.dotnet without prior warning or approval. That can break other applications and SDK setups on the machine and is excessive for a document-generation skill.
Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.
print(" + Compiled")
print(">> Generating...")
run_env = os.environ.copy()
run_env.setdefault("DOTNET_ROLL_FORWARD", "LatestMajor")
proc = subprocess.run(
[
The skill advertises and invokes shell execution, file read/write, and environment inspection, but declares no explicit tool scope such as permissions or allowed-tools. In an agent setting, that creates an avoidable expansion of operational authority and makes it harder to constrain or review what the skill may execute.
The manifest describes the skill as focused on creating validated .docx files with formatting and compatibility, but this module is explicitly a document validation framework for OOXML compliance checking and exposes multiple detectors plus a validation pipeline. Validation may relate to generation quality, but the code here implements a broader standalone checking capability that is not reflected in the manifest description.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
return ("absent", None, None)
try:
proc = subprocess.run(
[str(binary), "--version"],
capture_output=True, text=True, timeout=10
)
The skill's declared purpose is document generation, but it silently includes runtime bootstrapping that downloads and installs .NET components. That mismatch increases risk because users may not expect system modification or network-retrieved executables from a document-generation tool.
This code downloads a remote PowerShell installer script and executes its returned content directly in memory. That creates a remote code execution and supply-chain risk: if the network path, upstream host, or downloaded content is compromised, arbitrary code runs on the user's machine with the user's privileges.
$execution = [scriptblock]::Create($installer.Content)
& $execution -Channel {channel} -InstallDir '{target_dir}'
"""
subprocess.run(
["powershell", "-Command", powershell_script],
capture_output=True, text=True, timeout=300
)
This fetches an installer script from the internet into a temp location as part of normal skill execution. While downloading alone is not code execution, in this workflow it feeds directly into later execution and expands the attack surface to network tampering, mirror compromise, or unintended system modification.
target_dir = Path.home() / ".dotnet"
installer_path = Path(tempfile.gettempdir()) / "dotnet-bootstrap.sh"
subprocess.run(
["curl", "-sSL", installer_url, "-o", str(installer_path)],
check=True, timeout=60
)
This executes the just-downloaded installer script from a temporary directory. Running network-fetched code without independent integrity verification is a direct code-execution risk and can lead to full compromise of the user environment.
check=True, timeout=60
)
installer_path.chmod(0o755)
subprocess.run(
[str(installer_path), "--channel", channel, "--install-dir", str(target_dir)],
check=True, timeout=300
)
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
binary = target_dir / "dotnet"
if binary.exists():
verify = subprocess.run([str(binary), "--version"], capture_output=True, text=True)
if verify.returncode == 0:
print(f" + Provisioned: {verify.stdout.strip()}")
return binary
The skill modifies the user's system by installing .NET automatically without an explicit confirmation gate. Even if intended as convenience, silent dependency installation violates least surprise and can be abused to introduce unwanted software or persistent environment changes.
No suspicious patterns detected.