Evaluar Conozca los pros y contras de las tecnologías, productos y proyectos que está considerando.

Código C publicado en Twitter: (in)seguro, divertido y peculiar

En las redes sociales, #include no es una directiva sino un hashtag más. Pero la gente suele publicar código en C incluyendo la directiva #include.

Como quizás saben, la directiva #include es utilizada por el preprocesador de C para incluir ciertas porciones de código, estructuras de datos, definiciones de tipos de datos y otras cosas, que usualmente se encuentran en librerías externas.

Por otro lado, un hashtag es una palabra o frase sin espacios precedida por el signo de #, y este sirve para agrupar mensajes, tweets, fotografías u otros elementos en redes sociales referentes a un mismo tópico.

Por lo tanto, en el ciberespacio, específicamente las redes sociales, #include no es una directiva, más bien, es un hashtag más.

Habiendo dicho eso, la otra noche durante mi insomnio me preguntaba si la gente publicaba código en C incluyendo la directiva #include, así que decidí escabullirme entre cientos de tweets con el hashtag #include, vaya sorpresa. En pocos segundos mi pantalla se llenó de tweets de gente expresando su emoción con sus primeros “Hello World!”s así como también otras peculiares líneas de código, motivo principal de este pequeño artículo.

Diviértanse: https://twitter.com/search?f=realtime&q=%23include&src=typd

Aquí algunos tweets que acapararon mi atención (comentados con una pizca de sarcasmo):

1. Saturación accidental

¿Quién dijo Buffer Overflow? ;-D (Explicación: El búfer s puede soportar hasta 100 bytes, pero la función scanf() le pide al usuario una cadena de caracteres, y si este introduce más de 100 caracteres, voilà, desbordamiento de búfer):

https://twitter.com/ryuujinzoku/status/503963506920923136


2. La memoria más rápida del Oeste

Puedo probar que reservo y libero memoria tan rápido como Chuck Norris jala el gatillo. (Explicación: la función malloc() sirve para reservar memoria dinámica, y si esta función no falla, devuelve un puntero con la dirección de memoria lista para ser usado. Una vez que el puntero no es utilizado más en el programa, este se pasa a la función free() para liberar la memoria y así otros programas hagan uso de ella. En este caso, sencillamente se reservó y liberó enseguida, algo sin sentido. ):

https://twitter.com/hukushu_ramen/status/503915580483579906

3. El eliminador

El diablo está en Twitter }:-) (Explicación: la función setuid(0) sirve para elevar privilegios a usuario administrador y posteriormente se ejecuta el comando del sistema operativo “rm –fr /”, el cuál prácticamente es “borrar todo a partir del directorio raíz”):

https://twitter.com/YVT/status/503474782789050368

4. La gota que derramó el vaso...

A ella le gusta strcpy(), denle más strcpy()♫. (Explicación: La función strcpy() es conocida por ser insegura, ya que simplemente copia el contenido del búfer apuntado en el 2º parámetro hacia el búfer apuntado por el primer parámetro sin verificar si el tamaño el primer búfer es mayor o igual al 2º. Esto causa desbordamiento de búfer si el programador no hace una verificación de tamaños. ):

https://twitter.com/madoka_rinu/status/473022963059421185

5. La fórmula errónea

Este no es código como tal, pero estoy muy seguro que ese Warning: fue porque los signos de porcentaje en el texto de la noticia, 10% y 5%, fueron pasados a través de sprintf(), el cuál evidentemente esperaba dos variables extra para hacer uso de dichos "format strings":

https://twitter.com/iPhoneplaneta/status/378329901079621632

6. Desbordamiento de ¿qué?

Y algunos otros que conocen las deficiencias de dichas funciones, simplemente hacen bromas al respecto… Butt Overflow (Desbordamiento de trasero) por @jduck:

https://twitter.com/jduck/status/502112077214142464

7. Codificando con hambre...

O este emoji Sushi Overflow que hice hace unos meses el cuál nunca compilará ($stomach, me confundí con las variables con $ en PHP ):

https://twitter.com/nitr0usmx/status/488749060841414657

8. El búmerang regresa

Ironía...

https://twitter.com/madiemmie/status/460259495625515008

9. La ostentación

Puedo borrar las capturas de pantalla de mi escritorio con un programa en C simplemente porque puedo. (Explicación: Es como ir a la tienda de la esquina en un Rolls-Royce Phantom cuando simplemente puedes ir a pie. ):

https://twitter.com/Wp120_3238/status/503929231143759872

10. Cena por internet

Quiero algo de esta cena peculiar la cual nunca compilará (printf(" ); ¿sin comillas de cierre ni cadenas de formato? ):

https://twitter.com/LunarChanyeol/status/504160998614241280

11. La cerveza fallida

Eso sí, acompañado de un tarro grande de cerveza.h:

https://twitter.com/Chris_Gammell/status/65926440037785600

12. El nuevo malware

Autores de virus están por todas partes:

https://twitter.com/ObeyRana/status/490863552769830912

13. El creador de novias

Y uno sobre novias y dinero, ¿por qué no?:

https://twitter.com/rajnish12144/status/503138642911821824

14. Borrado automático

¡Vaya¡ ¡Qué programador tan listo! (Explicación: \r es el caracter de retorno de carro, es como presionar la tecla de retroceso y borrar lo escrito a la izquierda).

https://twitter.com/optshiftk/status/480769923770118149

15. El de las dudas

Alguien necesita ayuda…

https://twitter.com/ZhareefAimullah/status/407925173849833472

16. Zzzzzz

Alguien se dormía en clases…

https://twitter.com/jeymileyyy/status/502079076023017473

17. El mensaje general

Y para finalizar:

https://twitter.com/btomonstr/status/504460340474937344

Después de leer varios tweets más, creo que sería una buena y divertida idea, implementar un robot de Twitter para que automáticamente obtenga código a través del hashtag #include, se lo pase a la herramienta FlawFinder (http://www.dwheeler.com/flawfinder/) para encontrar fallos de seguridad y finalmente twittear dichos los fallos encontrados en formato de 140 caracteres.

Sigan programando y twitteando su código ;-)

@nitr0usmx

Sobre el autor: Alejandro Hernández es consultor de seguridad informática con 11 años de experiencia. Actualmente trabaja en una firma consultora internacional donde ha tenido la oportunidad de trabajar con clientes de Fortune 500 en diferentes países. En su tiempo libre es entusiasta de la programación y del fuzzing (detección automática de nuevas vulnerabilidades), lo cual le ha dado la posibilidad de participar en eventos como BlackHat USA Arsenal (EUA), BugCON (Mexico), Campus Party (Colombia y México), entre otros.

Profundice más

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

- ANUNCIOS POR GOOGLE

Close