¿Por qué son posibles las vulnerabilidades y la falta de seguridad en las computadoras?

22

He escuchado sobre vulnerabilidades de computadoras, virus, malware, etc.

  • ¿Por qué son posibles estas amenazas?
  • ¿Por qué la computadora no hace las cosas que se supone que debe hacer?
  • ¿Por qué algunas personas escriben malware, en lugar de programas con un propósito constructivo más allá de hacer daño y violar la ley?
  • ¿Existe la inseguridad informática debido a la naturaleza de las computadoras?
pregunta user3533 06.02.2013 - 21:58
fuente

6 respuestas

34

La computadora no puede adivinar qué se "supone" que debe hacer. En cambio, hace exactamente lo que se le dice que haga, eso es lo que programamos se trata de Como corolario, las computadoras no tienen ninguna iniciativa, por lo que si se les pide que hagan algo estúpido o sin sentido, simplemente lo hacen .

Un error es lo que sucede cuando la secuencia de instrucciones escrita por el programador hace que la computadora haga algo estúpido cuando se le presenta un conjunto específico de datos, es decir, estúpido con respecto a lo que el programador quería que la computadora hiciera en su imagen abstracta del sistema. Pero la computadora no sabe lo que quiere el programador, e incluso si lo supiera, no tiene el poder de "entenderlo". La computadora simplemente sigue las instrucciones de la carta.

Un problema de seguridad es un tipo de error que puede explotarse en beneficio de un tercero malévolo, que desencadenará la situación en la que se produce el error para beneficiarse del comportamiento sin sentido de la computadora.

Entonces, para resumir, los problemas de seguridad ocurren en las computadoras porque existen errores y porque el mal existe .

La existencia de errores se debe al hecho de que la creación de software libre de errores (o, para el caso, hardware libre de errores) parece ser extremadamente difícil. Este es un área de investigación activa y aún no está listo para entregar nada viable. Como ejemplo anecdótico, considere que el programa utilizado durante el aterrizaje de la Luna en Apollo 11 tenía dos errores en el sentido de que Neil Armstrong Tenía que entrar en modo de desbordamiento de virilidad americana y usar el control manual. Si no pudieran crear un programa sin errores para la computadora principal de un programa de 25 mil millones de dólares, ¿cómo espera que a los programadores promedio les vaya mejor?

También en el tema de la verificación formal, reflexione sobre esta cita bien conocida de Donald Knuth : "Tenga cuidado con los errores en el código anterior; solo lo probé como correcto, no lo probé ".

La existencia del mal también es un problema abierto que se ha investigado durante al menos 4000 años y no parece serlo. resuelto en cualquier momento pronto.

    
respondido por el Tom Leek 06.02.2013 - 22:29
fuente
12
  

¿Existe la inseguridad informática debido a la naturaleza de las computadoras?

En realidad sí, sí lo hace. Todos y sus perros te dirán que es porque las personas son estúpidas , lo cual es bastante cierto en el sentido de que todos somos imperfectos, pero esto no es toda la historia.

Básicamente, un chico que es esencialmente la versión húngara de Feynman inventó la arquitectura moderna de las computadoras, llamada Von Neumann Architecture . La esencia básica de esto es que todos los programas y datos se almacenan en el mismo lugar en la memoria y uno puede manipular al otro.

Entonces, usando los humanos habituales en las metáforas de las computadoras, imagina que tienes un amigo que solo puede leer las instrucciones de un papel y hace exactamente lo que dicen, descartando las complejidades de los humanos que tienen diferentes interpretaciones. Y todas esas cosas sociales que están arruinando mi metáfora. En este caso, tu amigo está en una biblioteca. Le das un pedazo de papel. Sigue ciegamente tus instrucciones y para cuando termina (lo que es bastante rápido, por cierto) ha ordenado alfabéticamente tu colección de álbumes Y ha tenido tiempo de decirte que necesita una actualización.

