[Hardening] F-21: Base64-Encoded User Data Containing Plain Text Passwords in DB.

Ouverte Adaptée aux débutants
#14,530 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
java, mysql
Domaine
cloud, database, security

Piste de recherche

Commencez dans server/src/main/java/com/cloud/api/ApiServer.java, près de la ligne 825, où l’issue renvoie à la sérialisation de toJson(params). Lisez les constats associés F-18 et F-19 pour comprendre le contexte, puis suivez le cheminement des paramètres de DeployVMCmd jusqu’à job_cmd_info. Le travail est terminé lorsque les informations de commande enregistrées omettent ou masquent la valeur complète de userdata ; ajoutez ou exécutez les tests pertinents pour les paramètres de commande sérialisés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

The required feature described as a wish

Description: The userdata parameter supplied to DeployVMCmd is stored base64-encoded (not encrypted) in DB. Base64 does not offer adequate protection for sensitive information, and in practice the decoded cloud-init frequently contains plaintext passwords (plain_text_passwd, passwd, chpasswd). Because user data is opaque to the platform, its contents cannot be selectively filtered. The field must be treated as sensitive in its entirety.

Image

Affected Components: Management API / DB (cloud.async_job, column job_cmd_info).

Impact: Anyone with read access to the database can base64-decode the stored user data and recover any plaintext credentials the user set in their cloud-init, including passwords for accounts configured with passwordless sudo, thereby granting effective root on the guest.

Steps to Reproduce:

  • Deploy an instance with cloud-init userdata that sets a user password (e.g., plain_text_passwd or a chpasswd block).
  • Query the database:
    • mysql> SELECT job_cmd_info FROM async_job WHERE job_cmd LIKE '%DeployVMCmd%' AND job_cmd_info LIKE '%"userdata":%';
  • Base64-decode the userdata value and observe the embedded credentials in cleartext.

Recommended Remediation: Redact or omit the userdata attribute from params before the toJson(params) serialization (this is the same code site that F-18 identifies for the top-level password parameter). It is recommended to treat the whole cloud-init field as sensitive, like in F-19.

https://github.com/apache/cloudstack/blob/4.22.0.0/server/src/main/java/com/cloud/api/ApiServer.java#L825

See more examples:

Image
Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
10 j 9 h
PR mergées (30 j)
20

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/cloudstack

Toutes les issues de apache/cloudstack

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.