finetuning
11 findings (5 critical, 6 medium), mainly data exfiltration, unauthorized tool use, command injection. Most recent scan 2026-10-22.
Second scanner: NVIDIA SkillSpector
Independent static run, no language model, over the same files as the Cisco scan above. How the two scanners compare across the whole corpus: Two scanners, one corpus.
What this skill does
Fine-tune models on Microsoft Foundry using SFT (supervised), DPO (preference), or RFT (reinforcement with graders). Covers dataset preparation, training job submission, deployment, and evaluation. USE FOR: fine-tune, SFT, DPO, RFT, training data, grader, distillation, fine-tuned model, training job, large file upload, calibrate grader, deploy fine-tuned model, evaluate fine-tuned model. DO NOT USE FOR: general model deployment without fine-tuning (use deploy-model), agent creation (use agents), prompt optimization without training (use prompt-optimizer).
- Package
- 34 files, 184 KB
- SKILL.md
- 576 words, 8 sections
- Code
- Python (16)
- License
- MIT
SKILL.md covers: Fine-Tuning on Microsoft Foundry · When to Use · Workflows · References · Scripts · Rules · Quick Reference · Error Handling
Findings
CRITICAL Cross-file env var exfiltration: 11 files Data Exfiltrationbehavioral
Environment variable access with network calls in scripts/check_training.py, scripts/evaluate_model.py, scripts/submit_training.py, scripts/monitor_training.py, scripts/calibrate_grader.py, scripts/generate_distillation_data.py, scripts/score_dataset.py, scripts/cleanup.py, scripts/common.py, scripts/convert_dataset.py
CRITICAL Cross-file exfiltration chain: 11 files Data Exfiltrationbehavioral
Multi-file exfiltration chain detected: scripts/check_training.py, scripts/evaluate_model.py, scripts/submit_training.py, scripts/monitor_training.py, scripts/calibrate_grader.py, scripts/generate_distillation_data.py, scripts/score_dataset.py, scripts/cleanup.py, scripts/common.py, scripts/convert_dataset.py collect data → encode → scripts/submit_training.py, scripts/deploy_model.py, scripts/common.py transmit to network
CRITICAL Environment variable access with network calls detected Data Exfiltrationbehavioral
Script accesses environment variables and makes network calls in /Users/brianlevine/claude-projects/skill-scanner-test/skills/microsoft-azure-skills/skills/microsoft-foundry/finetuning/scripts/common.py
/Users/brianlevine/claude-projects/skill-scanner-test/skills/microsoft-azure-skills/skills/microsoft-foundry/finetuning/scripts/common.py
CRITICAL Environment variable access with network calls detected Data Exfiltrationbehavioral
Script accesses environment variables and makes network calls in /Users/brianlevine/claude-projects/skill-scanner-test/skills/microsoft-azure-skills/skills/microsoft-foundry/finetuning/scripts/submit_training.py
/Users/brianlevine/claude-projects/skill-scanner-test/skills/microsoft-azure-skills/skills/microsoft-foundry/finetuning/scripts/submit_training.py
CRITICAL Dangerous code execution functions that can execute arbitrary code Command Injectionstatic
Pattern detected: exec(
scripts/calibrate_grader.py:54
exec(compile(source, grader_path, "exec"), namespace)MEDIUM Undeclared network usage Unauthorized Tool Usestatic
Skill code uses network libraries but doesn't declare network requirement
SKILL.md
MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.put(
scripts/deploy_model.py:120
resp = requests.put(url, headers={MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.get(
scripts/deploy_model.py:141
resp = requests.get(url, headers={"Authorization": f"Bearer {token}"}, timeout=(10, 60))MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.delete(
scripts/deploy_model.py:167
resp = requests.delete(url, headers={"Authorization": f"Bearer {token}"}, timeout=(10, 60))MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.get(
scripts/deploy_model.py:178
resp = requests.get(url, headers={"Authorization": f"Bearer {token}"}, timeout=(10, 60))MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.post(
scripts/submit_training.py:84
resp = requests.post(url, headers={What is in the package
34 files, 184 KB. Show the list.
| File | Kind | Size |
|---|---|---|
SKILL.md | doc | 5.4 KB |
references/agentic-rft.md | doc | 3.2 KB |
references/dataset-formats.md | doc | 3.7 KB |
references/deployment.md | doc | 3.4 KB |
references/evaluation.md | doc | 5.8 KB |
references/grader-design.md | doc | 3.4 KB |
references/hyperparameters.md | doc | 3.2 KB |
references/large-file-uploads.md | doc | 927 B |
references/platform-gotchas.md | doc | 2.0 KB |
references/reward-hacking.md | doc | 2.9 KB |
references/training-curves.md | doc | 4.1 KB |
references/training-types.md | doc | 3.1 KB |
references/vision-fine-tuning.md | doc | 4.1 KB |
scripts/calibrate_grader.py | script | 9.3 KB |
scripts/check_training.py | script | 7.8 KB |
scripts/cleanup.py | script | 9.5 KB |
scripts/common.py | script | 7.6 KB |
scripts/convert_dataset.py | script | 11 KB |
scripts/deploy_model.py | script | 9.4 KB |
scripts/evaluate_model.py | script | 11 KB |
scripts/generate_distillation_data.py | script | 10 KB |
scripts/monitor_training.py | script | 5.7 KB |
scripts/score_dataset.py | script | 7.7 KB |
scripts/submit_training.py | script | 11 KB |
workflows/dataset-creation.md | doc | 3.1 KB |
workflows/diagnose-poor-results.md | doc | 2.3 KB |
workflows/full-pipeline.md | doc | 3.1 KB |
workflows/iterative-training.md | doc | 3.1 KB |
workflows/quickstart.md | doc | 4.5 KB |
scripts/validate/__init__.py | script | 305 B |
scripts/validate/data_stats.py | script | 6.2 KB |
scripts/validate/validate_dpo.py | script | 3.7 KB |
scripts/validate/validate_rft.py | script | 8.6 KB |
scripts/validate/validate_sft.py | script | 4.5 KB |
External hosts referenced
learn.microsoft.com management.azure.com your-function-app.azurewebsites.net ai.azure.com cognitiveservices.azure.com github.com
Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.
Environment variables referenced
AZURE_AI_PROJECT_ENDPOINT AZURE_OPENAI_API_KEY AZURE_OPENAI_ENDPOINT OPENAI_BASE_URL API_KEY AZURE_COGSERVICES_ACCOUNT AZURE_RESOURCE_GROUP AZURE_SUBSCRIPTION_ID AZ_CLI_PATH BASE_URL ENDPOINT KEY
Package contents recorded 2026-10-22 at commit f49ac319a7d3. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.
What we checked
- Static analyzer. Pattern rules over SKILL.md and bundled files: known-bad commands, exfiltration URLs, secrets, obfuscation.
- Bytecode analyzer.
- Pipeline analyzer.
- Correlation analyzer.
- Behavioral analyzer. Checks what the skill asks the agent to do against what its description claims it does.
- Trigger analyzer. Looks for instructions that fire on conditions the user did not ask for.
What we did not check
- Runtime behaviour. The skill was not executed; findings come from reading its files.
- Anything fetched at install or run time, including remote scripts, package dependencies, and URLs the skill tells the agent to open.
- Content the analyzers cannot read: images, binaries, and some non-English text.
- Known scanner bypass classes. See the methodology and limitations page.
Scan history
| Date | Verdict | Findings | Change | Analyzers | Raw |
|---|---|---|---|---|---|
| CRITICAL | 11 | = | static bytecode pipeline correlation behavioral trigger | JSON | |
| CRITICAL | 11 | first scan | static bytecode pipeline correlation behavioral trigger | JSON |
Sources
- Repository: https://github.com/microsoft/azure-skills
- Raw scan result: microsoft-azure-skills-skills-microsoft-foundry-finetuning-scan.json
- Badge for your README:
 - Request a re-scan