Versioned security assessment

Report ID: SA-CC35BFA8

7/6/2026, 6:25:14 PM

python-appservice-deploy security assessment v2

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
python-appservice-deploy
Version
v2
Maintainer
microsoft
Coverage
13 Files scanned Β· 985 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

High

1 confirmed security finding requires attention.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static findings are benign Azure CLI documentation examples, placeholder URLs, 0.0.0.0 bind addresses, relative documentation links, or .env exclusions. The executable retry wrappers contain a real command-injection risk because they accept full command strings and execute them dynamically. No prompt injection attempt was found in the reviewed files.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

13 Files scanned Β· 985 Lines analyzed

4 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 19 evidence locations

Filesystem access

May read or write local files.

Observed in 13 evidence locations

Env variables

May read values from the process environment.

Not recorded by this audit

External commands

May invoke commands or programs outside the Skill.

Observed in 71 evidence locations

Capability review items (3)
High
Ruby/shell backtick execution
$script = "$ShowCommand -o none 2>`$null; if (`$LASTEXITCODE -ne 0) { $CreateCommand -o none }"
The backtick pattern itself is a PowerShell escape, but the line builds a command string from ShowCommand and CreateCommand. That dynamic string is later executed and creates command injection risk.
High
PowerShell invocation
& powershell -NoProfile -Command $script 2>&1
Line 40 invokes powershell -Command on a dynamically constructed script. This can execute injected shell syntax if any caller passes unsanitized command text.
High
Shell command substitution
if err=$({ eval "$SHOW_CMD -o none 2>/dev/null" || eval "$CREATE_CMD -o none"; } 2>&1); then
Line 36 executes SHOW_CMD and CREATE_CMD through eval after accepting them as string parameters. If resource values are inserted without validation, shell metacharacters can execute arbitrary commands.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (1)

RISK-001 High
Command Injection Risk in Retry Wrappers
The retry helper scripts accept full command strings and execute them through eval or powershell -Command. The skill also permits user-specified resource values, so unsafe command construction could execute injected shell syntax.
The shell script uses eval on caller-provided command strings, and the PowerShell script passes an interpolated script to powershell -Command. The deployment flow accepts user-provided resource names, making injection plausible if callers interpolate values without strict validation.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    Retry wrappers execute full command strings dynamically.
    Replace eval and powershell -Command string execution with fixed functions or argument arrays. Validate app, resource group, plan, and region values before invoking Azure CLI.
  2. FIX-002
    Medium
    User-supplied Azure resource values can be used verbatim in commands.
    Document strict allowed characters for resource names and quote every argument. Reject values containing shell metacharacters before calling helper scripts.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable