suppongo un attaccante dedicato e pieno di risorse potrebbe eseguire un attacco MITM e intercettare tutte le richieste di repository Maven pubblici, con attenzione iniettando dannoso bytecode negli artefatti JAR, quindi ricalcolo e fornendo gli hash SHA1.
Al client, apparirebbe come un artefatto legittimo: il file JAR binario e lo SHA1 corrispondono e saranno uguali anche se controllano i mirror alternativi.
Suppongo che l'unica vera soluzione sia richiedere ai repository centrali di supportare HTTPS (e fidarsi che TLS stesso non sia stato danneggiato).
In alternativa, un approccio pratico potrebbe essere quello di impostare un proxy Maven (Artifactory o Nexus) servito su HTTPS ai client interni. Questo riduce la superficie di attacco e significa che dovrai solo proteggere le linee di comunicazione da quel server al mondo esterno. Periodicamente verificherei che i JAR e gli hash del proxy corrispondano a quelli dei mirror pubblici utilizzando una rete totalmente indipendente e affidabile.
Se davvero, davvero vuole essere sicuro che non sarebbe confidando binari-, invece, si sarebbe scaricando tutti codice sorgente e la revisione li a mano prima di compilare da soli, ma che si presuppone risorse sufficienti e tempo sufficiente per condurre le revisioni e fidati della tua intera catena di strumenti di creazione.
Bene, sicurezza a strati come dicono sempre.
fonte
2011-08-17 14:18:48
Ho scritto una regola del plugin Enforcer per scopi generali per risolvere questo problema: https://github.com/gary-rowe/BitcoinjEnforcerRules –
@GaryRowe Sembra che il tuo plug-in prevenga download successivi che non corrispondono ai checksum registrati da cuocendo i checksum nella build (che riduce la superficie di attacco, che è buona), ma questo non sembra proteggere nel momento in cui la build viene prima creata e la lista di checksum è scritta (o generata). Fondamentalmente, previ che la build avveleni * qualcun altro * giusto? È una corretta comprensione del tuo plugin? – Gus