Skip to main content
  1. Lab-devsec/

Lab — Scan & Hardening: docker-bitcoin-books

·3 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Lab — Scan & Hardening: docker-bitcoin-books
#

Perché questo lab
#

Lab separato, non collegato al docker-dmz.md (quello resta network segmentation + WAF). Qui il target è un repo Docker reale e tuo: docker-bitcoin-books, parte del libro Bitcoin dalla teoria alla pratica.

Stessa logica di Burrito/Chatwoot nel percorso DevSecOps: infrastruttura reale invece di lab sintetici — "ho messo in sicurezza il repo del mio libro" batte "ho scansionato un progetto demo". In più questo repo tocca uno stack diverso da Burrito (Debian/Python/Bash invece di Node/TS), quindi copre superficie diversa nel portfolio.

Correlazione carriera: CARRIERA-DEVSECOPS.md elenca tra i progetti non negoziabili il "Crypto/Fintech Security Toolkit (differenziatore)" — audit su integrazioni exchange/wallet, "in Italia lo fanno in pochissimi". Questo lab è il seme concreto di quel progetto: non più un'idea vaga, un repo Bitcoin reale da mettere in sicurezza.


Cosa c'è nel repo (verificato)
#

ElementoDettaglio
DockerfileFROM debian:12-slim, installa build tools + curl/wget/git + openssl/gnupg + python3-pip/python3-base58
Bitcoin CoreVersione pinnata via ARG VERSION=26.0 + verifica firma GPG (BITCOIN_CORE_SIGNATURE)
USERNon specificato → gira come root
docker-compose.yml2 servizi: bitcoin-in-action (porte 18443/18444, 3 volumi) + explorer (btc-rpc-explorer, porta 3002, dipende dal nodo)
Retebridge custom mynetwork
Auth explorer→nodocookie-based (non password hardcoded — buono di default, da verificare)
DockerfileExplorerimmagine separata per btc-rpc-explorer

Backlog (obiettivi, non comandi — provo prima io)
#

1. Baseline: scan dell'immagine
#

Obiettivo: sapere cosa c'è di vulnerabile PRIMA di toccare niente. Trivy scansiona sia i pacchetti OS Debian sia le dipendenze Python. Trova tu il comando (stesso tool già nel syllabus, argomento 9/container security).

2. SCA sulle dipendenze Python
#

python3-base58 e le altre dipendenze pip: installate con versioni pinnate o latest implicito? Verifica se ci sono CVE note.

3. Secrets scan
#

TruffleHog su tutto il repo (non solo Dockerfile): bitcoin.conf, entrypoint.sh, docker-compose.yml. L'auth via cookie è il pattern giusto — verifica che non ci sia comunque un rpcuser/rpcpassword hardcoded dimenticato da qualche parte (capita spesso nei tutorial Bitcoin più vecchi).

4. Hardening Dockerfile
#

  • Nessun USER → root. Aggiungi un utente non privilegiato e verifica che il nodo Bitcoin regtest funzioni comunque (bitcoind non ha bisogno di root).
  • Verifica che entrypoint.sh controlli davvero la firma GPG prima di eseguire il binario scaricato (supply chain security, non solo scaricarla e ignorarla).
  • Pacchetti installati: build-essential, autoconf, libtool servono solo per compilare — se il binario è precompilato/verificato, questi pacchetti aumentano la superficie d'attacco dell'immagine finale senza motivo. Multi-stage build?

5. DAST sull'explorer (opzionale, stretch goal)
#

explorer è una vera web app esposta su :3002. ZAP baseline scan, stesso tool del syllabus argomento 6.

6. Output finale
#

  • Findings documentati (prima/dopo)
  • Dockerfile hardened committato
  • Se il lab regge: candidalo formalmente come base del "Crypto/Fintech Security Toolkit" in CARRIERA-DEVSECOPS.md — a quel punto si arricchisce con audit specifici su flussi Bitcoin, non solo hardening container

Note
#

  • Repo del libro: non rompere l'esperienza didattica per chi lo usa a scopo di studio (regtest, non mainnet — nessun fondo reale in gioco, quindi il rischio hardening è basso)
  • Se emergono pattern riusabili (es. script Trivy+TruffleHog generico), sono candidati per essere riapplicati anche a Burrito

Related