Il mio fornitore è vulnerabile all'iniezione SQL?

4

La società per cui lavoro è recentemente passata a un fornitore esterno per i servizi di gestione stipendi. Abbiamo effettuato un caricamento iniziale dei dati dal nostro vecchio sistema al nuovo fornitore. Ho notato che i nostri dipendenti che hanno apostrofi nei loro nomi (O'Riley per esempio) non si adeguavano più ad altri sistemi. Il nuovo fornitore di libri paga aveva rimosso gli apostrofi. Siamo in grado di aggiungere manualmente l'apostrofo indietro tramite il front-end basato sul Web e di eseguire un rapporto subito dopo la modifica mostra l'apostrofo, ma il carattere viene rimosso dal giorno successivo.

Quando ho chiesto al venditore di libri paga i caratteri rimossi, sono stato informato che "Il sistema rimuoverà automaticamente le virgolette poiché sono problematiche nel database stesso." È stato raccomandato di utilizzare il carattere tomba (virgoletta singola all'indietro) perché sembra simile a una virgoletta singola.

La mia domanda è questa: l'incapacità di gestire le virgolette (singole o doppie) in un database indicativo di vulnerabilità a SQL injection e c'è un modo sicuro e legale per dimostrare o smentire questa vulnerabilità?

Si tratta di un sistema di buste paga e sono riluttante a tentare di scoprire eventuali vulnerabilità sul sistema live e non ho accesso a un sistema di test.

    
posta JSR 05.08.2014 - 19:49
fonte

3 risposte

4

Non ho lavorato con i sistemi di buste paga e non so quanti anni hai. So che spesso devono supportare formati di dati antichi, quindi potrebbe essere necessario farlo per compatibilità. Anche così, questo è indicativo di un sistema imperfetto e di una società che non ha le risorse per riparare il proprio software. Non segue immediatamente che è vulnerabile all'iniezione SQL. Vale la pena provarlo, però.

È scritto nei contratti stipulati con i fornitori che consentono una valutazione della sicurezza, se vogliamo.

Il mio consiglio è di chiedere la documentazione delle loro valutazioni di sicurezza e, se non sei soddisfatto, di 'loro che devi fare la tua valutazione di sicurezza. A meno che non abbiano assunto una società esterna e abbiano un rapporto completo (più lungo di una pagina, per esempio), e possano mostrare una cronologia di valutazioni e miglioramenti, probabilmente non dovresti essere soddisfatto. Quindi puoi assumere qualcuno per farlo o farlo da solo se ti senti a tuo agio nel farlo.

    
risposta data 05.08.2014 - 20:27
fonte
1

Non significa necessariamente che siano vulnerabili. Potrebbero averlo rimosso solo per paranoia.

Tuttavia , nel mio libro è una cattiva pratica farlo. Stai cambiando il nome , non è come un identificatore in cui una restrizione dei caratteri non conterebbe troppo e non significa nemmeno che tu sia al sicuro.

Inoltre, il fatto che sia stato rimosso il giorno dopo averlo modificato suggerisce che non si tratta di un filtraggio fatto su input, ma di un processo notturno vulnerabile che si è rotto a causa del "e qualcuno poi lo ha rimosso.

Sono d'accordo che vale la pena di indagare sulle loro pratiche di sicurezza. Nota anche che è meglio scoprire i problemi prima che tardi. Sono sicuro che, se necessario, potresti tornare indietro da quel sistema, mentre in un anno un problema che ha portato alla perdita di tutti i dati sui salari memorizzati potrebbe non esserlo.

    
risposta data 23.09.2014 - 14:33
fonte
0

È causa di gravi sospetti e probabilmente di altri problemi, tuttavia:

Se il sistema fosse, in questo caso, vulnerabile a SQL injection, il tuo aggiornamento sarebbe fallito:

UPDATE users SET first_name = '?' WHERE user_id = ?;
UPDATE users SET first_name = 'O'Henry' WHERE user_id = 1; //substituting without escaping

Come puoi vedere il parser SQL vede first_name = 'O' ma dal momento che Henry non corrisponde a una parola di controllo genererà un errore.

    
risposta data 06.08.2014 - 04:44
fonte

Leggi altre domande sui tag