FixVibe
Covered by FixVibecritical

Injecció SQL: evitant l'accés no autoritzat a la base de dades

La injecció SQL (SQLi) és una vulnerabilitat crítica on els atacants interfereixen amb les consultes de la base de dades d'una aplicació. En injectar una sintaxi SQL maliciosa, els atacants poden evitar l'autenticació, veure dades sensibles com contrasenyes i detalls de targetes de crèdit, o fins i tot comprometre el servidor subjacent.

CWE-89

Impacte de la injecció SQL

La injecció SQL (SQLi) permet a un atacant interferir amb les consultes que una aplicació fa a la seva base de dades [S1]. L'impacte principal inclou l'accés no autoritzat a dades sensibles, com ara contrasenyes d'usuari, dades de targetes de crèdit i informació personal [S1].

Més enllà del robatori de dades, els atacants sovint poden modificar o suprimir registres de bases de dades, la qual cosa comporta canvis persistents en el comportament de l'aplicació o pèrdua de dades [S1]. En casos d'alta gravetat, SQLi es pot escalar per comprometre la infraestructura de fons, activar atacs de denegació de servei o proporcionar una porta posterior persistent als sistemes de l'organització [S1][S2].

Causa principal: maneig d'entrada no segur

La causa principal de la injecció SQL és la neutralització inadequada d'elements especials utilitzats en una ordre SQL [S2]. Això passa quan una aplicació construeix consultes SQL concatenant l'entrada influïda externament directament a la cadena de consulta [S1][S2].

Com que l'entrada no està correctament aïllada de l'estructura de la consulta, l'intèrpret de la base de dades pot executar parts de l'entrada de l'usuari com a codi SQL en lloc de tractar-la com a dades literals [S2]. Aquesta vulnerabilitat es pot manifestar en diverses parts d'una consulta, com ara sentències SELECT, valors INSERT o sentències UPDATE [S1].

Solucions i mitigacions concretes

Utilitzeu consultes parametritzades

La forma més eficaç d'evitar la injecció SQL és l'ús de consultes parametritzades, també conegudes com a declaracions preparades [S1]. En lloc de concatenar cadenes, els desenvolupadors haurien d'utilitzar mecanismes estructurats que facin complir la separació de dades i codi [S2].

Principi del mínim privilegi

Les aplicacions s'han de connectar a la base de dades utilitzant els privilegis més baixos necessaris per a les seves tasques [S2]. Un compte d'aplicació web no hauria de tenir privilegis administratius i s'hauria de restringir a les taules o operacions específiques necessàries per a la seva funció [S2].

Validació i codificació d'entrada

Tot i que no és un reemplaçament de la parametrització, la validació d'entrada proporciona una defensa en profunditat [S2]. Les aplicacions haurien d'utilitzar una estratègia d'acceptació coneguda i bona, validant que l'entrada coincideixi amb els tipus, longituds i formats esperats [S2].

Com ho prova FixVibe

FixVibe ja cobreix la injecció SQL a través del mòdul d'escàner active.sqli tancat. Les exploracions actives només s'executen després de la verificació i l'acreditació de la propietat del domini. La comprovació rastreja els punts finals GET del mateix origen amb paràmetres de consulta, estableix una resposta de referència, cerca anomalies booleanes específiques d'SQL i només informa d'una troballa després de la confirmació del temps en diverses longituds de retard. Les exploracions del dipòsit també ajuden a detectar la causa arrel abans mitjançant code.web-app-risk-checklist-backfill, que marca les trucades SQL en brut creades amb la interpolació de plantilles.