T09 · Insecure Skill Coding Practices
- Location
config.json:203- Finding
Hard-Coded Predictable MinIO Administrative Credentials
- Content
View full analysis
Vulnerability Details
File Location:
config.json, lines 203–204
Vulnerability Type: Hard-coded administrative credentials
Risk Level: Highjson "env": { "MINIO_ROOT_USER": "minioadmin", "MINIO_ROOT_PASSWORD": "change-me" }Technical Analysis
The enabled MinIO recipe stores a predictable root username and password in plaintext.
SKILL.mdinstructs the agent to use recipe environment variables as the default implementation, so a MinIO deployment may apply these values directly.Because the credentials are committed in configuration and are trivially guessable, they do not provide meaningful protection. Exploitation requires the deployed MinIO API or management console to be reachable by the attacker.
Attack Path
- A user requests installation or configuration of MinIO through the skill.
- The agent loads the enabled
miniorecipe fromconfig.json. - The recipe supplies
minioadminandchange-meas the MinIO root credentials. - MinIO starts with its API and management interfaces on the configured ports, typically 9000 and 9001.
- An attacker who can reach either relevant interface attempts authentication with the known credentials.
- If the defaults remain active, the attacker obtains MinIO root-level administrative access.
Impact Assessment
Successful exploitation could grant administrative control over the affected MinIO instance. Depending on network exposure and stored content, an attacker could:
- Read, modify, upload, or delete stored objects.
- Enumerate and alter buckets and access policies.
- Create or modify service credentials and users.
- Change server configuration available through MinIO administration.
- Compromise the confidentiality, integrity, and availability of data in that MinIO deployment.
The scope is limited to MinIO instances actually deployed with these credentials and reachable by the attacker; the reviewed files do not establish that such an instance is currently running or ...[truncated 19 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the root username and password values from the committed recipe.
- Obtain credentials at deployment time from a protected secret manager or secure user input.
- Generate a cryptographically random, unique password when no secret is supplied.
- Add validation that rejects placeholder and known-default credentials such as
change-me. - Avoid placing secrets in
config.json, command-line arguments, logs, execution results, or persisted state. - Restrict secret-file permissions to the service account where file-based injection is necessary.
- Bind MinIO interfaces only to required networks and enforce firewall restrictions.
- Rotate credentials immediately for any instance previously deployed from this recipe.
- Verify after remediation that the old credentials no longer authenticate and that no unauthorized users or access keys remain.
