T05 · Unauthorized Access and Privilege Escalation
- Location
main.py:660- Finding
Unauthenticated Access to Sensitive Clinic Data and Administrative Operations
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
VetClaw’s clinic automation purpose is coherent, but it handles sensitive customer, pet, medical, and business data through unauthenticated network APIs and under-disclosed third-party LLM sharing.
Review before installing or deploying. Run it only on a private localhost or behind real authentication, do not put real clinic/customer records into it until authorization, session ownership, XSS protection, retention controls, and privacy notices are fixed, and treat DeepSeek integration as third-party data sharing that needs explicit consent and minimization.
main.py:660Unauthenticated Access to Sensitive Clinic Data and Administrative Operations
templates/index.html:83DOM-Based Cross-Site Scripting Through Unsanitized Chat Content
${text}
`; bubble.innerHTML = html; div.appendChild(bubble); chat.appendChild(div); chat.scrollTop = chat.scrollHeight; } ``` ### Technical Analysis The `text` parameter is inserted into an HTML string and assigned to `bubble.innerHTML`. No HTML escaping or sanitization occurs. The parameter can contain: - Text entered directly by a user. - Content returned by the server. - Content produced by the externally hosted LLM. - Potentially persisted conversation content stored by `/api/chat`. Because `innerHTML` interprets markup rather than displaying it as text, an attacker can supply elements with event handlers, such as an image with an `onerr ...[truncated 1743 chars]main.py:133Potentially Sensitive Medical and Conversation Content Is Sent to DeepSeek Without Data Minimization or Accurate Disclosure
requirements.txt:1Non-Reproducible Dependency Resolution and Undeclared Runtime Dependencies
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
return None
try:
import httpx
resp = httpx.post("https://api.deepseek.com/v1/chat/completions",
headers={"Authorization": f"Bearer {DEEPSEEK_API_KEY}", "Content-Type": "application/json"},
json={"model": "deepseek-chat", "messages": [
{"role": "system", "content": system or "你是VetClaw宠物医院AI助手。"},
The README promotes automation of patient records, reminders, messaging, phone calls, payments, and database-backed operations but does not mention consent, retention, access control, audit logging, or privacy safeguards. In a veterinary clinic setting this still involves sensitive personal data, contact data, billing data, and potentially regulated medical/operational information, increasing the risk of unsafe deployment and privacy violations.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
cd business/skill-bundles/veterinary-clinic-bundle
pip install -r requirements.txt
copy .env.example .env # 可选:配置DeepSeek API Key
py main.py
# 访问 http://localhost:8000
There is a clear description-behavior mismatch. The declared purpose presents a comprehensive veterinary clinic AI automation suite with many operational scenarios, but the actual code chunk only contains a simple placeholder handler labeled for package management and membership-related triggers. It performs no scheduling, recordkeeping, follow-up, analytics, or other substantive automation. No suspicious undeclared access or permissions are present, but the primary purpose and implemented scope are materially narrower than described.
The description presents a broad veterinary clinic automation suite with many operational scenarios. The actual code chunk is a single lightweight handler for 'appointment reminder' and does not implement any substantive automation behavior beyond returning a placeholder message. There is no evidence of scheduling management, medical record handling, customer follow-up, or business analytics. This is a material description-versus-behavior mismatch in scope and implemented purpose, even though the reminder theme is adjacent to clinic operations.
The declared description presents a broad veterinary clinic automation suite focused on operational and clinical workflows. The actual code chunk is a narrowly scoped placeholder for new employee training, with no logic for scheduling, medical records, customer follow-up, or business analysis. Its embedded trigger words are training-related and not aligned with the declared scenarios. This is a material purpose mismatch rather than a minor implementation detail.
The skill states that customer and pet information is automatically stored in a database, but it does not warn about consent, minimization, retention, access control, or handling of medical-adjacent personal data. Because this bundle targets clinics, the context makes the issue more dangerous: records may contain identity, contact, and treatment-related details that require stronger privacy controls.
Automatic call handling and intent recognition involve collection and processing of voice, contact, and potentially health-related information, but the description lacks any consent, notice, retention, or recording safeguards. In a veterinary clinic context, this can lead to unlawful or unethical surveillance, privacy complaints, and disclosure of sensitive client/pet medical information.
User prompts, including medical questions and possibly personal/contact information, are sent to DeepSeek when the API key is configured, without any user warning or opt-in. This creates third-party data disclosure risk and may violate expectations or policy requirements for handling medical and customer data. The veterinary context increases sensitivity because the chat can include health information plus owner contact details.
The /api/conversation/{session_id} endpoint returns stored conversation history for any supplied session ID with no authentication or authorization checks. Because conversations may contain client identities, phone numbers, pet medical details, and operational data, an attacker who guesses or enumerates session IDs can read sensitive records. In a veterinary context handling medical and contact data, this is more dangerous than a generic chatbot log leak.
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.
The skill declares its trigger as '自动触发' (auto-trigger) while the usage section also says users should input a trigger word, creating ambiguity about when the skill activates. Overly broad or unspecified activation can cause the agent to invoke the skill on unrelated conversations, potentially exposing pet owner data, generating unintended outbound messages, or performing workflow actions without clear user intent.
The trigger phrases "设备" and "维护" are very broad, common terms that are likely to appear in ordinary veterinary operations conversations. This can cause accidental invocation of the skill in unrelated contexts, leading to unintended actions, workflow confusion, or exposure of maintenance-related data/functions without clear user intent.
The skill declares an automatic trigger without defining concrete activation phrases, scope, or guardrails, which can cause the agent to invoke the skill in unintended contexts. In a veterinary workflow, this could lead to unsolicited collection of customer satisfaction data, mishandling of patient/client context, or activation during unrelated conversations where personal information is present.
The skill declares an automatic trigger and says the AI will automatically identify intent and execute actions, but it does not define clear activation boundaries, confirmation requirements, or action limits. In a phone-handling context for a veterinary clinic, this ambiguity can cause unintended processing of caller data or unauthorized workflow execution, especially when conversations may contain sensitive personal and pet medical information.
The trigger phrases "手术" and especially "术前" are broad enough to match ordinary veterinary conversations, making accidental or inappropriate activation likely. In a medical workflow skill, unintended invocation can surface or execute checklist logic at the wrong time, creating workflow confusion, premature actions, or incorrect reliance on automation during clinical preparation.
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</style>
</head>
<body class="bg-gray-50 min-h-screen">
<!-- Header -->
<header class="bg-gradient-to-r from-green-600 to-teal-600 text-white shadow-lg">
<div class="max-w-4xl mx-auto px-4 py-4">
<div class="flex items-center justify-between">
The documented trigger phrases are extremely broad everyday terms such as symptom words and common service words, which can cause accidental invocation of medical, scheduling, or record-related workflows during normal conversation. In a veterinary clinic context, unintended activation can lead to incorrect triage, mistaken record actions, or disclosure of sensitive customer/pet information through the wrong workflow.
A default route of 'AI front desk' without clear boundaries means unmatched or ambiguous user input may be automatically processed by a powerful fallback handler. In this skill bundle, that handler appears able to perform or initiate customer-service, scheduling, and possibly health-related actions, so ambiguous routing can cause over-collection of data, misclassification, or execution of unintended workflows.
The skill advertises configuration that involves environment secrets, storage, notifications, and likely external integrations, but it does not declare any explicit tool scope or allowed-tools boundary. In an agent platform, undocumented access to env, file, network, or shell increases the chance of over-privileged execution, unintended data access, and harder review of what the skill is allowed to do.
Broad triggers like '预约', '挂号', and '看诊' are common phrases that may appear in routine conversation and can activate booking workflows unintentionally. In a clinic setting, false activations could create erroneous appointments, expose patient data in the wrong context, or cause workflow confusion during customer interactions.
Emergency activation terms such as '急', '危险', or symptom fragments are vague and likely to appear in many unrelated conversations, making unintended triage activation plausible. In a medical-adjacent workflow, false positives or misrouting can distract staff, delay genuine emergencies, or generate unsafe automated guidance at the wrong time.
The document claims the bundle only handles administrative and communication tasks, yet earlier sections explicitly describe lab-result interpretation and emergency triage. In a veterinary context, this contradiction can cause operators to underestimate clinical decision support behavior, leading to unsafe reliance on AI for health-related judgment and possible harm to animals.
This JSON knowledge base uses Chinese-only natural-language keys and advice throughout, with no indication that language selection is configurable or optional. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation.
The sample conversation includes directly identifiable personal data such as a real-name style identifier, phone number, and pet medical/profile details, and it explicitly states the data is being created and retained in a customer record. In documentation for an operational veterinary automation skill, this can normalize collecting and storing sensitive customer information without any notice about consent, minimization, masking, retention, or compliance obligations, increasing the risk of privacy violations or downstream misuse.
No suspicious patterns detected.