T09 · Insecure Skill Coding Practices
- Location
SKILL.md:193- Finding
Untrusted vision-model output can trigger downstream writes without explicit user approval
- Content
View full analysis
dict: cleaned = raw.removeprefix("```json").removeprefix("```").removesuffix("```").strip() return json.loads(cleaned) ``` The model controls the item type, confidence values, destination selection, fields, and whether clarification is required: ```python item_type = item.get("type", "task") destination = "calendar" if item_type == "event" else "task" confidences = item.get("confidences") or {} if "confidence" in item and isinstance(item["confidence"], (int, float)): confidence = float(item["confidence"]) elif confidences: confidence = min(confidences.values()) else: confidence = 0.0 type_confidence = float(item.get("type_confidence", confidence)) title = item.get("title") or "this item" clarifications: list[dict] = [] if type_confidence < type_threshold: clarifications.append({ "field": "type", "question": CLARIFICATION_QUESTIONS["type"].format(title=title), "reason": "low_type_confidence", }) mandatory = MANDATORY_FIELDS_BY_TYPE.get(item_type, MANDATORY_FIELDS_BY_TYPE["task"]) for field in mandatory: value = item.get(f ...[truncated 4088 chars]- Remediation
View remediation
