QNAP QSA-24-40 : QNAP AI Core - Jeton GitHub présent dans une image docker- CVE-2024-38647
Historique (DD/MM/YYYY)
- 13/07/2024 : Rapport envoyé à l’équipe sécurité QNAP
- 26/06/2024 : Jeton supprimé dans QNAP AI Core 3.4.1, mais celui-ci reste valide
- 23/08/2024 : QNAP confirme la réception du rapport et assigne un numéro de CVE
- 23/11/2024 : Bulletin de sécurité publié sur le site de QNAP
Résumé
La construction de l’image docker de QuMagie utilise un jeton d’accès GitHub pour installer une bibliothèque Python.
Ce jeton peut être réutilisé par un attaquant pour accéder à divers dépôts de code accessibles par ce jeton.
Détails techniques
QuMagie nécessite une autre application « QNAP AI Core » ou « QuMagieCore ». La version 3.1.6 est la dernière disponible pour les versions 4.5.3~4.5.4 de QTS.
Cette application peut être téléchargée ici : https://download.qnap.com/QPKG/QuMagieCore_3.1.6_x86_64_202203080308.zip
Elle contient l’image qumagie-core-x86_2_0_7.tar.
Pour voir l’historique des commandes utilisées pour générer l’image, un attaquant peut lire un fichier spécifique dans l’archive :
Le jeton peut ensuite être utilisé pour accéder à des dépôts de code :
Ce jeton appartien à l’utilisateur “hykuan” sur GitHub.
Cet utilisateur peut accéder à un nombre important de dépôts pouvant être sensibles. Voici une liste de dépôts appartenant à l’organisation “QDevAI”:
[...]
QDevAI/Retail_label2csv
QDevAI/tflite_runtime_vision_arm32
QDevAI/TxT_training
QDevAI/TxT_translation
QDevAI/TxT_preprocessing
QDevAI/qumagie-classifier-tensorflow
QDevAI/KoiRetail_Datasets
QDevAI/retailbase-edge
[...]
QDevAI/rkapi
QDevAI/Qumagie_dataset_tools
QDevAI/ml-QuMgaieCore
QDevAI/ml-QuMagieCore
QDevAI/qumagie_data_viewer
QDevAI/qumagie_threshold_tool
[...]
Par exemple, le dépôt “QDevAI/retailbase-edge” contient une clé pour Google GCR liée au projet “retailbase-dev”. En cherchant des dépôts contenant des secrets intéressants, il est possible de trouver “retailbase” où des secrets importants sont présents :
Ces informations d’identification pour le compte « [email protected] » sont valides (au moins dans l’environnement de développement) :
Un code pour le deuxième facteur d’authentification à été envoyé pendant le test
Correction
Tous les secrets présents dans les dépôts et accessibles par l’utilisateur “hykuan” doivent être considérés comme compromis et changés.
Le jeton GitHub doit être supprimé
Aucun secret ne doit être présent dans le Dockerfile