Docker Daemon Esposto

Docker Daemon Esposto

Un demone Docker che risponde sulla rete è root remoto.

Cos’è Docker Daemon Esposto?

L'API Docker è equivalente a root e non dispone di un'autenticazione propria. Un demone legato a una semplice porta TCP consente a chiunque possa raggiungerlo di avviare contenitori, montare il filesystem host e leggere la macchina. Non è coinvolta alcuna vulnerabilità. Analizzerai la porta 2375 non autenticata dall'esterno, elencherai i contenitori di produzione e eseguirai il bind mount della root host per leggere il relativo file di ambiente. Quindi rimuoverai il collegamento tcp://0.0.0.0:2375, richiederai i certificati client TLS e vedrai la stessa sonda rifiutata. L'esercizio copre anche il montaggio di /var/run/docker.sock in un contenitore.

Cosa imparerai in Docker Daemon Esposto

Docker Daemon Esposto — Fasi della formazione

  1. Lettura della pagina di stato pubblica

    Bob non è dentro a nulla. È sul proprio laptop, a leggere la pagina operativa pubblica di Palliston. Ha lo scopo di rassicurare i clienti che la piattaforma è funzionante e, nel farlo, indica i nodi di produzione, i loro IP pubblici e il motore Docker eseguito da ciascuno. Dai un'occhiata a cosa espone prima che Bob la sfrutti.

  2. La riga che dice troppo

    Basta una sola riga. L'IP pubblico di un nodo di produzione e il fatto che esegua Docker sono tutto ciò di cui Bob ha bisogno per tentare l'attacco più economico che esista.

  3. Bussa al daemon

    Al daemon Docker si può dire di ascoltare su una porta di rete invece che solo sul socket locale. Quando è così, e il TLS è disattivato, risponde a chiunque. Bob punta la propria CLI Docker verso la porta 2375 di quel nodo e le pone la domanda più innocua che esista: che versione sei. Se risponde, la partita è già finita.

  4. Leggi la flotta di produzione

    L'API Docker non è una cosa limitata. Elenca, avvia, ferma e costruisce container, e lo fa tutto come root. La prima mossa di Bob con essa è semplicemente guardare: cosa sta effettivamente eseguendo questo host.

  5. Monta l'host, prendi i segreti

    Bob non ha bisogno di irrompere nei container in esecuzione. Il daemon ne avvierà uno completamente nuovo per lui, e monterà qualsiasi cosa gli venga chiesto. Chiede l'intero filesystem root dell'host su /host, poi legge il file di ambiente di produzione direttamente attraverso il mount. Il container è suo. L'host è sotto di esso. Non c'è mai stato un muro tra i due.

  6. Cosa ha reso possibile tutto questo

    Un momento di riflessione sul meccanismo prima che inizi la risposta.

  7. Il daemon registra uno sconosciuto

    Palliston invia i log del proprio daemon Docker a un collector centrale. Non serve un prodotto di intrusion-detection per notare cosa è emerso: chiamate API al daemon su ops-node-01, provenienti da un IP che non appartiene a nessuno in Palliston.

  8. Conferma che la porta è aperta

    Prima di cambiare qualsiasi cosa, Alice riproduce ciò che descrivono i log. Se una richiesta di versione non autenticata dalla propria macchina ottiene risposta, il daemon è esposto esattamente come temeva Priya.

  9. Apri la configurazione del daemon

    Il comportamento del daemon è impostato in un unico file, /etc/docker/daemon.json. Qualunque cosa gli abbia detto di ascoltare sulla rete senza TLS è una riga qui dentro.

  10. Trova cosa ha aperto la porta

    Due impostazioni, una accanto all'altra, costituiscono l'intera esposizione. Una mette l'API sulla rete; l'altra le dice di non controllare chi sta chiamando.

Copertura dei framework di sicurezza

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-284 Improper Access Control

MITRE ATT&CK

  • T1610 Deploy Container
  • T1133 External Remote Services

CIS Controls

  • CIS 4 Secure Configuration of Enterprise Assets and Software
  • CIS 6 Access Control Management

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security
  • PR.AA Identity Management, Authentication, and Access Control