Live
Software
Domotica
HACS
Aggiornato: Set 2026

Talos: HA Security
Scanner

Integrazione Home Assistant che mappa da dove arrivano i dati della casa e dove vanno a finire. Incrocia quello che Home Assistant dichiara dei propri dispositivi con quello che il resolver DNS li ha visti fare davvero, e tiene le due cose separate ovunque tranne che in un punto. Risponde anche alla domanda che nessuno fa: cosa smette di funzionare quando cade la linea, e quale marca si porta via il pezzo più grosso di casa.

v1.25.0
Versione attuale

Cos’è

Talos guarda una casa domotica e risponde a due domande che Home Assistant da solo non sa porsi: da dove arrivano i dati e dove vanno a finire, e cosa continua a funzionare quando cade la linea.

Legge quello che Home Assistant dichiara dei propri dispositivi, lo incrocia con quello che il resolver DNS li ha visti fare davvero, e riporta entrambi i lati con la prova attaccata a ogni riga.

Il motivo, in una frase

L’iot_class nel manifest di un’integrazione dice come Home Assistant parla con un dispositivo, e non dice niente su come quel dispositivo parla con Internet.

Una Shelly su local_push può avere Shelly Cloud attivo in parallelo, e Home Assistant non lo saprà mai: dal suo punto di vista quel dispositivo è locale, perché locale è il modo in cui ci parla lui. Sono due fatti diversi, e Talos li tiene separati ovunque, incrociandoli in un punto solo: la matrice.

Perché il nome Talos

Nella mitologia greca Talos è l’automa di bronzo che girava intorno a Creta tre volte al giorno, guardando chi si avvicinava alla costa e cosa portava con sé. Non attaccava la gente dell’isola e non tirava a indovinare: guardava, e riferiva.

È esattamente quello che fa questa integrazione, ed è anche il motivo per cui si rifiuta di chiamare vulnerabilità un’euristica sui metadati.

Il quadrante che conta

La matrice incrocia i due lati, e uno dei quattro quadranti è l’unica cosa rossa dell’interfaccia: dichiarato locale a Home Assistant, eppure beccato a telefonare fuori.

Non è un allarme generico, è una contraddizione fra due fonti indipendenti: da una parte quello che l’integrazione afferma di sé, dall’altra le query DNS che quel dispositivo ha fatto davvero. Le altre tre caselle sono coerenti e restano grigie.

Cosa c’è nel pannello

Vista Cosa risponde
Mappa delle connessioni Un grafo a forze, alla maniera di Obsidian, disegnato senza librerie: ogni dispositivo vicino al suo hub, ogni hub vicino alla sua integrazione. Solo dati dichiarati, quindi funziona anche senza AdGuard configurato
Matrice dichiarato/osservato Il quadrante rosso qui sopra
Autonomia offline Entità e integrazioni che reggono a linea caduta, raggruppate per marca, così il guasto di un singolo fornitore si può quantificare
Esposizione esterna Dispositivi visti uscire, con volume di query, marca, e se AdGuard ne ha filtrata una parte
Grafo dei flussi A colonne, dove il punto del disegno sono gli archi che scavalcano Home Assistant del tutto
Rotte Ogni riga si legge da sinistra a destra: chi parla, le tratte che portano il dato e cosa c’è in fondo. Dove la frase si spezza lo dichiara, invece di lasciare un ramo che finisce sul nulla
Controlli di postura Gravità e rimedio, con quattro esiti possibili: superato, verificato in parte, rilievo, non eseguito
Diagnostica Una misura presa adesso, mai pianificata e tenuta fuori dalla scansione, con add-on e risorse di sistema dove c’è il Supervisor

Le due onestà del progetto

I controlli che non hanno potuto girare non diventano promossi. Vengono contati a parte e dichiarati, e dalla v1.21 esiste anche un quarto esito, verificato in parte, per il caso in cui un controllo abbia girato ma senza vedere tutto: il verde sosterrebbe che si è visto tutto, il grigio che non si è guardato niente, e nessuna delle due cose è vera. Un parziale non finisce mai fra i promossi, e il totale resta verificabile a mano.

