Upload
trandung
View
214
Download
0
Embed Size (px)
Citation preview
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
• 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
• GlosarioGlosario– Trustworthiness
• No exploitablevulnerabilitiesexistNo exploitablevulnerabilitiesexist, eitherofmaliciousorunintentionalorigin
– PredictableExecution• Justifiableconfidencethat software, whenexecuted, functions as intended
– Dependeable
– Safety/Security
Conceptos/Principios/RequisitosConceptos/Principios/Requisitos
• De la INFORMACIONDe la INFORMACION– Confidencialidad
Integridad– Integridad
– Disponibilidad
• 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
• 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
• 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.
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.
- 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”
• Caso Toyota (Safety)Caso Toyota (Safety)
• 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– …
• 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
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
Individuals working on
Linux“You break it, you bought it”
“Happy to fix if it’s my code”
Android Linux
OEM
Companies
• 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
• 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
• Análisis EstáticoAnálisis Estático– Lo Bueno
Lo Malo– Lo Malo
– Lo Feo
• 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
• 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
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
• Á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
• 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
• ¿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
Muchas GraciasMuchas Gracias
Juan Carlos Herrera Marchetti
jcherrera@ushiro‐sec.comjcherrera@ushiro sec.com