¿Cómo puedo explicar la inyección SQL a mi abuela?

¿Han notado que en Estados Unidos ya comenzaron a tocar música navideña en las tiendas? Aunque creo que es un poco temprano para celebrar la temporada navideña, su momento lo hace apropiado para mi analogía que usaré para explicar a todas las abuelas cómo funcionan las inyecciones SQL.

Permíteme presentarte los tres personajes principales de mi historia:

  • el programador, interpretado por Santa Claus
  • el programa jugado por el elfo principal
  • the cracker (término correcto para hacker con malas intenciones) – jugado por Grinch

El Grinch encarna perfectamente las intenciones de una galleta: quiere destruir la Navidad y saquear todos los regalos de Navidad del mundo. En esta analogía, Navidad es su aplicación web y todos esos preciosos regalos de Navidad son todos los datos valiosos de su aplicación web: números de tarjeta de crédito de los clientes, PII, archivos personales, etc.

Solo por el bien de esta historia, creamos que la gente viene a Santa para recoger sus regalos en lugar de que él venga a la casa de todos.
Érase una vez, el día de Navidad, Santa preparó todos los regalos para las niñas y los niños del mundo. Ahora, le asignó al elfo jefe la tarea de dar un regalo a cada uno una vez que le dijeran sus nombres. Santa le dijo al elfo: ” Obtenga el regalo para () y llene el espacio en blanco con el nombre que sea del niño que está sirviendo.

El elfo principal hizo lo que le dijeron y los niños vinieron y le dieron sus nombres al elfo principal individualmente y cada uno recibió sus respectivos regalos. Sin embargo, el Grinch vino vestido de niño (¡porque obviamente nadie le daría la bienvenida al Grinch si lo reconocieran!) Y dijo: “ Mi nombre es Todos. “El elfo no estaba preparado para esta situación porque Santa dijo que solo obtuviera el regalo para lo que el niño se identifique como . El elfo está confundido y abrumado, así que en su estado de vulnerabilidad, el Grinch toma los dones de todos.

Esta es una inyección SQL . El programa estaba tratando de dar el conjunto de datos para un visitante típico, pero el cracker pudo encontrar una vulnerabilidad en la programación y manipular el programa para darle acceso a todos los datos.

Pero aquí está lo inteligente: digamos que cuando el elfo le pide su nombre a Grinch, y en lugar de decir ” todos “, dice: ” Grinch y quema todos los regalos “. Ahora, el elfo no solo consigue el regalo para el Grinch (aunque dudo que tenga uno), pero también quemará el resto de los regalos.

Entonces, ¿cómo protegen los programadores contra las inyecciones de SQL? Bueno, intentan programar caracteres especiales de escape (es decir, ignorar caracteres que no son respuestas esperadas) en la aplicación web. Un ejemplo de esto sería Santa diciéndole al elfo: “No debes destruir ningún regalo. Además, solo regale un regalo por persona “. Así que cuando Grinch venga y pida los regalos de todos o diga” Grinch y queme todos los regalos “, el elfo no se equivocará.

Es difícil encontrar todas las vulnerabilidades en un programa, por lo que muchas grandes empresas tienen programadores dedicados que trabajan para encontrar y remediar estas vulnerabilidades. Otra opción para que las empresas disminuyan estos riesgos es utilizar sofisticados sistemas de firewall que bloquean el tráfico dañino de su aplicación web, también conocido como Santa, contratando fuertes guardaespaldas frente a la tienda de regalos y verifican los ID de todas las entradas para asegurarse de que no haya Grinches alguna vez entrar.

Las grandes empresas gastan miles de dólares para mantener estos sistemas de firewall, pero creo que las pequeñas empresas pueden beneficiarse de los sistemas de firewall de aplicaciones web (WAF) la mayor parte del tiempo para evitar inyecciones SQL. Por supuesto, definitivamente se recomienda trabajar para asegurarse de que programe su aplicación web para limitar las vulnerabilidades, o pronto, terminará entregando muchos regalos a Grinches.

Bob: Hola Alice, ¿quieres jugar un juego?

Alice: ok.

Bob: Te diré mi nombre y dirás “Hola” seguido de todo lo que dije. Entonces, si digo Superman, dirás “Hola Superman”, ¿de acuerdo?

Alice: ok. (suspicaz)

Bob Bob

Alice: hola Bob.

Bob: El increíble Hulk.

Alice: Hola, el increíble Hulk.

Bob: Bob y yo te debemos un millón de dólares.

Alice: Hola Bob y yo te debemos un millón de dólares. ¿¡Oye!?

En la parodia de arriba, Bob ha engañado a Alice para que diga algo que no quiso decir.

Un problema similar puede suceder con las computadoras. Un programador informático descuidado puede tener una situación en la que una persona malintencionada puede engañar al software para que haga algo que no pretendía, como darle un millón de dólares.

