QNAP QSA-24-40 : QNAP AI Core - Jeton GitHub présent dans une image docker- CVE-2024-38647

CVE CVE-2024-38647 QNAP QSA-24-40 QNAP AI Core < 3.4.1

Historique (DD/MM/YYYY)

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 :

command.png

Le jeton peut ensuite être utilisé pour accéder à des dépôts de code :

command.png

Ce jeton appartien à l’utilisateur “hykuan” sur GitHub.

command.png

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 :

command.png

command.png

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

command.png

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