SPEAKING ENGAGEMENT | Jun 22, 2018

Diego Madero and Alejandro Hernandez to Present at BSidesCDMX Mexico City

IOActive’s Diego Madero, principal security consultant, and Alejandro Hernandez, senior security consultant, to present “Beyond the ‘grep strcpy’ in security code reviews” at BSidesCDMX.  This talk will be presented in Spanish. Mexico City, Mexico

Talk details available in English and Spanish below.

Talk: Beyond the ‘grep strcpy’ in security code reviews

There’s a well-known list of low-hanging fruits when it comes to bug hunting in low level code (mostly C). Nevertheless, there are other type of bugs that are undetectable by automated static analysis tools, and it’s here where the human expertise comes handy.

In this talk we’ll share some unconventional security bugs that we’ve come across in our last code audits. Despite most of these bugs are related to low level programming, some of them apply to high level languages that could be oriented to web or embedded systems.

Amongst the list of bugs to be shown are:

  • Dead store optimizations
  • Structure padding info leaks and type confusion bugs
  • Arithmetic overflows leading to critical problems
  • Wrong logical operators in conditional expressions
  • Unchecked/Wrongly checked return values of critical functions
  • Off-by-ones
  • Uninitialized data info leaks and memory corruptions
  • Screwing up the order of your parameters on basic function calls
  • Unchecked return values leading to mem corruptions / overflows
  • Undefined behavior and security: Pointer arithmetic problems, Zero-size memory allocations
  • Casting a size_t to a unsigned long and vice versa a.k.a portability between LLP64 vs LP64 (Or How to fuck your sizeof()’s)
  • Calloc/fread/fwrite arithmetic (a.k.a don’t do arithmetic on the second argument)
  • assert(), the best friend and worst enemy of developers
  • Case sensitivity/insensitivity bugs

Speaker Biography

Diego and Alejandro have had presence in the Mexican security scene for over 15 years and nowadays work as security consultants for IOActive, where they have had the chance to work in Fortune 500 companies in different countries including Mexico, South Africa, Germany, China, Netherlands, United States, South Korea and England.

 

En Español

Talk: Más allá de ‘grep strcpy’ en revisión de código

En revisiones de código fuente de bajo nivel (lenguaje C) en la búsqueda de fallos de seguridad existe una gran lista de ‘low-hangig fruits’ que son fácilmente detectables. No obstante, existen otro tipos de fallos que son prácticamente indetectables por herramientas automatizadas de análisis estático de código, y es allí donde el ‘expertise’ humano entra en juego.

En esta charla compartiremos varios fallos de seguridad no convencionales con los cuales nos hemos encontrado en los últimos proyectos de auditoría de código fuente en productos usados por millones de dispositivos. A pesar de que explicaremos fallos en código de bajo nivel, varios de estos problemas aplican también a lenguajes de programación de más alto nivel y que pueden ser orientados a tecnologías web y sistemas embedidos.

Esta platica intenta exponer casos reales y patrones encontrados repetidamente en diferente clase de software de bajo nivel. Intentaremos mostrar cómo simples errores que parecen problemas inocentes, lógicos o de simple optimización, pueden causar fallos catastróficos para la seguridad de un producto.

Entre la lista de vulnerabilidades a tratar se encuentran, por ejemplo:

  • Dead store optimizations
  • Structure padding info leaks and type confusion bugs
  • Arithmetic overflows leading to critical problems
  • Wrong logical operators in conditional expressions
  • Unchecked/Wrongly checked return values of critical functions such as read()/write()
  • Off-by-ones everywhere
  • Uninitialized data infoleaks and memory corruptions
  • Screwing up the order of your parameters on basic function calls
  • Unchecked return values leading to mem corruptions / overflows
  • Undefined behavior and security: Pointer arithmetic problems, Zero-size memory allocations
  • Casting a size_t to a unsigned long and viceversa, Portability between LLP64 vs LP64 (Or How to fuck your sizeof()’s)
  • Calloc/fread/fwrite arithmetic (a.k.a don’t do arithmetic on the second argument)
  • La confusion del assert(), el mejor amigo y el peor enemigo de los developers
  • The importance of understanding case sensitivity/insensitivity

Biografía Del Orador

Alejandro y Diego han tenido presencia en la escena de la seguridad informática en México por más de 15 años y actualmente son consultores de seguridad en la firma IOActive donde han trabajado en proyectos en compañías Fortune 500 en diferentes países incluyendo México, Sudáfrica, Alemania, China, Países Bajos, Estados Unidos, Corea del Sur e Inglaterra.

Siempre han tenido gusto por la programación y fallos de seguridad en bajo nivel, los cual les ha dado la oportunidad de presentar en conferencias de seguridad en diferentes países.