Il controllo zero. Talos elenca gli host che hanno una lease DHCP ma non interrogano mai il resolver. Sono i punti ciechi dello strumento stesso: dispositivi di cui non può dire niente, perché la sua fonte osservata non li vede. Dichiararli è più utile che far finta che il quadro sia completo.

Come funziona una scansione

Cinque passi, per default ogni quindici minuti.

1. Leggere il lato dichiarato. I registri vengono letti in processo. L’unità canonica è il config entry, non il dispositivo: mobile_app, il meteo e il TTS possiedono entità senza possedere nessun dispositivo, e sono fra le cose più legate al cloud di un’installazione tipica.

Dall’entry si leggono due sole cose. La prima è l’indirizzo a cui si connette, che è l’unico modo per distinguere due broker: con EMQX e Mosquitto installati entrambi, il dominio dice mqtt per tutti e due, e solo l’entry dice da quale passano davvero i dispositivi. Niente altro viene letto, perché lo stesso dizionario contiene nomi utente, password e token, e nessuno di quelli deve finire in un documento destinato all’esportazione. La seconda è lo stato dell’entry: uno in setup_retry non sta servendo niente, quindi le sue entità vengono contate come non disponibili invece che come locali. Funzionare offline e non funzionare affatto non sono lo stesso risultato.

2. Interrogare AdGuard Home. Il registro delle query è un buffer circolare, non una cronologia interrogabile: Talos lo percorre dal più recente con il cursore older_than e si ferma dove si era fermato la volta prima. I totali vivono in un SQLite dedicato, mai nel database del recorder, perché la ritenzione di AdGuard ricicla e un dispositivo che la settimana scorsa aveva risolto un dominio quattromila volte altrimenti oggi risulterebbe averlo fatto una manciata di volte.

Anche una radio è un condotto. Una lampada Zigbee scambia dati col coordinatore in continuazione e non tocca mai IP: non ha indirizzo, non compare in nessun registro di query, e prima mancava da ogni vista costruita sui condotti. Il grafo mostrava la parte di casa che parla con Internet e ometteva quella che non lo fa, il che diceva che il ramo non c’era invece che dire che non esce mai dall’hub. Ora ogni dispositivo appeso a un altro porta un condotto dichiarato verso di lui, con il trasporto come protocollo, che finisce su un local_hub e si ferma lì: quello che fa l’hub dopo è il condotto dell’hub.

3. Unire i due lati. Il registro dei dispositivi conosce i MAC, il registro delle query conosce gli IP: qualcosa deve tenere insieme entrambi. Le lease DHCP sono la strada solita, ma ce n’è un’altra già dentro Home Assistant, cioè un device tracker basato sul router (AsusWRT, UniFi, Fritz, OPNsense) che pubblica l’ip.

Cosa non fa, dichiarato

Tutto è in sola lettura. Niente scansione delle porte, niente sonde attive, niente ispezione del traffico, niente confronto con database di CVE.

Non è una rinuncia, è la stessa scelta del nome: uno strumento che guarda e riferisce non deve trasformare un’ipotesi sui metadati in un verdetto di sicurezza.

Le uscite

Nove entità di riepilogo e un binary sensor di problema, non una entità per dispositivo: un’integrazione di analisi che raddoppia il registro delle entità peggiora la casa che sta misurando.

Poi un’esportazione HTML autoconsistente, senza script e senza risorse esterne, che si archivia o si gira a qualcun altro, e una riga di comando separata che esegue la stessa pipeline fuori banda contro un’istanza remota.

L’elenco dei domini e quello dei controlli stanno in file di dati, quindi si estendono senza toccare il codice, e la configurazione iniziale trova da sola l’endpoint di AdGuard Home, dall’integrazione ufficiale o dall’add-on, precompilando il modulo con quello che ha davvero risposto.

Accesso

Il pannello è riservato agli amministratori. Distribuito via HACS, richiede Home Assistant 2024.6 o successivo.

Licenza

MIT.