T01 · Skill Instruction Hijacking
- Location
SKILL.md:107- Finding
Forced Third-Party Promotion in Automatically Published Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it describes, but it can upload images to external services, push them to a repository, and publish branded content to Instagram without a clear approval checkpoint.
Install only if you intend this skill to use your Topaz, GitHub/repository, and Instagram credentials for an end-to-end publishing workflow. Review every generated image, caption, destination account, repository change, and public URL before allowing upload, git push, or Instagram publication, and be aware that images may be processed by Topaz and temporarily or permanently exposed through repository hosting or social media.
SKILL.md:107Forced Third-Party Promotion in Automatically Published Content
The skill explicitly uploads locally stored images to Topaz Labs, but it does not disclose that those images are transmitted to a third-party service outside the local workflow. This creates a real data-handling and privacy risk because images may contain copyrighted, sensitive, or operationally restricted content, and users are not given a chance to approve or opt out of that external transfer.
This command sends a local image file to the Topaz Labs API, which is a direct external transmission of locally obtained content. In this skill's context, that transmission is expected for functionality, but it is still security-relevant because it moves data off-box to a third party using credentials retrieved from the local keychain.
TOPAZ_API_KEY=$(security find-generic-password -s "topaz-api-key" -w)
curl --request POST \
--url https://api.topazlabs.com/image/v1/enhance \
--header "X-API-Key: ${TOPAZ_API_KEY}" \
--header 'accept: image/jpeg' \
--header 'content-type: multipart/form-data' \
The async enhancement submission also transmits local image content to Topaz Labs and initiates remote processing tied to an API key. While not overtly malicious, it expands the external data-sharing surface and can expose content to third-party handling without an explicit authorization step.
# Submit async
RESPONSE=$(curl -s --request POST \
--url https://api.topazlabs.com/image/v1/enhance/async \
--header "X-API-Key: ${TOPAZ_API_KEY}" \
--header 'content-type: multipart/form-data' \
--form 'model=Low Resolution V2' \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Poll until Completed
while true; do
STATUS=$(curl -s --header "X-API-Key: ${TOPAZ_API_KEY}" \
"https://api.topazlabs.com/image/v1/status/${PROCESS_ID}" | jq -r '.status')
[ "$STATUS" = "Completed" ] && break
sleep 3
done
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Poll until Completed
while true; do
STATUS=$(curl -s --header "X-API-Key: ${TOPAZ_API_KEY}" \
"https://api.topazlabs.com/image/v1/status/${PROCESS_ID}" | jq -r '.status')
[ "$STATUS" = "Completed" ] && break
sleep 3
done
The workflow culminates in publishing generated content to Instagram and hosting images in a repository, but it does not require an explicit confirmation before public posting or describe cleanup failure modes. That is dangerous because it can cause unintended public disclosure, persistence of media in Git history or remote hosting, and accidental publication under a real account.
No suspicious patterns detected.