Codice relativo alla sicurezza nei progetti Open Source?

11

Ho sentito di recente che la maggior parte del codice PHP è confidenziale, perché se gli hacker conoscono la struttura del database o la funzione di hash utilizzata per crittografare le password, ci sono maggiori possibilità di violazione.

Mi stavo chiedendo, se è così, allora che ne è dei progetti open source in cui tutto è ben visibile?

    
posta 16.02.2014 - 19:23
fonte

3 risposte

22

I have recently heard that most of the PHP code is confidential, because if attackers know your database structure or the hash function used to encrypt the passwords, there is higher chances of a breach.

Questo avviene solo quando i progettisti non utilizzano la funzione di hash corretta o proteggono la webapp dall'iniezione SQL. Ma queste cose possono essere facilmente rilevate, ci sono strumenti automatici in questi giorni che possono cercare vulnerabilità di SQL injection tramite il codice sorgente (invece di puntare sqlmap sulla webapp)

Se usi qualcosa come scrypt, sei perfettamente sicuro nel dire a tutti che lo usi.

MediaWiki usava un hash MD5 salato. Il sale è specifico per l'installazione e non fa parte del codice open source (viene generato durante l'installazione). Questo non è sicuro come può essere (i sali per utente e l'utilizzo di un algoritmo di hashing migliore sarebbe meglio), ma è comunque sicuro finché il file LocalSettings non è esposto. (Certo, non è un grande livello di sicurezza). I pensa Drupal fa anche questo , ma con sha512.

I was wondering, if it's so, then what about open source projects where everything is wide out in the open?

La sicurezza per oscurità non è sicurezza. Se inserendo il codice nella protezione contro gli impatti aperti, in primo luogo non si ha alcuna sicurezza.

Inoltre, se ci sono buchi di sicurezza nel codice, anche questi vengono catturati dai contributori. Ad esempio, recentemente ho rilevato e corretto un errore relativo alla sicurezza nel software Bugzilla.

    
risposta data 16.02.2014 - 19:36
fonte
35

Si chiama " sicurezza attraverso l'oscurità ", che è generalmente considerato un modello di sicurezza errato per la maggior parte (se non tutti).

Ci sono due termini principali incentrati su questo concetto:

Principio di Kerckhoff :

A cryptosystem should be secure even if everything about the system, except the key, is public knowledge.

Claude Shannon lo riformulò più tardi, in termini più generici, come la massima di Shannon :

The enemy knows the system.

Il punto è che la sicurezza dovrebbe provenire da solidi concetti di sicurezza, piuttosto che cercare di nascondere informazioni e algoritmi. Le operazioni crittograficamente forti garantiscono la sicurezza, mentre il codice privato garantisce solo l'oscurità.

    
risposta data 16.02.2014 - 19:36
fonte
12

I have recently heard that most of the PHP code is confidential

Questo sembra essere errato. Al momento dell'affitto, la maggior parte del PHP è non offuscata e leggibile a chiunque sia distribuito a.

because if attackers know your database structure or the hash function used to encrypt the passwords, there is higher chances of a breach.

Anche errato. Né la struttura del database, né la funzione di hash è fondamentale per progettare la violazione iniziale. Questi potrebbero essere utili dopo una violazione, ma ciò che è importante nel generare l'attacco iniziale è la conoscenza di qualche difetto o vulnerabilità nel codice del sito.

Avere il codice sorgente può essere utile per trovare vulnerabilità di sicurezza (cf .: plugin Wordpress e Joomla), non è davvero necessario. Infatti, la maggior parte delle vulnerabilità interessanti (Windows, Flash, Internet Explorer, Acrobat, ecc.) Sono state trovate senza l'ausilio del codice sorgente.

Rendere il tuo progetto Open Source rende il codice più facile da revisionare (con o senza il permesso) di terze parti che dovrebbe portare a scoperte precedenti di bug e vulnerabilità, sperando di renderle più veloci e facili da applicare .

Supponendo che il tuo progetto sia abbastanza popolare da ottenere una ragionevole quantità di scrutinio, questo dovrebbe significare che il tuo progetto ha meno probabilità di avere importanti vulnerabilità di sicurezza una volta compiuto il periodo iniziale di scoperta e verifica. È difficile ottenere buoni dati al riguardo, ma alcune prove suggeriscono che il popolare software open source ha meno probabilità di avere quelle vulnerabilità "dormienti" che si trovano lì presenti e attive ma non pubblicizzate per decenni.

    
risposta data 17.02.2014 - 00:22
fonte

Leggi altre domande sui tag