Por qué debería decir sí a los programas de recompensas por errores

Los programas de recompensas por errores son una alternativa fantástica para ayudar a su equipo de control de calidad a crear software mejor y más seguro.

Imagem em destaque

1 de agosto de 2013. Knight Capital Group abrió su negocio comercial. Con más de 1.400 empleados, Knight era el mayor operador bursátil de Estados Unidos, con una cuota de mercado del 17,3% en la Bolsa de Nueva York y del 16,9% en el NASDAQ. Para cualquier corredor, trabajar en un lugar como Knight Capital sería un sueño.

Pero hoy no fue como cualquier otro día. A las 9:00 horas, cuando la Bolsa de Nueva York abrió al público, el primer inversor minorista del día dio una instrucción para interactuar con el mercado. Sólo 45 minutos después, el software de Knight Capital había ejecutado más de 4 millones de transacciones, lo que le hizo perder a la empresa 460 millones de dólares y dejarla al borde de la quiebra.

¿Qué sucedió? Como la mayoría de las catástrofes, fue una desafortunada cadena de acontecimientos que tuvieron que ver con el código informático. El día anterior, el equipo de desarrollo lanzó una actualización de su entorno de producción. En la superficie, nada importante, pero el error involuntario que se implantó fue una bomba de tiempo.

Los errores pueden variar desde levemente molestos hasta francamente destructivos. A veces se los ve como una peculiaridad de una pieza de tecnología, de la misma manera que la comunidad JavaScript ha aceptado que su enfoque bastante bizantino hacia los flotadores es parte de su encanto.

Otras veces, los errores pueden ser devastadores y afectar a millones de usuarios en todo el mundo. Un ejemplo de ello es el desastre de Log4j que dejó a la comunidad tecnológica en pie de guerra durante semanas.

Para aquellos que no lo saben, Log4j es una de las utilidades de registro basadas en Java más populares del mercado. Se encontró un exploit que permitía a terceros ejecutar código de forma remota en una computadora específica, permitiéndoles robar datos o instalar malware.

¿Qué tan grande era el problema? Akamai Technologies informó más de 10 millones de intentos de explotar el error por hora solo en los EE. UU., considerando que compañías como Apple, Amazon y Twitter confían en Log4j, puede comenzar a tener una idea de cuán sensible era esto.

Pero ¿qué es un error?

Un error de software es un error o falla en el software de la computadora que hace que produzca un resultado incorrecto o inesperado o que se comporte de manera no deseada. Contrariamente a la creencia popular, un error no es necesariamente causado por escribir un código incorrecto (aunque no podemos estar en desacuerdo con que esta sea una de las causas principales).

Consideremos, por ejemplo, el Climate Orbiter de la NASA , el proyecto de 125 millones de dólares que se estrelló y se quemó en la superficie de Marte. ¿La razón? Una parte del software calculó la fuerza que debían ejercer los propulsores en libras de fuerza. Mientras que otro leía los datos asumiendo que estaban en el sistema métrico.

De forma aislada, cada fragmento de código hacía lo que estaba previsto. El problema fue una falta de comunicación; los consultores de ingeniería de Lockheed Martin Astronautics en Colorado analizaron los números pero olvidaron convertirlos al sistema métrico. La NASA, por otro lado, asumió que los cálculos se hacían en newtons por metro cuadrado, ya que ese era el estándar.

Otro ejemplo, el error de Knight Capital se debió a algún código heredado que nunca se eliminó de sus sistemas, uno de los indicadores que vino con la actualización activó el código antiguo e hizo que el software que estaba en un entorno de prueba, luego intentara procesarlo. tantas operaciones como sea posible.

En una revisión de los eventos, la investigación encontró que Knight Capital no tenía revisiones formales del código ni un departamento de control de calidad. En otras palabras, no se asignó a nadie para comprobar posibles errores. No tenían suficientes salvaguardias.

Desafortunadamente, los departamentos de control de calidad, ingeniería de DevOps, pruebas de software y revisiones de código no son suficientes para prevenir errores. En el mejor de los casos, a veces sólo podemos detectar errores a medida que ocurren en producción e intentar solucionarlos lo más rápido posible.

La perspectiva externa

El software se desarrolla en un entorno muy específico, entre tener que cumplir con los requisitos del usuario, trabajar para cumplir con una fecha límite, alinear su flujo de trabajo con el de otros desarrolladores y tener que responder a cambios de último momento, los errores pueden pasar desapercibidos.

Como dice el refrán, en retrospectiva es 20/20, revisar el código después del hecho es una bestia muy diferente a hacerlo bajo presión. Todos los desarrolladores de software revisaron el código que crearon en el pasado y se dieron cuenta de que podrían haberlo hecho mejor. Eso es fácil de decir cuando no son las 4 de la mañana y tienes 10 horas antes de ir a producción.

Los usuarios, por otro lado, interactúan con nuestros productos en un entorno diferente. Pueden usarlo cuando quieran, en su propia plataforma. Como tal, no es raro que los usuarios encuentren errores.

Para un usuario, los errores pueden variar desde extravagantes hasta francamente frustrantes, pero ¿qué pasa si hay una manera de que los errores beneficien a los usuarios, a la comunidad de programación y a nosotros mismos?

Ingrese a los programas de recompensas por errores

Un programa de recompensas por errores es un acuerdo ofrecido por muchos sitios web, organizaciones y desarrolladores de software mediante el cual las personas pueden recibir reconocimiento y compensación por informar errores, especialmente aquellos relacionados con vulnerabilidades de seguridad.

Bug Bounty es extremadamente popular y lo utilizan algunas de las empresas de tecnología más importantes del sector, incluidas Twitter y Google. Incluso el gobierno de Estados Unidos recompensa a las personas que informan sobre vulnerabilidades de seguridad en sus sitios web.

Docenas de sitios agregados mantienen una lista de programas Bug Bounty activos y comunidades enteras han crecido a su alrededor. ¿Por qué son tan populares?

Bueno, el desarrollo de software es uno de esos campos en los que un millón de mentes son mejores que una. Hay muchas pruebas que un desarrollador puede realizar por sí solo. Al pedir ayuda a la comunidad, los usuarios y programadores pueden probar casos extremos en busca de posibles errores y vulnerabilidades de seguridad.

Alienta a las personas con conocimientos a que le ayuden a proteger su producto en lugar de explotar posibles debilidades. Es un esfuerzo democrático para crear software mejor y más seguro.

De hecho, algunos desarrolladores jóvenes han logrado encontrar puestos en empresas gracias a programas de recompensas por errores. Pudieron mostrar su talento de primera mano y demostrar que comprenden la programación, las prácticas de seguridad y la cultura de desarrollo de software.

Para una empresa, configurar un programa de recompensas por errores es relativamente fácil. Nuevamente, hay docenas de sitios que enumeran programas abiertos y es solo cuestión de publicar su propio proyecto y también ofrecer una recompensa que se alinee con el tamaño y alcance de su negocio.

Basta decir que los programas de recompensas por errores no son un control de calidad ni una alternativa a algo como DevSecOps, es un programa que existe junto con sus propias medidas de seguridad. Su máximo potencial sólo puede explorarse si ya estamos haciendo todo lo posible para crear el mejor software posible.

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.