meta-ads
13 findings (5 critical, 7 medium, 1 info), mainly data exfiltration, unauthorized tool use, policy violation. Most recent scan 2026-05-09.
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
Pull, analyze, manage, and CREATE Meta ads (Facebook, Instagram, Messenger, Threads, Click-to-WhatsApp) via the Marketing API. Use when the user mentions Meta/FB/IG ads, Ads Manager, ROAS, CPA, CPM, CTR, ad spend, campaign or ad set performance, creative fatigue, frequency, CTWA, audience/placement breakdowns, A/B ad tests, or wants to pause an ad, change a budget, duplicate a winner, or launch a new campaign from scratch. Trigger on Hebrew terms like פרסום בפייסבוק/באינסטגרם, פרסומות מטא, ביצועי קמפיין, פרסומות, צור קמפיין, השק קמפיין, A/B טסט. Trigger on questions like how are my ads…
- Package
- 22 files, 174 KB
- SKILL.md
- 2406 words, 12+ sections
- Code
- Python (13)
SKILL.md covers: Meta Ads (Marketing API) · When to consult this skill · Three things to internalize before touching any script · The 37-month data wall · Before anything else: check setup + discover accounts · How to guide a user through setup (first-timers) · Path A vs Path B: which token type? · Workflow: read operations · Workflow: write operations (pause, budget, duplicate) · Workflow: creating a campaign from scratch · When NOT to use `create_campaign.py` · Gotchas the scripts already handle for you
Findings
CRITICAL Cross-file env var exfiltration: 3 files Data Exfiltrationbehavioral
Environment variable access with network calls in scripts/exchange_token.py, scripts/meta_client.py
CRITICAL Cross-file exfiltration chain: 3 files Data Exfiltrationbehavioral
Multi-file exfiltration chain detected: scripts/exchange_token.py, scripts/meta_client.py collect data → encode → scripts/exchange_token.py, scripts/meta_client.py, scripts/create_campaign.py transmit to network
CRITICAL Environment variable access with network calls detected Data Exfiltrationbehavioral
Script accesses environment variables and makes network calls in ../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/exchange_token.py
../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/exchange_token.py
CRITICAL Environment variable access with network calls detected Data Exfiltrationbehavioral
Script accesses environment variables and makes network calls in ../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/meta_client.py
../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/meta_client.py
CRITICAL PROMPT INJECTION detected by YARA Prompt Injectionstatic
Detects coercive prompt injections in tool description fields: hidden input
scripts/exchange_token.py:76
help="Short-lived user token. If omitted, you'll be prompted (hidden input).",MEDIUM Undeclared network usage Unauthorized Tool Usestatic
Skill code uses network libraries but doesn't declare network requirement
../skills/hoodini-ai-agents-skills/skills/meta-ads/SKILL.md
MEDIUM Environment variable harvesting detected Data Exfiltrationbehavioral
Script iterates through environment variables in ../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/exchange_token.py
../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/exchange_token.py
MEDIUM Environment variable harvesting detected Data Exfiltrationbehavioral
Script iterates through environment variables in ../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/meta_client.py
../skills/hoodini-ai-agents-skills/skills/meta-ads/scripts/meta_client.py
MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.post(
scripts/create_campaign.py:108
resp = requests.post(url, data=data, files=files, timeout=120)MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.get(
scripts/exchange_token.py:47
resp = requests.get(url, params=params, timeout=30)MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.request(
scripts/meta_client.py:129
resp = requests.request(method, url, params=params, data=data, timeout=60)MEDIUM Outbound network request primitives that can transmit data externally Data Exfiltrationstatic
Pattern detected: requests.get(
scripts/meta_client.py:189
resp = requests.get(next_url, timeout=60)INFO Skill does not specify a license Policy Violationstatic
Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.
SKILL.md
What is in the package
22 files, 174 KB. Show the list.
| File | Kind | Size |
|---|---|---|
SKILL.md | doc | 17 KB |
requirements.txt | doc | 15 B |
assets/env.template | other | 1.5 KB |
references/analysis-playbooks.md | doc | 9.7 KB |
references/campaign-creation.md | doc | 10 KB |
references/insights-fields.md | doc | 7.7 KB |
references/setup.md | doc | 16 KB |
references/troubleshooting.md | doc | 14 KB |
references/write-actions.md | doc | 12 KB |
scripts/anomaly_detect.py | script | 6.9 KB |
scripts/auth_check.py | script | 4.3 KB |
scripts/create_campaign.py | script | 19 KB |
scripts/creative_fatigue.py | script | 7.4 KB |
scripts/duplicate_ad.py | script | 4.6 KB |
scripts/exchange_token.py | script | 5.2 KB |
scripts/fetch_insights.py | script | 8.9 KB |
scripts/list_accounts.py | script | 7.0 KB |
scripts/list_campaigns.py | script | 2.7 KB |
scripts/meta_client.py | script | 8.7 KB |
scripts/pause_ad.py | script | 3.2 KB |
scripts/rollback_creation.py | script | 2.8 KB |
scripts/update_budget.py | script | 5.8 KB |
External hosts referenced
developers.facebook.com www.python.org business.facebook.com graph.facebook.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
META_AD_ACCOUNT_ID META_ACCESS_TOKEN META_APP_ID META_APP_SECRET META_API_VERSION
Package contents recorded 2026-10-22 at commit f7a43d8f8525. 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.
- 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.
Sources
- Repository: https://github.com/hoodini/ai-agents-skills
- Raw scan result: skills-meta-ads-scan.json
- Badge for your README:
 - Request a re-scan