Versioned security assessment

Report ID: SA-EBDFE608

7/23/2026, 6:05:40 PM

azure-compute security assessment v5

Skill Security Certification Report

Audit History
Scanner version 3.0.0 Audit model: codex Latest published report
Skill name
azure-compute
Version
v0.0.0-placeholder
Maintainer
microsoft
Coverage
51 Files scanned · 3,381 Lines analyzed
Policy version
skillstore-security-audit-policy-v1

Highest confirmed finding severity

High

16 confirmed security findings require attention.

Installation context

Check the current Skill page

This page summarizes report evidence only. The Skill page provides the canonical install advisory.

Open current Skill page

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

Most static alerts are documentation syntax, official Microsoft endpoints, private or sample addresses, and SSH public-key references. Fourteen static findings remain confirmed because they contact a third party or change remote firewall, authentication, privilege, networking, or SELinux state. Semantic review also found shell injection exposure, fail-open ingress, unsafe host-key guidance, broad unconfirmed EMM changes, and plaintext password handling.

Report position

Latest published report

Latest refers to the report sequence, not to artifact currentness.

Audit attestation

Active attestation

A public attestation is available for this exact report.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

51 Files scanned · 3,381 Lines analyzed

19 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

    Commit and path bound

  2. Artifact

    Content and tree hashes bound

  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 33 evidence locations

Filesystem access

May read or write local files.

Observed in 34 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 41 evidence locations

Capability review items (3)
High
sudo privilege escalation
| sudo password prompt fails / user not in sudoers | Fix via Run Command or Serial Consol
The workflow recommends fixing sudo access through Run Command or Serial Console. This can grant administrative privileges and requires explicit authorization.
High
PowerShell invocation
--command-id RunPowerShellScript \
This Azure Run Command invokes PowerShell to enable the Remote Desktop firewall rule. It changes guest firewall policy and can increase network exposure if applied without explicit approval.
Medium
Shell command substitution
MY_IP=$(curl -s ifconfig.me)/32 # your current public IP, locked to /32
This example contacts ifconfig.me to derive the caller public IP for an NSG source. It reveals client metadata to a third-party service and adds an external dependency.

Risk findings

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

Confirmed security concerns (16)