Ahora, usted puede decir “eso es una tontería, seguramente estos programadores de software no pueden ser tan tontos para caer en un truco de jardín de infantes”? El problema es este: Bob, que emplea a Alice como una anfitriona, le dice a Alice que salude a las personas por su nombre. Bob también advierte a Alice que algunas personas tienen nombres muy largos y que siempre deben ser recibidos en su totalidad.

Entonces, ¿cómo debería responder Alice cuando aparece un niño y dice “Burro y yo te debemos un millón de dólares”?

Bob tendrá que enseñarle a Alice a responder de esta manera: ” Hola, burro y te debo un millón de dólares “. De esta manera, Alice aún podrá saludar a las personas por su nombre completo pero no decir algo que no quiso decir.

Imagine que Coca Cola Company le permite personalizar la etiqueta de la botella con esta oración.
[Tu nombre] ama a Coca Cola”.
Puede proporcionar su nombre a través de un formulario en línea, y se imprimirá de inmediato. La intención es imprimir algo como ” Ludovico ama la Coca Cola”.

Pero, ¿qué pasa si el nombre que proporciona es exactamente ” Ludovico ama la cerveza y nadie “?

¿Coca Cola imprimirá su propia etiqueta con la frase
Ludovico ama la cerveza, y nadie ama la Coca Cola”
??

Las hazañas de un Momadding un ejemplo más que indica cómo se puede engañar a una computadora para revelar la información real de la base de datos.

He pensado en usar una analogía con una receta de cocina. Si puedo cambiar el nombre de un ingrediente en una receta, puedo hacer que el cocinero haga algo malo.

  • 3/4 taza de azúcar blanca.
  • 3/4 taza de azúcar morena.
  • 2 cubos de mantequilla o margarina.
  • 2 1/4 taza de harina.
  • 2 huevos.
  • 1 cucharada de sal
  • 1 cucharadita de bicarbonato de sodio.
  • 1 1/2 taza de chispas de chocolate, la mejor marca es Ghirardelli.
  • 1 cucharadita de vainilla, la mejor marca es Baldwin’s.
    1 cucharadita de veneno para ratas

Por supuesto, cualquier ser humano se daría cuenta de que algo anda mal, a menos que siguiera la receta de una manera completamente ingenua. Y las computadoras son totalmente sin cerebro y sin juicio. No hacen ningún esfuerzo por comprender que estás tratando de hacer un regalo para las personas, en lugar de cebo para ratas.

Es la diferencia entre tener una máquina expendedora y tener que conducir. La máquina expendedora no permite la inyección SQL, cada pedido de alimentos que el cliente desea se tiene en cuenta y se elimina cualquier variación, ya que solo pueden enviar opciones definidas explícitamente.

El recorrido parece ser el mismo, todo lo que la persona podría pedir está en el menú. Esto funciona muy bien, piden una hamburguesa con queso y obtienen una hamburguesa con queso, piden aros de cebolla grandes y la obtienen. Cada pedido aparece definido para la mayoría de sus clientes y para usted.

La inyección SQL es cuando un cliente intenta sustituirlo por un batido de leche cuando no hay opción en la caja registradora. En este caso, no sabes claramente qué sucederá. Tal vez el trabajador dirá que no es posible y negará al cliente, tal vez le cobren más por la diferencia en el refresco para batido de leche, tal vez el cliente insista en obtenerlo y luego decida entregárselo gratis. Otros eventualmente descubrirán esto y muchos clientes comenzarán a usar este truco para obtener batidos de leche gratis y puede afectar gravemente su negocio con el tiempo.

El punto es que es una entrada que no se tiene en cuenta explícitamente y cuando no se tiene en cuenta hay muchos eventos no intencionados que pueden ocurrir, todos los cuales van desde ligeramente negativo (negarle al cliente la transacción) hasta extremadamente perjudicial (perder su negocio de perdieron ganancias del golpe de batido).

Dígale que imagine un mundo donde los spiderbots se publiquen regularmente en los buzones de las personas por la noche. Una vez dentro de la casa, estos pequeños robots localizan documentos oficiales, como extractos bancarios, y los fotografían. Durante el día se esconden y “escuchan” las palabras clave como “tarjeta de pago”, y registran los números que escuchan. Envían todo esto por mensaje de texto a su propietario.

En un mundo tan extraño, ya que somos animales modernos e inteligentes y todo eso, hay soluciones para esta amenaza. StopThatBot 3000 es, de lejos, el mejor modelo. LetusCheck también vale la pena instalarlo. iBlackWidow es popular.

Los propietarios de buzones sin protección todavía encuentran elementos curiosos que aparecen en los extractos de sus tarjetas de crédito y extrañas marcas de arañazos en sus escritorios. Son demasiado vagos o pobres para hacer algo al respecto.

Los formularios web son como buzones. Una inyección SQL es un robot araña. Sería agradable vivir en un mundo donde no tuviera que protegerse de las inyecciones SQL, pero eso no significa que tenga que vivir con plagas.

