È un problema di sicurezza se MySQL manipola i tipi di parametri?

2

Questo è un follow up di una domanda che ho postato su Stack Overflow ma non hai bisogno di leggere quella domanda - Sto ricapitolando i dettagli pertinenti qui.

Sto testando un'applicazione PHP che utilizza un database MySQL come archivio dati. Sto usando le query parametrizzate esclusivamente, tramite una libreria ORM.

Ho scoperto che una particolare richiesta POST con un payload come questo:

id=3-2&value=whatever

modificherà la riga del database dove id = 3 . Dopo alcune indagini, è stato determinato che il valore "3-2" è passato al database (tramite una query parametrizzata) e seleziona la riga dove id = 3 , che viene quindi aggiornata.

Ora mi sembra che questo sia un difetto di sicurezza: sono in grado di manipolare i dati nel mio database inserendo un valore arbitrario per il parametro id . Certo, l'intervallo di valori per cui questo tipo di attacco è possibile è limitato: il parametro ID deve essere una stringa preceduta da un numero e quel numero deve corrispondere a un ID nel mio database.

Quindi ho due domande:

  1. È davvero un difetto di sicurezza di cui dovrei preoccuparmi?

  2. A quale livello dovrebbe essere indirizzato nella mia applicazione?

    1. Il server MySQL, forse cambiando alcuni valori di configurazione?
    2. La libreria ORM, forse controllando il valore dell'ID usato prima di tentare di interrogare il database?
    3. Nel mio codice, prima ancora di provare a creare un'istanza del modello?

Grazie per il tuo aiuto! Sto appena iniziando a conoscere sicurezza e amp; qualsiasi input sarà utile!

    
posta Kryten 06.05.2015 - 00:05
fonte

1 risposta

0
  1. Ciò consente azioni (potenzialmente dannose) contrarie all'uso previsto dell'applicazione, quindi sì è un difetto di sicurezza di cui dovresti preoccuparti. Solo perché hai trovato casi d'uso limitati / i vettori di attacco non significa che altri non esistano.
  2. Idealmente dovresti adottare un approccio " difesa approfondita " in base al quale attenuerai la preoccupazione in così tanti livelli come è praticabile. Come accennato in precedenza, hai scoperto solo un singolo vettore di attacco e la mitigazione a tutti i livelli richiede che tutti i vettori correlati debbano ignorare tutte le attenuazioni tutte piuttosto che quelle a strato singolo. Detto ciò; potrebbe non essere appropriato modificare la libreria ORM in quanto non è necessariamente un problema generalizzabile.
risposta data 06.05.2015 - 03:47
fonte

Leggi altre domande sui tag