Back to skill

Security audit

Farmos Equipment

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly coherent for farm equipment management, but it documents unauthenticated plaintext endpoints that can read fleet data and change maintenance records.

Review this before installing in any real farm environment. It should be routed only to a trusted, segmented service, and write actions such as maintenance completion, hour logging, task creation, and critical escalation should require authentication, authorization, audit logging, and clear user confirmation except for explicitly approved emergency workflows.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:23
Finding
Unauthenticated State-Changing API Exposed over Plaintext HTTP## Vulnerability Details **File Location**: `SKILL.md`, lines 23–96 **Vulnerability Type**: Unauthenticated plaintext API access **Risk Level**: High ### Vulnerable Code ```markdown ## API Base http://100.102.77.110:8005 ## Integration Endpoints (No Auth Required) ### Record Maintenance Completion POST /api/integration/record-completion Content-Type: application/json Body: ```json { "schedule_id": 1, "equipment_id": 5, "performed_at": "2026-02-13T10:00:00Z", "performed_by": "user_name", "equipment_hours": 1250, "work_performed": "Changed engine oil and filter", "parts_used": [], "task_id": null } ``` Use this when someone reports maintenance was done. ``` The same document also defines another state-changing endpoint: ```markdown POST /api/equipment/{id}/hours — Log hour meter reading: {"hours": 1500, "recorded_at": "2026-02-13"} ``` ### Technical Analysis The skill directs the agent to communicate with a fixed private-network API using plaintext HTTP and explicitly states that the integration endpoints require no authentication. The exposed functionality includes both fleet-data retrieval and state-changing operations, such as recording maintenance completion and updating equipment hour-meter readings. Plaintext HTTP does not provide transport confidentiality, server authentication, or integrity protection. An attacker with access to a network segment through which the requests pass may inspect or alter requests and responses. Because the integration API does not require authentication, any party capable of reaching the service may also be able to invoke its documented endpoints directly without stealing credentials. The affected records are operationally significant. Maintenance schedules and hour readings are used to determine whether equipment is due or overdue for service. Forged completion records or altered hour readings could therefore cause maintenance requirements to appear satisfied when they are not. The hardcoded inter ...[truncated 2072 chars]
Remediation
## Remediation Suggestions 1. Replace plaintext HTTP with HTTPS and require proper certificate and hostname validation. 2. Require authentication for every endpoint, including read-only integration endpoints. Use short-lived service credentials or another centrally managed identity mechanism rather than embedding credentials in the skill file. 3. Apply authorization checks independently on the server. Restrict maintenance completion and meter updates to identities with explicit write permissions. 4. Separate read and write privileges so an identity used for routine status queries cannot alter maintenance records. 5. Require explicit user confirmation immediately before consequential state-changing requests, except where a separately approved emergency workflow applies. 6. Validate all submitted identifiers, timestamps, equipment-hour values, personnel fields, and text fields on the server. 7. Maintain append-only audit logs containing the authenticated actor, timestamp, source, previous value, new value, and request identifier. 8. Add replay resistance and idempotency controls to maintenance-completion requests. 9. Provide correction or review workflows for suspicious maintenance and hour-meter changes, and alert on implausible readings or duplicate completions. 10. Move the API base address into trusted deployment configuration instead of hardcoding it in the skill documentation. 11. Limit network access to the API through firewall rules, service segmentation, or an authenticated gateway. Network restrictions should supplement rather than replace authentication. 12. Review existing records for unauthorized or anomalous updates made while the endpoints were unauthenticated.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (6)

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The manifest and description frame this as a query-only skill, but the body expands into state-changing actions like recording maintenance completion, logging hour meter readings, and creating work orders. That mismatch can cause an orchestrator or reviewer to grant broader operational capability than expected, increasing the risk of unauthorized writes and unsafe automation in a no-auth environment.

Intent-Code Divergence

High
Confidence
97% confidence
Finding
The skill explicitly says it does not handle scheduling repairs or assigning work, but later instructs the agent to create maintenance tasks, work orders, and auto-escalations. This contradiction is dangerous because policy and runtime components may rely on the earlier limitation, while the later content silently expands authority into operational actions affecting people and equipment.

Unbounded Output

Medium
Category
Output Handling
Content
Returns: All equipment with id, name, make, model, type, status, current_hours.

**Use for:** Complete equipment listing. This endpoint returns ALL equipment without truncation.

Use this to look up equipment IDs for other queries.
Confidence
84% confidence
Finding
The instruction to always return complete, untruncated equipment listings encourages unbounded output from an unauthenticated integration endpoint. In practice this can amplify data exposure, overwhelm the model or caller, and make denial-of-service or accidental bulk exfiltration easier, especially when inventory size grows.

Unbounded Output

Medium
Category
Output Handling
Content
- estimated_duration_minutes
- parts_required list

**Use for:** Complete list of ALL due/overdue maintenance. Returns all items without truncation.

### Record Maintenance Completion
POST /api/integration/record-completion
Confidence
84% confidence
Finding
The directive to return all due and overdue maintenance items without truncation similarly creates unbounded output and bulk disclosure risk. Maintenance data can reveal operational readiness, critical equipment status, and parts requirements, which becomes more sensitive in a no-auth context and can be abused for reconnaissance or service disruption planning.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The cross-module instructions direct the skill to inspect tasks, observations, and weather systems beyond its stated equipment-query purpose. This broadens data access and action scope, creating unnecessary lateral reach and increasing the chance of privacy leakage, overcollection, or unintended operational decisions based on unrelated systems.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The instruction explicitly says to explain findings in "crew-friendly terms" and gives a prescriptive example of what wording to use, all in English, with no option for user language preference. Because the skill is written as conversational guidance for interacting with users, this can amount to a language policy constraint without opt-in.

Static analysis

No suspicious patterns detected.