T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/gate.py:155- Finding
Predictable user identifiers are accepted as authentication credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is local and aligned with contact lookup, but it should be reviewed because it stores and searches personal contact data while its access controls, quotas, blocklist controls, and audit claims are weaker than documented.
Use this only in a trusted single-user or tightly controlled local environment. Treat its registration, quota, blocklist, and audit features as workflow reminders rather than strong security controls, and do not enable L3 private data unless you have a clear lawful basis plus separate protections such as filesystem permissions, encryption, and backups. Do not publish or share data/, registry/, or audit/ outputs, and pin dependencies before production use.
scripts/gate.py:155Predictable user identifiers are accepted as authentication credentials
scripts/gate.py:235Unlimited self-registration bypasses per-user anti-harvesting quotas
scripts/gate.py:319Blocklist administration is exposed without authentication or authorization
scripts/gate.py:59Sensitive registration and contact records are stored in plaintext without enforced permissions
scripts/gate.py:103Unkeyed local audit hash chain can be rewritten and forged
scripts/query.py:202Negative query limits bypass the documented per-request result cap
scripts/build_index.py:501Third-party dependency installation is not version- or hash-pinned
This skill is positioned as a compliance-first contact lookup system with strong safeguards, yet the finding indicates those controls are not actually implemented while the system can still ingest and index sensitive attendee/contact data, including optional L3 private contacts. That mismatch is dangerous because users and reviewers may rely on nonexistent protections, leading to unauthorized access, privacy violations, bulk outreach misuse, and storage of personal data without the promised gating or auditability.
The instruction '品牌署名统一用「注册老炮」' is a natural-language policy constraint that forces a specific naming/locale choice. The file does not present this as optional, user-selectable, or justified as a region-specific compliance requirement, so it fits the language/locale policy-violation category.
The skill advertises local data handling, registration, auditing, and index-building workflows, but it does not declare any explicit tool scope or permissions despite requiring environment access plus file read/write behavior. In an agent environment, undeclared capabilities weaken least-privilege controls and make sensitive operations on contact databases, registries, and audit files harder to constrain or review.
The script is explicitly designed to ingest L3 private customer and supplier records containing phone numbers and WhatsApp details, then store them in a local searchable SQLite database when a flag is used. In the context of a skill marketed as an exhibition-directory compliance query tool, this materially expands data sensitivity and creates a straightforward path to aggregate and search private contact data beyond the expected public/restricted directory scope.
The --include-l3 flag enables indexing of private personal data into an unencrypted local SQLite database with only a brief help-string warning and no interactive confirmation, authorization check, or policy enforcement. That makes accidental or casual inclusion of sensitive contact information easy, after which the data becomes centrally searchable and more exposed to misuse or exfiltration.
The module docstring, usage examples, prompts, and help text are entirely in Chinese, which imposes a single language for user interaction. There is no indication that the skill is region-specific or that users can opt into another language, so this is a natural-language locale policy concern.
The whoami command prints a registered user's full name, company, title, and contact information for any supplied --user value, with no authentication or authorization check beyond knowing the user ID. In a skill handling expo contact data and complaint/audit workflows, this turns the gatekeeper into a directory of registrants' personal data, enabling internal privacy leakage, user enumeration, and misuse of contact details unrelated to the intended query-gating function.
The module docstring, CLI help text, and all user-facing descriptions are written exclusively in Chinese, which effectively fixes the interaction language for users of the skill. The file does not offer any user opt-in or alternative locale, and no region-specific compliance justification is stated.
This manifest includes the natural-language value "注册老炮" for the author field, but the file provides no indication that a Chinese locale is required or that multilingual metadata is intentionally supported. Under the policy rule for language/locale constraints, embedding a specific language context without documented opt-in or justification can be a policy concern.
该文件全文使用中文撰写,包括关键操作说明与风险分级说明,但没有说明这是面向中文用户的限定场景,也没有提供其他语言选项。按照语言/locale 政策,若技能内容强制单一语言而无用户选择或合理限定,可构成自然语言层面的策略问题。
The script's documentation, CLI help text, and runtime messages are written entirely in Chinese, which imposes a specific language on users. There is no indication of a language selection mechanism or a documented justification that this tool is intentionally region- or locale-specific.
The documentation presents the tool as a read-only index builder focused on not altering source files, which suggests a non-destructive operation profile. However, the schema executed later unconditionally drops and recreates contacts, contacts_fts, and meta, so the script performs destructive local state changes each time it rebuilds.
This markdown file contains user-facing natural-language content exclusively in Chinese, including conclusions, warnings, and usage guidance. Under the language/locale policy, forcing a specific language without user opt-in can be a policy violation unless the constraint is documented and justified.