RISK-001 High
System reconnaissance
--command-id RunPowerShellScript \
The paired remote command enables the Windows Remote Desktop firewall rule. This changes guest firewall policy and can increase administrative network exposure.
RISK-002 High
System reconnaissance
--command-id RunShellScript --scripts "iptables -I INPUT -p tcp --dport 22 -j ACCEPT"
The command inserts an iptables rule that permits inbound SSH. This changes guest firewall policy and may expose port 22 beyond the intended source network.
RISK-003 High
System reconnaissance
--command-id RunShellScript \
This Run Command begins a persistent firewalld change that opens the SSH service. The operation changes a VM security control and needs explicit approval.
RISK-004 High
System reconnaissance
--command-id RunShellScript --scripts "ufw status; ufw allow 22/tcp"
The command runs ufw allow for port 22 on the remote VM. It changes firewall policy and can broaden SSH exposure.
RISK-005 High
System reconnaissance
--command-id RunShellScript --scripts "setenforce 0"
The command sets SELinux to permissive mode on the remote VM. This weakens mandatory access controls and should only run after explicit approval with a restoration plan.
RISK-006 High
Unvalidated shell placeholders in GitHub delivery
The workflow accepts user-supplied repository, branch, and target path values, then inserts them into shell commands without validation or consistent quoting. Crafted values could execute unintended commands.
The same file collects user-controlled branch and path values and later places those placeholders in shell command positions. No allowlist validation or complete shell quoting is specified.
RISK-007 High
Fail-open management port exposure
The beginner flow permits an unrestricted source when public IP detection fails. This can expose SSH or RDP management ports to the entire internet.
The guidance explicitly allows a wildcard source after detection failure. A warning in the Plan Card does not prevent generation of the exposed configuration.
RISK-008 High
SSH host key removal lacks fingerprint verification
The SSH troubleshooting table recommends removing the old known_hosts entry after redeployment without first verifying the replacement host key. This can normalize a man-in-the-middle warning.
The line directly maps host-key verification failure to deleting the stored entry and provides no fingerprint validation step. The omission is security-relevant even in a legitimate redeployment.
RISK-009 High
Subscription-wide EMM changes lack a final confirmation gate
The EMM flow registers providers and submits a subscription-level deployment on the user behalf without an explicit final confirmation. Enrollment affects existing VMs and can enable paid services.
The workflow states that Copilot performs commands and API calls, then reaches provider registration and PUT or DELETE operations without a final approval instruction. The documented scope and pricing effects are subscription-wide.
RISK-010 High
Plaintext passwords in command arguments
Creator and troubleshooting guidance place VM administrator passwords directly in command arguments. These secrets can remain in shell history, transcripts, or process listings.
Each cited command passes a password through an az CLI argument. Command-line secrets can be retained in shell history and exposed through process inspection.
RISK-011 Medium
System reconnaissance
| "Your credentials did not work" | Reset password via Portal or CLI
The table recommends resetting a VM password through the portal or CLI. This changes credentials and can affect account access.
RISK-012 Medium
System reconnaissance
--command-id RunShellScript --scripts "passwd -u <username>"
The command remotely unlocks a Linux account with passwd. This changes authentication state and should require explicit user confirmation and target verification.
RISK-013 Medium
System reconnaissance
--command-id RunShellScript --scripts "ip link set eth0 up && dhclient eth0"
The remote command brings eth0 up and renews DHCP configuration. It mutates guest networking and could disrupt connectivity if the interface name or configuration is wrong.
RISK-014 Low
Network reconnaissance
MY_IP=$(curl -s ifconfig.me)/32 # your current public IP, locked to /32
The command discovers the caller public IP through ifconfig.me. The purpose is narrow NSG scoping, but the lookup still discloses client metadata to a third party.
RISK-015 Low
Network reconnaissance
- **NSG:** create new, allow SSH 22 (Linux) or RDP 3389 (Windows) from **the user's current public I
The workflow explicitly instructs using ifconfig.me or an equivalent service to discover the user's public IP. This discloses client network metadata to a third party.
RISK-016 Low
Network reconnaissance
| NSG | "Inbound rules: default (SSH/RDP from your IP) or paste a rule set?" | Restrict source to us
The workflow explicitly instructs curl to query ifconfig.me for the user's public IP. This sends client network metadata to a third-party service.

Remediation

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

  1. FIX-001
    High
    User-controlled GitHub delivery values enter shell commands without complete validation.
    Allowlist repository and branch formats, resolve target paths inside the checkout, and pass every value as a structured argument instead of shell interpolation.
  2. FIX-002
    High
    Public IP detection failure can produce an unrestricted SSH or RDP source.
    Fail closed when detection fails. Require the user to provide and confirm a trusted CIDR before generating or applying any management-port rule.
  3. FIX-003
    High
    Remote remediation and subscription-wide EMM operations can change security controls or incur costs.
    Show the exact target, commands, scope, and expected impact, then require explicit confirmation immediately before every state-changing operation.
  4. FIX-004
    High
    SSH recovery guidance removes a stored host key without verifying the replacement.
    Retrieve the expected host fingerprint through a trusted Azure channel and compare it before removing or replacing any known_hosts entry.
  5. FIX-005
    High
    Windows administrator passwords are placed directly in command-line arguments.
    Use a secure prompt, protected parameter file, Key Vault reference, or managed identity flow that keeps passwords out of history and process arguments.
  6. FIX-006
    Low
    Public IP discovery depends on a third-party ifconfig.me request.
    Ask before the lookup and offer a manual CIDR value or an Azure-owned discovery method that avoids disclosing metadata to a third party.

Expert evidence

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

Artifact subject

Marketplace commit
ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006
Content hash
3880c4bec643e54768b13d5dfc45a119ebc11277dfe643b97d71432698483d78
Tree hash
963ccd905d545835bb9bd578b3b394c7924d300515d3c233c79f9da3fcffbd4b
Skill path
skills/microsoft/azure-compute
Audit payload hash
fcba76708187325019da360dd5ce8d15

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: active