¿Cómo abordan los investigadores de seguridad las recompensas de errores?

Esto es lo que lo hace un buen investigador de seguridad, o un remitente de recompensas de errores de primer nivel.

  1. Los investigadores de seguridad primero deben comprender una tecnología con suficiente dominio para manejar esa tecnología para su propósito previsto.
  2. El investigador debe estar bien calibrado sobre cómo la tecnología puede tener consecuencias en la vida real en un individuo, siendo financiera, emocional, centrada en la privacidad, violenta, etc.
  3. Por último, el investigador debe ser capaz de doblar y flexionar la tecnología para lograr resultados que estén fuera de las expectativas y el uso normal de esa tecnología.

Aquí hay un ejemplo de este modelo que usa el reciente error Heartbleed: TLS heartbeat read overrun

  1. Es probable que Neel Mehta comprenda a fondo los lenguajes de programación en C, la administración de memoria en los sistemas operativos modernos, la aritmética de punteros, la programación de red, el cifrado, etc. un equipo de sus propios clones)
  2. Neel entiende que los datos protegidos por OpenSSL tienen el potencial de impactar profundamente a las personas de manera negativa si esta protección se elimina de una manera u otra. Por lo tanto, lo apunta sabiendo que es una prioridad de investigación.
  3. Al investigar los comportamientos de la nueva funcionalidad ‘heartbeat’ en OpenSSL que solo alguien con un conocimiento profundo del software podría identificar, Neel puede usar estos conjuntos de habilidades disponibles para que se comporte de manera impredecible y para su deseo específico de leer una clave privada u otra memoria.

Mi experiencia personal con la ejecución de varios programas importantes de recompensas me ha demostrado que los que presentan errores más fuertes a veces no se identifican como investigadores de seguridad. Son simplemente ingenieros fuertes que trabajan muy estrechamente con un código específico o tecnología durante mucho tiempo y se dan cuenta de que los resultados impredecibles son posibles y explotables. Este nivel de intimidad con una tecnología específica puede rivalizar con lo que algunos investigadores de seguridad están dispuestos a comprometerse, y puede tener mejores resultados al encontrar exploits más creativos. He visto, una y otra vez, que los ingenieros que no se relacionan con las identidades de “investigador de seguridad” descubren y envían errores críticos. Sin embargo, este es un punto secundario interesante, no necesariamente relevante para su pregunta. Simplemente es el mejor tipo de investigador.

Dado que está en camino de aprender sobre seguridad, mi sugerencia es comenzar cualquier proyecto que sea grande y complejo para sus estándares con cualquier lenguaje de programación o pila de desarrollo con el que esté familiarizado, y luego familiarizarse con los ataques comúnmente conocidos contra el apilar que has elegido. Disfruta destrozando tu trabajo. Luego, tenga en cuenta, lamentablemente, que la mayor parte de Internet se construyó de la misma manera que su proyecto original.

Enjuague, piratee y repita.

También: Honeypots. Estoy haciendo un proyecto de último año para mi licenciatura en seguridad informática. ¿Qué tipo de proyecto o sistema sería un gran sistema para desarrollar?

Compartiré mi experiencia personal. Soy un ingeniero de software que vive en Francia, tengo una maestría en ingeniería de software y actualmente trabajo como desarrollador de pila completa en la industria de las telecomunicaciones.

Me encanta la sensación cuando logro resolver una tarea compleja, puede ser piratear o implementar un algoritmo complejo, sin embargo, la sensación es gratificante.

Lo que siempre debe tener en cuenta (cuando está deprimido) es que siempre hay una vulnerabilidad, solo tiene que encontrarla. Realmente, nada es seguro, por lo que en algún momento habrá una vulnerabilidad. Mantenlo en mente.

Elijo un sitio web o un producto que me encanta y me convierto en un “experto” al respecto. Estudio todo el producto, sigo cada enlace para tener una visión general del alcance. Al final, usted sabe exactamente la cantidad de servidores, dominios, subdominios, productos, subproductos, blog, api, aplicaciones …

Luego empiezo a probar la funcionalidad después de la funcionalidad, generalmente comienzo donde es posible un error humano. Como soy un desarrollador, sé que algunas cosas generalmente serán manejadas por un marco y otras serán desarrollos personalizados (las reglas de negocios, por ejemplo). Estos desarrollos personalizados son donde empiezo.

Probaré todo, cada posible caso de prueba para cada funcionalidad. Al igual que las pruebas unitarias, la cobertura de la prueba debe ser buena. Si tiene una identificación, por ejemplo, intentará: -1, 0, 1, cadena, json, identificación de su segundo usuario, conectado, no conectado, conectado pero cuenta no activada, csrf, xss, sqli …

Tomará una gran cantidad de tiempo, pero a medida que te conviertas en un experto, sabrás instantáneamente si algo es normal o no, como una pequeña campana en tu cabeza. Cuanto más pruebo, más ideas tengo y generalmente las sigo. A menudo encontré algo no relacionado con mi caso de prueba inicial. Una vez que haya seguido todas sus ideas, regrese a su caso de prueba inicial y continúe.

En algunos casos, comenzará a encontrar algo y luego continuará, cuanto más se convierta en un experto en el producto, más errores encontrará.

El primer consejo es que nunca te rindas, realmente, no lo hagas. El segundo consejo es ser perfeccionista, buscar los problemas en los pequeños detalles. Siga a los piratas informáticos, lea las publicaciones de su blog y lea algunos libros sobre pruebas de pluma

Sobre la parte de envío, sea profesional, es difícil encontrar un error, así que haga un informe detallado y bien escrito. Sé respetuoso y educado. En general, confíe en el equipo, si dicen que no es un error y está seguro de que entendieron correctamente el problema, no discuta. Ambos perderán tiempo. No discuta la recompensa, no sea impaciente, no “enfurezca”, no evalúe en exceso el impacto. Será más agradable si tienes una buena relación con el equipo secundario.

Ahora solo tienes que seguir buscando 🙂