Ahora, el Sr. Malicioso es un trabajo desagradable. Toma un pedazo de papel, escribe "compra un arma, roba un banco y estampa en los álbumes de los Beatles de la colección que acabas de clasificar" y la mete en un álbum de Chesney Hawkes. Luego le da a su amigo algunas instrucciones, que por sorpresa lo sorprende abriendo el álbum de Chesney Hawkes y leyendo esas instrucciones. ¡Oh, un trozo de papel con instrucciones! Saltando arriba y abajo en los álbumes de los Beatles, se apresura a comprar un arma y robar un banco.

Ver - los programas son datos. Se almacenan en el mismo lugar. Esta es una característica muy útil, una característica de diseño explícito de las computadoras modernas. Nos permite tener compiladores que toman datos y producen código, tienen idiomas dinámicos y todo tipo de cosas maravillosas. Pero también provoca la inseguridad de ser capaz de ejecutar accidentalmente cosas que deberían ser datos como código y, por lo tanto, hacer que la computadora se salga de un precipicio.

Hay una alternativa y se llama Harvard Architecture . En este escenario, el código y los datos son cosas separadas y uno no puede colocar el código malicioso donde deberían estar los datos, porque los procesadores de Arquitectura de Harvard solo verían y dirían "sí, ¡bien!". Esto no significa que tales PC no puedan fallar, por el contrario, las instrucciones lógicas aún pueden contener errores, simplemente no podremos explotarlos tan fácilmente.

HA también tiene algunas limitaciones graves. Podría escribir compiladores para uno, pero no podría probar lo que escribió sin primero transferir el programa del almacenamiento de datos al almacenamiento de código. Los lenguajes dinámicos se hacen mucho, mucho más difíciles. Los programas que se actualizan se ponen difíciles. Y así sucesivamente.

Entonces, sí, es la naturaleza de los humanos no siempre hacer las cosas bien, y es la naturaleza de la arquitectura de la computadora que este hecho puede aprovecharse para hacer cosas malas.

Eso no quiere decir que no haya soluciones, de hecho, W ^ X y el bit NX son una arquitectura de Harvard como conceptos para el backend von neumann x86.

Notas:

  • Técnicamente, una CPU x86 es una arquitectura de Harvard modificada. El backend (bit de tu programa) es Von Neumann, el núcleo es Harvard.
  • La metáfora es ligeramente cliché y no es perfecta. Lo sé. Lo siento.
respondido por el user2213 06.02.2013 - 23:01
fuente
7

La inseguridad en las computadoras existe casi por la misma razón por la que las computadoras son tan buenas en lo que hacen: siguen las instrucciones que se les dan, precisamente. La raíz del problema, como @JeffFerland lo dijo de manera sucinta , es que esas instrucciones están escritas por humanos. Este es un problema por dos razones: algunos humanos tienen intenciones maliciosas y otros, individuos bien intencionados, son simplemente falibles.

La primera mitad del problema es obvia. Las personas malas escriben software que hace cosas malas. Luego, consiguen que el software se ejecute en la máquina de otras personas a través de ingeniería social u otros medios. Hacen esto porque hay ganancias en ello, o pueden tener una determinada agenda política o personal.

La segunda mitad es donde nos encontramos con problemas como Flash y Java, programas que, de otro modo, están diseñados para buenos propósitos, que sin querer facilitan la ejecución de código malicioso. Esto sucede porque los programadores, como humanos, son imperfectos. Como tal, a veces el código que escriben es imperfecto de tal manera que las computadoras (que aún seguirán perfectamente las instrucciones del código) que ejecutan sus programas pueden ser aprovechadas por actores malintencionados para ejecutar su software malo.

