Security checks for vulnerabilities and agentic risk
Overview
This GDPR checker is mostly local, but it includes under-disclosed security-style commands that can log sensitive inputs and present placeholder actions as real protection.
Review this before installing if you might enter passwords, tokens, personal data, client names, system names, or real compliance evidence. Treat the generated GDPR documents as templates only, do not rely on the security scanning, hardening, encryption, or password features, and clear or avoid the local history log if you test it.
The _log function appends command arguments directly to history.log without redaction. This is especially unsafe for the encrypt and hash commands because users may reasonably supply passwords, tokens, personal information, or other confidential values.
Despite its name, cmd_encrypt performs no encryption and records the supplied value unchanged. cmd_hash prints a SHA-256 digest but also records the original unhashed input, defeating the confidentiality users may expect from a hashing utility.
The script creates the data directory using mkdir -p but does not establish a restrictive umask or explicitly set permissions on the directory and log file. Actual access therefore depends on the invoking environment's existing permissions and umask.
Attack Path
A user invokes a sensitive operation, such as:
bash
gdpr-checker hash 'sensitive-password'
or:
bash
gdpr-checker encrypt 'confidential-personal-data'
The command passes the or
...[truncated 985 chars]
Remediation
View remediation
Remediation Suggestions
Never log raw payloads supplied to hash, encrypt, password, authentication, or privacy-related commands.
Log only non-sensitive metadata, such as the command name, timestamp, success status, and a generated operation identifier.
If an argument must be represented, replace it with a fixed marker such as [REDACTED]; do not rely on partial masking for secrets.
Establish restrictive permissions before creating storage:
bash
Replace the misleading encrypt placeholder with authenticated encryption implemented through a vetted tool, or remove the command until encryption is genuinely supported.
Add log-retention limits and provide a secure mechanism to delete existing history.
Document that users must not pass secrets as command-line arguments because process listings and shell history can independently expose them. Prefer standard input or a protected file descriptor for sensitive inputs.
T09 · Insecure Skill Coding Practices
Warning
Location
scripts/script.sh:61
Finding
Password Generator Uses a Non-Cryptographic Pseudorandom Number Generator
Content
View full analysis
Vulnerability Details
File Location: scripts/script.sh, lines 61–66 Vulnerability Type: Weak randomness in credential generation Risk Level: Medium
Python's random module is based on the Mersenne Twister pseudorandom number generator. It is designed for simulation and statistical workloads, not for generating passwords or cryptographic secrets. Its output is deterministic from its internal state and does not provide the security guarantees expected of a credential generator.
The use of random.choices therefore violates the requirement that password generation rely on a cryptographically secure source of randomness. A password utility should use the operating system's cryptographic random source through Python's secrets module or random.SystemRandom.
Attack Path
A user invokes the password command and adopts the generated value as an account credential.
The password is produced by the non-cryptographic random generator.
If an attacker can infer or recover sufficient generator state or otherwise compromise its seed/state environment, the attacker can generate candidate outputs.
The attacker tests reconstructed candidates against the service where the password was used.
A successful prediction gives the attacker the permissions of the compromised account.
State recovery is not demonstrated by the audited project itself and requires additional attacker capability. Nevertheless, a password generator must not depend on a PRNG explicitly documented as unsuitable for security-sensitive use.
Impact Assessment
The issue affects credentials created by this command. It does not itself elevate local privileges, but a predictable cre
...[truncated 337 chars]
Remediation
View remediation
Remediation Suggestions
Replace random.choices with Python's cryptographically secure secrets module:
bash
Consider using secrets.token_urlsafe() when a URL-safe machine-generated secret is acceptable.
Increase the default length and allow users to request a stronger length while enforcing a secure minimum.
Avoid recording generated passwords or related sensitive values in logs.
Add automated tests verifying the intended length and character policy, and a code-quality rule prohibiting random for credentials, tokens, keys, or nonces.
The password generator uses Python's random module, which is not cryptographically secure and can produce predictable output under some conditions. Because this tool is branded as security-related, users may trust these generated passwords for real accounts or keys, making weak credential generation especially dangerous in context.
Content
No source excerpt is available for this finding.
Natural-Language Policy Violations
Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding
The description and body text present content in both Chinese and English, but the skill does not state that language selection is optional or user-configurable. This can violate a language/locale policy when users are forced into a specific language presentation without opt-in.
Content
No source excerpt is available for this finding.
Intent-Code Divergence
Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding
The script markets itself as a security scanning and hardening tool, but the implemented commands are largely placeholders or generic utilities and do not perform real scanning, auditing, encryption, or hardening. In a security context, this can mislead users into believing protective actions occurred when they did not, creating a false sense of security and potentially delaying real remediation.
Content
No source excerpt is available for this finding.
Missing User Warnings
Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding
The logging helper writes command arguments directly into a history file without warning, redaction, or consent. Users may pass secrets, internal hostnames, file paths, or personal data to commands such as check, encrypt, or report, causing unintended local disclosure and possible compliance issues.
Content
No source excerpt is available for this finding.
Natural-Language Policy Violations
Low
Category
Not specified by scanner
Confidence
97% confidence
Finding
The comment line uses Chinese text ("GDPR合规检查工具") in a skill that otherwise emits English output, with no indication that the language choice is optional or region-specific. This can violate language/locale policy expectations when skills force a particular language without user opt-in.
Content
No source excerpt is available for this finding.
Context-Inappropriate Capability
Low
Category
Not specified by scanner
Confidence
88% confidence
Finding
The script creates a persistent local data directory and logs command activity by default without any clear necessity stated to the user. Even though this is local rather than remote telemetry, it can expose sensitive operational details, especially if commands later include filenames, targets, or other confidential inputs on shared systems.