31
Incorporando la Seguridad de la Información al Desarrollo de Información al Desarrollo de Software Juan Carlos Herrera Marchetti VP Research&Development VP Research&Development UshiroLabs U hi S it d Cl bi UshiroSecurity de Colombia

Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Embed Size (px)

Citation preview

Page 1: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Incorporando la Seguridad de la Información al Desarrollo deInformación al Desarrollo de 

SoftwareJuan Carlos Herrera Marchetti

VP Research&DevelopmentVP Research&Development

UshiroLabs

U hi S it d C l biUshiroSecurity de Colombia

Page 2: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Agenda • Temas no cubiertosAgenda– Estado del Arte

• Casos de Estudio

Temas no cubiertos– Criptografía

– Privacidad• Desmitificación

– Principios, Métodos y Técnicas

– Aspectos Legales• Excepto menciones

d l íTécnicas• Problema de Fondo

• Desarrollo de Software S

– Metodologías• Excepto menciones

Seguro

– Soluciones• A gran escala

• Casos de Estudio

Page 3: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• GlosarioGlosario– Trustworthiness

• No exploitablevulnerabilitiesexistNo exploitablevulnerabilitiesexist, eitherofmaliciousorunintentionalorigin

– PredictableExecution• Justifiableconfidencethat software, whenexecuted, functions as intended

– Dependeable

– Safety/Security

Page 4: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Conceptos/Principios/RequisitosConceptos/Principios/Requisitos

• De la INFORMACIONDe la INFORMACION– Confidencialidad

Integridad– Integridad

– Disponibilidad

Page 5: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Principios de Seguridad de la InformaciónPrincipios de Seguridad de la Información– Confidencialidad

Integridad– Integridad

– Disponibilidad

A li d l S ft• Aplicados al Software– La información VIVE en el software

• Mas allá de los datos

• Mas allá de los hackers

Page 6: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 7: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• TiposTipos– Diseño/Arquitectura

Código (Lógica Practicas)– Código (Lógica, Practicas)

• Desconocidos– Procesos de Negocio, Algoritmos, etc.

• Conocidos– OWASP/SANS/CWE

– Los mismos de siempre (Cero innovación!)

– INACEPTABLES

Page 8: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• De acuerdo al sumario que se abrió en su oportunidad en contra del magistrado, habría incurrido en irregularidad al manipular el Sistema Informático de los Tribunales de Familia (Sitfa) para radicar su causa en el juzgado.

Page 9: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Michelsonaplicó un complejo sistema que permitió defraudar a la entidadfinanciera, la que consistía en girar cheques propios y al mismo tiempo darlesorden de no pago por extravío. Luego, el imputadodepositaba los documentosp g p g , p pen cajeros automáticos y por un "déficit del sistema informático" del banco,estos dineros eran ingresados a su cuenta y, finalmente, retirados porventanilla.

Page 10: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

- El 15 de Julio del 2009Josh Muszynski, compro los cigarroscompro los cigarros mas caros de la historia!

- La transacción fue repetida 13.000 veces

- Explicación de VISA:Explicación de VISA: “temporaryprogramming error at Visa DebitProcessingServic

”es”

Page 11: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Caso Toyota (Safety)Caso Toyota (Safety)

Page 12: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 13: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 14: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 15: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 16: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Por que ocurren los defectos?Por que ocurren los defectos?

• HabilidadesC i i t P ti P ió M l dí t– Conocimiento, Practicas, Presión, Mal día, etc

• Lenguajes– Defectuosos, Mal diseñados, incompletos

• Mitos– …

Page 17: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Como toda creación • Nosotros no tenemosComo toda creación humana, el software no es mágico, tampoco 

Nosotros no tenemos problemas de seguridad

• Tenemos Firewallsdebe ser misterioso.– Pero si es complejo y 

t d t

• La Seguridad del Software es un 

extremadamente poderoso

• Los computadores

problema de otro

• “Bala de Plata”Los computadores tienen virus– Falso, los sistemas 

• La Seguridad es muy cara!

operativos tienen virus • El código de terceros es seguro

Page 18: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 19: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions
Page 20: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

I t l P j t

Project 1 Project 2Outsourcing

PartnersOutsourcing

Partners

Internal Projects

Third Party SoftwareThird Party SoftwarePartnersPartners Software VendorsSoftware Vendors

Third Party Software Vendors

Third Party Software Vendors

OpenSource

OpenSource

VendorsVendors

Page 21: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Individuals working on 

Linux“You break it, you bought it”

“Happy to fix if it’s my code”

Android Linux

OEM

Companies

Page 22: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• ResourceLeaks • Memory‐corruptions• Programhangs • Insecure data handling– Memoryleaks

– Resourceleak in object

– Incomplete delete

– Microsoft COM BSTR memoryleak

• Uninitialized variables

– Out‐of‐boundsaccess

– Stringlengthmiscalculations

– Copyingtodestinationbufferstoosmall

– Overflowedpointerwrite

– Negative array indexwrite

• Infinite loop

• Doublelockormissingunlock

• Negativeloopbound

• Integeroverflow

