Back to skill

Security audit

Pywayne Llm Chat Window

Security checks for vulnerabilities and agentic risk

Overview

This skill is a documentation-only helper for building a PyQt5 LLM chat window, and its external API use is expected for that purpose.

Before installing or using this skill, understand that chat prompts, conversation history, system messages, and the configured API key may be handled by whichever LLM endpoint you configure. Use an approved provider or local endpoint for sensitive work, and avoid entering secrets or regulated data unless that provider is acceptable for your use case.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
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 (5)

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill explicitly facilitates sending user chat content and system prompts to an external LLM API, but the documentation does not warn users that potentially sensitive inputs will leave the local machine and be processed by a third party. In a GUI chat tool, users may assume a desktop app is local-only, so omission of a privacy/data-sharing notice increases the risk of inadvertent disclosure.

External Transmission

Medium
Category
Data Exfiltration
Content
# Basic usage - quick launch
ChatWindow.launch(
    base_url="https://api.deepseek.com/v1",
    api_key="your_api_key",
    model="deepseek-chat"
)
Confidence
89% confidence
Finding
The example configures a third-party HTTPS endpoint for model inference, which means user-entered chat content and any system prompts will be transmitted off-host. In the context of a chat GUI, this is expected functionality, but it still creates a real data-exposure risk if users are not clearly informed or if sensitive content is entered.

External Transmission

Medium
Category
Data Exfiltration
Content
from pywayne.llm.chat_window import ChatWindow, ChatConfig

config = ChatConfig(
    base_url="https://api.deepseek.com/v1",
    api_key="your_api_key",
    model="deepseek-chat",
    temperature=0.8,
Confidence
89% confidence
Finding
This configuration example again directs traffic to an external LLM API, creating a path for disclosure of prompts, responses, and conversation history to a remote provider. Although HTTPS reduces transport interception risk, it does not address the privacy and compliance implications of sharing data with the provider.

External Transmission

Medium
Category
Data Exfiltration
Content
```python
ChatWindow.launch(
    base_url="https://api.deepseek.com/v1",
    api_key="your_api_key",
    model="deepseek-coder",
    system_messages=[
Confidence
89% confidence
Finding
The quick-launch example with system messages sends not only user content but also embedded system instructions to an external provider, which may include internal guidance or proprietary workflow context. In this skill's context, remote inference is normal, but the combination of hidden context and user prompts increases the chance of unintended disclosure if not clearly disclosed.

Natural-Language Policy Violations

Low
Confidence
96% confidence
Finding
The markdown states the default `system_prompt` is `你是一个严谨的助手`, which imposes a specific language/locale convention in the skill documentation. The policy allows this only when users are given a language choice or when the locale restriction is clearly justified, neither of which is present here.

Static analysis

No suspicious patterns detected.