El concurso 2015 llamado Underhanded C Contest se ha lanzado ya, en donde la meta para ganar es escribir código que se vea inocente (en lenguaje C), que sea leíble, claro y aparentemente confiable, pero que implemente una función maliciosa. Este concurso lleva ya 8 años y continúa creciendo en popularidad. Aparentemente hay muchos programadores que ven como un reto muy interesante esconder código malicioso en lo que debería ser código limpio, fácil de leer y confiable.

La idea es pues que el código fuente se vea de forma tal que cualquier otro programador pudiese leerlo y no observar ningún problema. Al mismo tiempo, el código debe hacer algo ‘malicioso’. En retos anteriores por ejemplo, se han incluido programas que no cuentan los votos correctamente, lavan dinero de transacciones financieras y filtran información a terceros. En esta ocasión el reto es dar respuestas falsas a pruebas sobre material nuclear fisionable. La gente que organiza este concurso está cooperando con la Iniciativa de Amenaza Nuclear, una organización sin fines de lucro que trabaja para reducir las amenazas de armas químicas, biológicas y nucleares.

En el mundo real, la necesidad de monitorear y vigilar las armas nucleares, y verificar que cuando los países han decomisado o destruido material nuclear, lo hagan, es un reto obviamente muy serio. En un mundo menos serio, el reto es verificar datos mostrando la presencia o ausencia de material fisionable. El truco es que el código debe dar un resultado incorrecto mostrando que hay material fisionable cuando no lo hay. Como se explica en el concurso:

«Dos países, la Gloriosa, Popular y Democrática República de Alicia y la Gloriosa, Popular y Democrática República de Roberto, llegaron a un acuerdo para un tratado de desarme nuclear. En la práctica esto se implementó con inspectores nucleares visitando cada país y verificando la presencia de material fisionable como el Plutonio como cabeza nuclear, al punto que dicha cabeza podía destruirse«.

Desafortunadamente, ninguna de las partes quiere que los inspectores del otro país vean datos como radiogramas o espectros de rayos gama del objeto bajo prueba porque podrían dar demasiada información. En lugar de eso, los países se pusieron de acuerdo en desarrollar un programa de computadora que tomara el resultado de un escaneo, y determinar, si ocurría un patrón de referencia, para dar como salida solamente «sí» o «no». La parte del reto es entonces que el programa del concursante regrese con precisión sí o no, pero debería ser capaz de mostrar si el material nuclear está presente incluso cuando no lo está. La respuesta incorrecta debería solamente ser dada bajo circunstancias específicas, esencialmente bajo el control del programador. El código para esto debe ser difícil de detectar y se ganan puntos si el código malicioso pudiese pasar como un error inocente de programación.

Como siempre, hay puntos extras por bugs (errores) irónicos, con humor, etcétera. El código necesita ser mandado antes de noviembre 15 y el ganador del concurso recibira 1000 dólares. NTI está contribuyendo al concurso ofreciendo el premio y planendo un nuevo concurso después de que éste termine.
Referencias:

Underhanded C Contest 
i-programmer