Piense en las computadoras como si fueran Amelia Bedilia . Cuando la Sra. Rogers le dice a Amelia Bedelia que "mida dos tazas de arroz", ella, por supuesto, significa para que Amelia saque dos tazas de arroz para que la Sra. Rogers las use cuando llegue a casa. Sin embargo, solo siguiendo las instrucciones exactamente como se las dieron, Amelia saca dos tazas de arroz, toma algunas medidas y guarda el arroz. A veces, un programador hará algo similar: escribirá las instrucciones con cierta intención, pero cuando la computadora las ejecute exactamente como están escritas o se le permita incorporar la información del usuario en esas instrucciones, la computadora puede terminar haciendo algo que el programador o usuario no pretendía o esperaba.

    
respondido por el Iszi 06.02.2013 - 22:38
fuente
6

Esta pregunta es realmente la misma con cualquier herramienta. Una computadora es una herramienta, solo puede hacer lo que una persona (el usuario o un desarrollador de software) le dice que haga. Las herramientas se pueden usar para bien o para mal y, a veces, terminan con usos no deseados. Cuanto más compleja es una herramienta o sistema, más probable es que tenga posibles usos no deseados y las computadoras son uno de los sistemas más complejos que tenemos en nuestro mundo hoy.

En última instancia, gran parte del problema se debe al hecho de que la seguridad y la facilidad de uso están constantemente en guerra y las buenas prácticas de seguridad son una cuestión de equilibrarlos. Si tuviera una caja que fuera completamente impenetrable y no tuviera llave, entonces nadie podría entrar en la caja, pero también sería completamente inútil ya que nadie podría obtener el contenido de la caja (ni siquiera la persona que debería tenerla). Hago una llave y se la doy al chico bueno, pero alguien podría robar la llave. Ahora, haberlo hecho para que el buen usuario pueda usar la caja, también lo ha hecho para que una persona mala pueda hacer cosas malas y entrar en la caja.

La computadora solo puede hacer lo que se le dice, por lo general, por razones de facilidad de uso, los fabricantes de computadoras por defecto asumen que lo que un usuario solicita es lo que un usuario quiere hacer. Esto significa que si el usuario ejecuta un código incorrecto, la computadora deja que sucedan cosas malas, porque no sabe que es algo malo, simplemente sabe que el usuario le pidió que lo ejecutara.

De manera similar, dado que los programadores no son perfectos, a veces hay formas de hacer que sus programas (que el usuario quiere ejecutar) hagan algo que el usuario ni el desarrollador quisieran que sucediera. Así es como se propagan muchos virus sin la interacción directa del usuario. El usuario puede estar usando su navegador web con algo como Java, el usuario le dice a la computadora que visite un sitio web, pero lo que no se esperaba es que en ese sitio hay una pieza de código Java que hace uso de un error en Java para hacer algo que el usuario y el desarrollador de Java no quisieran que el código pudiera hacer. Como la computadora solo sabe que el usuario deseaba que la página se cargara y el código se ejecutara, hace exactamente eso.

Nuevamente, no hay forma de saber que fue algo malo que el usuario solicitó. El software antivirus y antimalware intenta identificar estas cosas malas antes de que sucedan, pero es un juego imperfecto porque es un sistema muy complejo.

En cuanto a por qué las personas intentan explotarlos, hay muchas razones. Originalmente, comenzó como algo para "divertirse" y como un desafío, pero ahora con Internet, se puede ganar mucho dinero, ya sea mediante el uso de computadoras comprometidas como "bots" que pueden usarse para realizar otros ataques. o enviando correo electrónico SPAM. También se puede ganar mucho dinero en el robo y la venta de información personal y financiera. Realmente no es diferente a cualquier otra empresa criminal ahora.

    
respondido por el AJ Henderson 06.02.2013 - 22:19
fuente
3

Una computadora es como una herramienta, puede usarse para bien y puede ser usada para mal. Su diseño original no fue construido para ser usado mal, pero tiene el potencial. Por ejemplo, un cuchillo fue diseñado para cortar cosas como carne o madera. El problema es que las personas se convierten en un arma. Algunos por ideales, otros por fines de lucro, otros por diversión.

    
respondido por el Lucas Kauffman 06.02.2013 - 22:54
fuente
3
  
  • ¿Por qué son posibles estas amenazas?
  •   

