¿Los mejores programadores también son potencialmente los mejores hackers?

Depende del significado de la mayoría de las palabras en la oración: mejor (# 1), programador, potencialmente, mejor (# 2), hacker.

Considere al programador de gráficos en profundidad mejor, más especializado, mejor pagado y experimentado que conoce este aspecto del campo con profundidad profunda, capaz de escribir sombreadores mientras duerme y ver el mundo entero en términos de cuaterniones.

Este programador podría ser muy bueno para identificar vulnerabilidades de seguridad en esa área pequeña. Pero probablemente ni siquiera allí. Sus intereses están en los gráficos, no en el campo de seguridad completamente no relacionado.

Por lo tanto, el “mejor programador” puede definir a alguien que es un maestro supremo de su oficio y, sin embargo, no sabe ni un poquito de cómo podría funcionar el insecto sangrado.

Sin embargo, para mí, los “mejores” programadores no son los especialistas, sino aquellos que entienden cómo desarrollar una aplicación desde cero, pensando en términos de DDD, TDD, microservicios, estructuras de datos, patrones de diseño, etc. comprende estas cosas, pero no te dejes llevar por nada; utilizarán un diseño OOP donde tenga sentido, o de procedimiento, o funcional, y se sientan igualmente cómodos en todos los paradigmas informáticos modernos.

Trabajan constantemente para desarrollar su conocimiento y llegar fuera de su zona de confort: comprenderán las tecnologías emergentes que afectan su trabajo, así como el código en sí. Habrán usado Docker, Vagrant, Heroku, VmWare; Mercurial, Git, SVN, CVS; estarán tan contentos en Linux, Mac o Windows, en vim o en un IDE.

Cuando un mal trabajador culpa a sus herramientas, los mejores programadores les dan crédito. Comenta qué tan rápido depuraron y solucionaron un problema, y ​​dicen “sí, ese nuevo depurador realmente me ayudó a llegar directamente al núcleo del problema”: el nuevo depurador que ELLOS encontraron, instalaron y configuraron para funcionar correctamente en la compilación tubería, y aprendió a usar de manera eficiente.

Estos programadores son * amplios *. Carecen de la profundidad de los especialistas, pero pueden descubrir lo que necesitan. Y típicamente, debido a que la seguridad es una de las áreas que impacta su trabajo, lo sabrán, entenderán los problemas y lo tomarán en serio.

Comprenderán, en profundidad, los modos de falla de todas las partes del sistema y cómo encajan y se rompen, y cómo endurecer los puntos débiles. Comprenderán las incompatibilidades y sabrán cómo solucionarlas.

Esta, mi definición de “mejor programador” es también mi definición de “mejor hacker”. Entonces, potencialmente, la respuesta es sí.

Y potencialmente en cambio, te refieres a galleta. Y ahí está el problema. Porque hay algo sobre los mejores programadores. Ellos * saben * que el entorno está hecho de cáscaras de huevo, que la seguridad que les impide acceder a cosas que no deberían es muy delgada. Tienen root en el servidor principal, por el amor de Dios, podrían hacer * cualquier cosa *.

Y, sin embargo, en un cuarto de siglo de programación, trabajando con cientos de programadores, * nunca * he encontrado a nadie por encima del nivel de aprendiz haciendo algo de sombrero negro. Claro, ejecutamos crack, pero eso es para que podamos actualizar los hashes de contraseña de las personas a algo más seguro sin molestarlos con un reinicio. Claro, pirateamos un sitio en Europa, pero eso es porque somos los administradores y se configuró accidentalmente sin acceso externo a la raíz.

Los grandes programadores también saben cómo usar todas las herramientas de sombrero negro, porque eso es parte del área de especialización. Ejecutarán pruebas con sus propias aplicaciones. Entonces, sí, * potencialmente * son un gran problema de seguridad aterrador. Ellos simplemente … no lo hacen. Supongo que todos obtienen lo de “con gran poder viene una gran responsabilidad”.