• Loopbound by untrustedsource

• Write/read array/pointerwith• Uninitialized variables

– Missingreturnstatement

– Uninitializedpointer/scalar/array read/write

– Uninitialized data member in classorstructure

• ConcurrencyIssues

– Allocationsize error

• Memory‐illegalaccess– Incorrectdeleteoperator

– Overflowedpointerread

– Out‐of‐boundsread

• Threaddeadlock

• sleep() while holding a lock

• Nullpointerdifferences

untrustedvalue

• Formatstringwithuntrustedsource

S i b i i l i• ConcurrencyIssues– Deadlocks

– Raceconditions

– Blockingcallmisuse

• Integerhandlingissues

Out of boundsread

– Returningpointerto local variable

– Negative array indexread

– Use/readpointerafter free

• Control flowissues

• Dereferenceafter a null check

• Dereference a nullreturnvalue

• Dereferencebefore a null check

• Security best practicesviolations

• Possible buffer overflow

• Copyinto a fixedsize buffer

lli i k f i• Integerhandlingissues– Improper use ofnegativevalue

– Unintendedsignextension

• Improper Use ofAPIs

– Logicallydeadcode

– Missingbreak in switch

– Structurallydeadcode

• Error handlingissuesU h k d t l

• Codemaintainabilityissues

• Multiplereturnstatements

• Unusedpointervalue

• Callingriskyfunction

• Use ofinsecuretemporary file

• Time of check differentthan time of use– Insecurechroot

– Usinginvaliditerator

– printf() argumentmismatch

– Uncheckedreturnvalue

– Uncaughtexception

– Invalid use ofnegative variables• Performance inefficiencies

• Largestack use

of use

• Userpointerdereference

Page 23: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Base Técnica/Científica • ¿Todas las anteriores?/– Software 

Certification/Assurance

• Soluciones

¿– ¿Por que no?

• Soluciones– Revisión de Código

• No escala

– HackingEtico/PenTest• Caja Negra

– Métodos Formales• Caro y Lento

– Historia!

– SMT

– Análisis Estático• Soundness &Completeness

Page 24: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Análisis EstáticoAnálisis Estático– Lo Bueno

Lo Malo– Lo Malo

– Lo Feo

Page 25: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Análisis Estático en la PracticaAnálisis Estático en la Practica– Experiencia

• 125 Proyectos Open Source125 Proyectos Open Source

• 27 Clientes (NDA)

• 57 millones de líneas de códigog

• Casos Atendidos– Severos Problemas de PerformanceSeveros Problemas de Performance

– Victimas de “Hackers”

Caídas de Sistemas– Caídas de Sistemas

Page 26: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Caso: Cliente Hackeado (Por ellos mismos)Caso: Cliente Hackeado (Por ellos mismos)

• Consultora Especializada en Seguridad reporto las siguientes Vulnerabilidades:las siguientes Vulnerabilidades:– Acceso No Autorizado

Ej ió A bi i d Códi– Ejecución Arbitraria de Código

– Denegación de Servicio

Page 27: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Acceso No Autorizado Ejecución Arbitraria de Código Denegación de Serviciocceso o u o ado j g e egac ó de Se c o

MemoryReadOut ofBounds

MemoryWriteOut ofBounds

ResourceLeaks ProgramCrash ProgramHang

OverrunsofArraysandIterators

User inControl ofFormatString

PointerProblems

MemoryManagementProblems

IncorrectArithmeticExpressions

Use ofUnitializedVariablesg p

Page 28: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Áreas de AplicaciónÁreas de Aplicación– Detección Temprana de Defectos

Detección de Fraudes y Auditoria de Código– Detección de Fraudes y Auditoria de Código

– Descubrimiento de Reglas de Negocio

T f ió d L j /P– Transformación de Lenguajes/Procesos

– Medir Impacto en cambios

C l d P lí i /R l i L l– Control de Políticas/Regulaciones Legales

– Análisis de Arquitectura 

• Ingeniería Reversa– Violaciones de Derechos de Autor

Page 29: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• Demostración: Como funciona el AnálisisDemostración: Como funciona el Análisis Estático– DNA– DNA

– Path Analysis

SAT Solvers– SAT Solvers

– Prune False Paths

R l d A áli i P O S• Resultados Análisis Proyectos Open Source

Page 30: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

• ¿Solución?¿Solución?– Secure& Lean Software Development

• No es fabricar software como Toyota lo haceNo es fabricar software como Toyota lo hace– Ya sabemos que no es perfecto

• Fabricar Software en base a principios– No seguir reglas y estándares a ciegas

» Por que mi Jefe lo dice o algún “estándar” lo dice

• Preocupación por lo importante• Preocupación por lo importante– Personas

– Agregar Valor 

Page 31: Incorporando la Seguridad de la Información al Desarrollo de · cara! operativos tienen virus • El código de terceros es ... Memory Management Problems Incorrect Arithmetic Expressions

Muchas GraciasMuchas Gracias

Juan Carlos Herrera Marchetti

jcherrera@ushiro‐sec.comjcherrera@ushiro sec.com