Porque las computadoras son poco más que herramientas. El término "computadora" es muy descriptivo a pesar de toda la abstracción que intentamos colocar encima de ellos; Es un dispositivo que "computa", simple y llanamente. Ya sea, en un nanosegundo determinado, esté calculando el color de un píxel en una interfaz de usuario, la dirección de los datos en su memoria, etc., no es más ni menos que una calculadora binaria increíblemente rápida conectada a una gran cantidad de componentes periféricos que proporcione entradas y salidas de la programación básica por la que la CPU se está abriendo paso.

Dado eso, la pregunta de "por qué" tiene una respuesta simple; Las herramientas pueden ser utilizadas para bien o para mal. Los martillos pueden clavar clavos o calaveras. Las sierras pueden cortar madera o carne. Y las computadoras pueden secuenciar el ADN para encontrar la cura para el cáncer o robar la información de su cuenta bancaria.

  
  • ¿Por qué la computadora no hace las cosas que se supone que debe hacer?
  •   

hace . Hace exactamente lo que se le dice que haga el programa que está ejecutando actualmente. El problema es que el programa que la computadora está ejecutando actualmente no es necesariamente algo que se le dijo que ejecutara explícitamente con solo presionar una tecla o el clic de un mouse. Durante mucho tiempo, hemos usado varias capas de software (y hardware) para permitir la modularidad; cualquier computadora puede tener cualquier hardware conectado y ejecutar cualquier programa para trabajar con ella (al menos esa es la teoría). Más recientemente, hemos inventado capas para permitir que una computadora haga malabares con muchos programas a la vez. Estas capas de abstracción, como el sistema operativo, las máquinas virtuales, los demonios (servicios), etc., que ocultan lo que la computadora realmente hace en un reloj determinado, pueden ser manipuladas por un atacante para ejecutar el software sin su conocimiento consciente.

  
  • ¿Por qué algunas personas escriben malware, en lugar de programas con un propósito constructivo más allá de hacer daño y violar la ley?
  •   

Porque,

  

... algunos hombres no buscan nada lógico, como el dinero. No se pueden comprar, intimidar, razonar ni negociar con ellos. Algunos hombres solo quieren ver el mundo arder. - Alfred Pennyworth, El caballero oscuro

Para la mayoría de los "sombreros negros", el caos que causan es divertido, es entretenido, de la misma forma en que usted o yo disfrutaríamos un videojuego en un entorno completamente aislado. Ellos, sin embargo, están haciendo cosas en el mundo real. La misma capa de separación digital entre usted y las consecuencias de sus acciones, con la emoción adicional de saber que es real.

  
  • ¿Existe la inseguridad informática debido a la naturaleza de las computadoras?
  •   

Hasta cierto punto, sí. Las computadoras son poderosas, pero son extremadamente tontas. Exigen que los humanos piensen por ellos, diseñen de una manera que sea difícil de subvertir, que los programen de una manera que sea difícil de subvertir, y que utilicen de una manera que sea Difícil de subvertir. La dificultad inherente de esto es similar a la dificultad inherente (tal vez la imposibilidad) de diseñar un "sistema completamente infalible":

  

Un error común que las personas cometen cuando intentan diseñar algo completamente infalible es subestimar el ingenio de los tontos completos. - Douglas Adams

En ambos casos, simplemente intentas burlarte de forma preventiva a alguien que esté dispuesto a dedicar mucho tiempo y esfuerzo a encontrar una forma de hacer un mal uso de lo que estás diseñando una vez que el producto terminado haya salido de tus manos. De manera efectiva, debe tener las mismas ideas que tendría la otra persona e incorporar mecanismos para derrotar esa línea de pensamiento. Cuanto más complejo es el sistema internamente, más posibles son esas ideas y menos probable es que haya pensado en todo. Cuanto más ponga en marcha para evitar el uso indebido, más complejidad agregará. Es un ciclo vicioso.

    
respondido por el KeithS 07.02.2013 - 00:59
fuente

Lea otras preguntas en las etiquetas