Back to skill

Security audit

PLC Job Scraper

Security checks for vulnerabilities and agentic risk

Overview

This job-scraper skill is straightforward, but it relies on a changeable third-party Apify actor and optional external exports without clear permission or privacy guidance.

Review the referenced Apify actor before running it, prefer a pinned or trusted actor version, use a dedicated least-privilege Apify token, and only enable Google Sheets, Telegram, or cron automation if you are comfortable with the data being sent and recurring runs consuming account resources.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:29
Finding

Execution of an Unpinned, Externally Mutable Apify Actor

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 29–34
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: Medium

Vulnerable Code

bash
# Use an Apify Actor for scraping
apify run caisik/plc-job-scraper

# Or use web_search + web_fetch

Technical Analysis

The documented primary workflow executes the third-party Apify Actor caisik/plc-job-scraper using a mutable name. It does not specify an immutable version, build identifier, source commit, or verified artifact digest.

The Actor's source is not included in the project, and no integrity verification is performed before execution. Therefore, the code ultimately executed by this command may change after this Skill has been reviewed. A compromise of the Actor publisher account, its build pipeline, or the referenced Actor could introduce arbitrary behavior without requiring any modification to this repository.

The project also provides no documented permission boundary for the Actor or guidance requiring a restricted Apify token. The security impact consequently depends on the permissions, secrets, input data, and platform resources available in the user's Apify execution context.

Attack Path

  1. An attacker compromises the referenced Actor, its publisher account, or its deployment pipeline, or causes a malicious build to be published under the same mutable Actor name.
  2. The repository remains unchanged, so users or agents continue to trust the previously reviewed Skill documentation.
  3. A user or agent follows the instructions and runs apify run caisik/plc-job-scraper.
  4. Apify resolves the mutable Actor reference to the attacker-controlled or modified build.
  5. The unreviewed Actor executes in the caller's Apify environment.
  6. The Actor may access the supplied job-search configuration and any resources, secrets, storage, or network capabilities granted to that execution context.

Impact Assessment

...[truncated 595 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the mutable Actor reference with an immutable, reviewed Actor version or build identifier.
  2. Publish and bundle the Actor source code, or link it to a specific source commit so reviewers can verify the exact implementation.
  3. Verify the integrity and provenance of the deployed artifact before execution, using a trusted digest or equivalent platform-supported mechanism.
  4. Document all required permissions, secrets, storage access, and network destinations.
  5. Use a dedicated, least-privilege Apify token with access restricted to only the resources required for this scraping task.
  6. Do not expose unrelated account secrets or sensitive environment variables to the Actor.
  7. Review and approve Actor updates before changing the pinned version.
  8. Validate and sanitize returned job records before exporting them or passing them to notification and spreadsheet integrations.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description is written entirely in Czech and does not indicate that other languages are supported or that the user can choose a preferred language. This can violate a language/locale policy when skills are expected to avoid imposing a specific language without explicit opt-in or documented regional scope.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

In this markdown file, the instructions explicitly tell the user to export results to Google Sheets, which sends the dataset outside the local environment. The description does not include any warning about sharing scraped data with an external service or any privacy/integrity implications of doing so.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file is primarily written in Czech, but line L77 includes Chinese text ('避开') inside user-facing guidance. This creates an avoidable language/locale inconsistency and does not offer the user any explicit language choice or justification for the mixed-language requirement.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.