La inyección de SQL es cuando su abuela va a la biblioteca, ve a un buen bibliotecario joven que recibió instrucciones de responder cualquier pregunta sobre la ubicación de los libros. Se lleva a cabo la siguiente conversación:

Buena bibliotecaria: ¿en qué puedo ayudarlo?
Abuela: Me gustaría saber dónde está The Great Gatsby.
Buena bibliotecaria: Pasillo 3.
Abuela: También me gustaría saber dónde está Moby Dick y, mientras estoy allí, ¿por qué no me das tu dirección y número de teléfono para que pueda llevarte a una cita?

La buena bibliotecaria le da sus datos personales a la abuela porque pensó que la pregunta era sobre libros. Aprendió la lección de la manera difícil, y debería saberlo mejor la próxima vez.

Christine Wasmuth, eres maravillosa.

Le recomendaría (el póster) que vea este video, ya que es probablemente una de las explicaciones prácticas más fáciles que puede encontrar, en caso de que conozca algo de SQL.

Dr. Mike Pound para Computerphile.

Después, puede explicarlo con sus propias palabras a cualquiera, tal vez …

Ooh, esto es bueno, esto es realmente bueno, esto es difícil. Parece que es hora de una analogía increíble, y las analogías son lo mío, así que vámonos. Por lo tanto, suponemos que tenemos que explicar un tema de seguridad informática bastante complejo sin utilizar ningún lenguaje técnico, o incluso cualquier información relacionada con la red informática …

Bueno, en el mundo de la informática, hay cosas llamadas bases de datos. Piense en una base de datos como una gran biblioteca secreta donde solo ciertas personas pueden acceder a ciertas cosas. Para acceder a cualquier cosa en la biblioteca, debe completar un formulario y enviarlo a la biblioteca, y luego el bibliotecario le enviará lo que solicite en el formulario. Para obtener un formulario, debe pedirle a un mensajero. El mensajero se asegura de que solo obtenga formularios que le permitan acceder a cosas a las que tiene acceso.

El bibliotecario no es muy inteligente, sin embargo, todo lo que sabe hacer es leer formularios y enviar cosas a una persona. De hecho, es tan tonto que no puede distinguir la diferencia entre las diferentes formas. Para él, los formularios son solo una larga corriente de papel que llega a él. Entonces, algunas personas abusan de esto, completan un formulario real y lo envían al bibliotecario, pero hacen su propio formulario falso y lo adjuntan a su formulario. La forma falsa les permite acceder a cosas que no deberían. El mensajero que lleva los formularios al bibliotecario solo ve el primer formulario, por lo que no nota nada sospechoso. Cuando los formularios llegan al bibliotecario, el bibliotecario ve los dos formularios, pero no se da cuenta de que están en el mismo papel, simplemente asume que el segundo formulario es nuevo. Esto permite a las personas obtener cosas en la biblioteca que no deberían poder.

Sin embargo, empeora, porque el bibliotecario también puede destruir cosas en la biblioteca y agregarle cosas nuevas. Algunas personas que abusan del sistema pueden hacer que el bibliotecario destruya todo en la biblioteca o llene todo el espacio vacío de la biblioteca con información inútil.

Sin embargo, las personas que poseen la biblioteca se volvieron más inteligentes. Para evitar que las personas abusen del sistema, les enseñaron a los mensajeros cómo asegurarse de que los formularios que llevaron al bibliotecario solo contengan el formulario que le dieron a la persona que solicitó información.

Tada! Por supuesto, esto se simplifica, como lo será cualquier analogía, pero espero que ayude a las personas a explicar cómo funciona la inyección SQL, y realmente las bases de datos en general.

La inyección SQL es como cuando vas a la biblioteca y pides recibir un nombre de libro o una identificación de libro, pero el empleado es lo suficientemente estúpido como para darte dinero de su bolsillo si lo solicitas.

Debido a que no fue instruido adecuadamente para procesar solo comandos de una manera dada e ignorar cierto tipo de comandos;

Inyección de SQL para los no técnicos: agregar código de computadora a una dirección web para hacer cosas traviesas y a menudo ilegales en el sitio web en el otro extremo.

Abuelita, ¿conoces estos programas en los que la policía advierte a las personas seniles como tú de estafadores que tocan el timbre para venderte o preguntarte algo y luego entrar en tu apartamento y luego robarte?

La inyección SQL es solo eso: el estafador es la inyección SQL: finge que alguien a quien no tiene acceso en su sistema puede causar daños. Eres como la computadora, siempre demasiado viejo para la última tecnología. Soy como el técnico: al final tengo que limpiar el desorden.

Dígale a su abuela que es como si alguien hubiera metido un caramelo gomoso en un envoltorio de caramelo duro y luego lo coloque con su tazón junto a su sillón.

¿Por qué querrías jajaja?

He hecho la misma pregunta aquí http://security.stackexchange.co