Trust Assessment
postiz received a trust score of 51/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 11 findings: 3 critical, 4 high, 2 medium, and 2 low severity. Key findings include Suspicious import: requests, Hardcoded Credentials in Skill Code and Documentation, Hardcoded Credentials in Python Script.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The LLM Behavioral Safety layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 12, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings11
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Hardcoded Credentials in Skill Code and Documentation The skill's documentation and Python scripts contain hardcoded email and password credentials for the Postiz API. This is a severe security risk as it exposes sensitive authentication information directly within the skill package, making it vulnerable to unauthorized access if the skill is compromised or inspected. Remove hardcoded credentials. Implement a secure method for credential management, such as environment variables, a secrets management service, or a secure configuration file that is not part of the public repository. For demonstration purposes, use placeholder values and instruct users on how to configure their own credentials securely. | LLM | SKILL.md:39 | |
| CRITICAL | Hardcoded Credentials in Python Script The `scripts/post.py` file contains hardcoded email and password credentials for the Postiz API. This is a severe security risk as it exposes sensitive authentication information directly within the skill's executable code, making it vulnerable to unauthorized access if the skill is compromised or inspected. Remove hardcoded credentials. Implement a secure method for credential management, such as environment variables, a secrets management service, or a secure configuration file that is not part of the public repository. For demonstration purposes, use placeholder values and instruct users on how to configure their own credentials securely. | LLM | scripts/post.py:30 | |
| CRITICAL | Hardcoded Credentials in Python Script The `scripts/check_duplicates.py` file contains hardcoded email and password credentials for the Postiz API. This is a severe security risk as it exposes sensitive authentication information directly within the skill's executable code, making it vulnerable to unauthorized access if the skill is compromised or inspected. Remove hardcoded credentials. Implement a secure method for credential management, such as environment variables, a secrets management service, or a secure configuration file that is not part of the public repository. For demonstration purposes, use placeholder values and instruct users on how to configure their own credentials securely. | LLM | scripts/check_duplicates.py:20 | |
| HIGH | Insecure Storage of Session Cookies in /tmp The skill's documentation and Python scripts store session cookies in `/tmp/postiz-cookies.txt`. The `/tmp` directory is typically world-writable and not designed for secure storage of sensitive data. This makes the session cookies vulnerable to unauthorized access by other users or processes on the same system, potentially leading to session hijacking or data exfiltration. Store session cookies in a more secure, user-specific, and permission-restricted location (e.g., `~/.local/share/postiz/cookies.txt` or a similar path). Ensure appropriate file permissions are set to restrict access to the current user only. | LLM | SKILL.md:37 | |
| HIGH | Insecure Storage of Session Cookies in /tmp The `scripts/post.py` file stores session cookies in `/tmp/postiz-cookies.txt`. The `/tmp` directory is typically world-writable and not designed for secure storage of sensitive data. This makes the session cookies vulnerable to unauthorized access by other users or processes on the same system, potentially leading to session hijacking or data exfiltration. Store session cookies in a more secure, user-specific, and permission-restricted location (e.g., `~/.local/share/postiz/cookies.txt` or a similar path). Ensure appropriate file permissions are set to restrict access to the current user only. | LLM | scripts/post.py:28 | |
| HIGH | Insecure Storage of Session Cookies in /tmp The `scripts/check_duplicates.py` file stores session cookies in `/tmp/postiz-cookies.txt`. The `/tmp` directory is typically world-writable and not designed for secure storage of sensitive data. This makes the session cookies vulnerable to unauthorized access by other users or processes on the same system, potentially leading to session hijacking or data exfiltration. Store session cookies in a more secure, user-specific, and permission-restricted location (e.g., `~/.local/share/postiz/cookies.txt` or a similar path). Ensure appropriate file permissions are set to restrict access to the current user only. | LLM | scripts/check_duplicates.py:18 | |
| HIGH | Arbitrary File Read via Media Upload Function The `upload_media` function in `scripts/post.py` accepts a `file_path` argument directly from user input (`args.image`) and then opens and reads the content of that file. An attacker could exploit this by providing a path to a sensitive file on the system (e.g., `/etc/passwd`, `~/.ssh/id_rsa`). The content of such files could then be exfiltrated if the Postiz API endpoint reflects the file content in its response or if the attacker controls the `POSTIZ_URL`. Implement strict validation and sanitization of `file_path` to ensure it points only to allowed file types and locations. Consider using a file picker or a more controlled mechanism for file uploads rather than directly accepting arbitrary paths. If direct paths are necessary, restrict the base directory for uploads and validate that the path is within that allowed directory. | LLM | scripts/post.py:80 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/coolmanns/postiz-ext/scripts/check_duplicates.py:21 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/coolmanns/postiz-ext/scripts/post.py:32 | |
| LOW | Unpinned Dependency 'requests' The `scripts/post.py` file specifies 'requests' as a dependency without pinning it to a specific version. This can lead to non-deterministic builds and potentially introduce vulnerabilities if a new version of 'requests' contains a security flaw or breaking changes. While 'requests' is a widely used and generally secure library, it's best practice to pin dependencies. Pin the 'requests' dependency to a specific version (e.g., `requests==2.28.1`) to ensure consistent and secure environments. Regularly review and update pinned dependencies. | LLM | scripts/post.py:20 | |
| LOW | Unpinned Dependency 'requests' The `scripts/check_duplicates.py` file specifies 'requests' as a dependency without pinning it to a specific version. This can lead to non-deterministic builds and potentially introduce vulnerabilities if a new version of 'requests' contains a security flaw or breaking changes. While 'requests' is a widely used and generally secure library, it's best practice to pin dependencies. Pin the 'requests' dependency to a specific version (e.g., `requests==2.28.1`) to ensure consistent and secure environments. Regularly review and update pinned dependencies. | LLM | scripts/check_duplicates.py:10 |
Scan History
Embed Code
[](https://skillshield.io/report/10e020333e00ac2b)
Powered by SkillShield