Sabato scorso, 18 maggio, Jerry Gamblin di Kenna Security 1000 delle immagini più popolari su Docker Hub per la password utilizzata per l'utente root. In 19% dei casi è risultata vuota.

Contesto su Alpine
La motivazione per questo mini-studio è stata riportata nel Talos Vulnerability Report pubblicato all'inizio di questo mese (), nel quale gli autori — grazie alla scoperta di Peter Adkins di Cisco Umbrella — hanno comunicato che le immagini Docker con il popolare sistema operativo per container, Alpine, non hanno password per root:
«Le versioni ufficiali delle immagini Docker di Alpine Linux (a partire da v3.3) contengono una password NULL per l'utente root. Questa vulnerabilità è emersa da un regressione introdotta a dicembre 2015. In sostanza, i sistemi implementati con versioni vulnerabili di Alpine Linux in container e che utilizzano Linux PAM o un altro meccanismo che sfrutta il file di sistema shadow come database per l'autenticazione, possono accettare una password nulla (NULL) per l'utente root».
Le versioni di Docker immagini con Alpine identificate come problematiche erano dalla 3.3 alla 3.9 inclusa, oltre all'ultima release edge.
Gli autori fornivano la seguente raccomandazione per gli utenti colpiti dal problema:
«L'account root deve essere disattivato esplicitamente nelle immagini Docker costruite su versioni problematiche di Alpine. La potenziale sfruttabilità della vulnerabilità dipende dall'ambiente, poiché il suo successo richiede un servizio o un'applicazione esposta all'esterno che utilizzi Linux PAM o un meccanismo simile».
Il problema è stato in Alpine versioni 3.6.5, 3.7.3, 3.8.4, 3.9.2 e edge (snapshot 20190228), e ai possessori di immagini vulnerabili è stato suggerito di commentare la riga con root in /etc/shadow o assicurarsi dell'assenza del pacchetto linux-pam.
Proseguendo con Docker Hub
Jerry Gamblin ha voluto curiosare su «quanto possa essere diffusa la pratica dell'uso di password null nei container». A questo scopo ha scritto un piccolo , il cui scopo è piuttosto semplice:
- tramite una richiesta curl all'API di Docker Hub viene richiesto un elenco delle immagini Docker pubblicate lì;
- viene poi ordinato tramite jq in base al campo
popularity, e dai risultati ottenuti rimane la prima mille; - per ognuna di esse viene eseguito
docker pull; - per ogni immagine ottenuta da Docker Hub viene eseguito
docker runleggendo la prima riga del file/etc/shadow; - se il valore della riga risulta essere
root:::0:::::, il nome dell'immagine viene salvato in un file separato.
Cosa è emerso? In sono state trovate 194 righe con i nomi delle immagini Docker popolari con sistemi Linux, in cui l'utente root non ha una password impostata:
«Tra i nomi più noti nella lista ci sono govuk/governmentpaas, hashicorp, microsoft, monsanto e mesosphere. E kylemanna/openvpn è il contenitore più popolare della lista, con oltre 10 milioni di pull».
Vale la pena ricordare che questo fenomeno di per sé non implica una vulnerabilità diretta nella sicurezza dei sistemi che li utilizzano: tutto dipende da come vengono applicati. (cfr. il commento sul caso di Alpine sopra). Tuttavia, «la morale di questa storia» l'abbiamo già vista molte volte: la semplicità apparente spesso ha anche un rovescio, di cui è sempre necessario essere consapevoli e di cui considerare le conseguenze nei propri scenari di applicazione della tecnologia.
P.S.
Leggete anche nel nostro blog:
- «»;
- «»;
- «»;
- «».
Fonte: habr.com
