L'hashing è una DLL utile per proteggere dal dirottamento della DLL?

1

Voglio assicurarmi che le librerie di collegamento dinamico utilizzate dalla mia applicazione non possano essere sostituite con altre librerie con lo stesso nome, al fine di iniettare codice dannoso. Pertanto, ho pensato di creare un'impronta digitale delle DLL prima di rilasciare nuove versioni dell'applicazione.

L'applicazione dovrebbe quindi convalidare l'impronta digitale prima che la DLL venga caricata. Questo fornirebbe una buona protezione nello scenario sopra?

Per quanto riguarda la funzione hash: non sono sicuro se usare o meno MD5 o uno degli algoritmi SHA. So che MD5 non è sicuro per gli attacchi di collisione, ma è sicuro contro gli attacchi pre-attacco.

Contro quali attacchi dovrei proteggere le librerie (usando le impronte digitali)?

    
posta WMEZ 23.04.2014 - 08:47
fonte

1 risposta

2

Tutto si riduce a quanto è compromesso il tuo sistema. Se l'attaccante è in grado di mettere / sostituire le tue DLL solo con quelle malevoli - probabilmente una sorta di firma digitale aiuterà a filtrare le nostre dll non attendibili.

Se l'attaccante controlla abbastanza il sistema da sostituire non solo le DLL, ma anche il tuo eseguibile - può modificare il codice che verifica la firma, sconfiggendo la tua protezione.

Per quanto riguarda i nomi forti di .net assembly - il nome sicuro non è per la sicurezza e non deve essere considerato come una protezione. Può solo aiutare a garantire che l'assembly sia stato emesso da uno specifico fornitore, e non modificato da allora. L'assemblaggio può essere modificato e riscritto in qualsiasi momento con chiave privata diversa (ovviamente, il venditore cambierà in questo caso). Ma assemblea rimarrà valido e firmato.

Come per l'algoritmo di hashing - probabilmente è bene usare SHA256, è usato da microsoft quando si esegue il calcolo hash per la firma digitale degli assembly.

    
risposta data 23.04.2014 - 10:39
fonte

Leggi altre domande sui tag