Securizando por construcción mediante MDE

Pedro J. Molina
Pedro J. MolinaFounder at Metadev en Metadev
Securizando por construcción
mediante MDE
Dr. Pedro J. Molina
http://pjmolina.com
@pmolinamhttps://metadev.pro #supersec
Pedro J. Molina
Modelado y generación de código
DSLs
Arquitecturas de SW Empresarial
Desarrollo de software de Gestión
HIVEPOD
Securizando por construcción mediante MDE
Agenda
Seguridad en desarrollo de aplicaciones
Desarrollo convencional
Desarrollo con MDE / MDD
Seguro por Construcción
Ejemplos Industriales
Seguridad
 Atributos de Seguridad
 Control de acceso
 Control de la información
 Control de privilegios en el sistema y su cumplimiento
 Software se usa para lo que fue concebido
 Cumplimiento de normativa
 Legal
 Privacidad
 Accesibilidad
Cumplimiento de reglamentación
 Accesibilidad
 A* / Section 503
 Seguridad
 Segregación de responsabilidades: Sabarney Oxley
 Tratamiento de tarjetas de crédito: PCI/DSS
 GPRD / Privacidad / Gestión de datos personales
Introducción a Seguridad para Desarrolladores
Jose A. Bautista
http://jbautistam.com/Articulos/Seguridad/Charla-seguridad-programadores.htm
Desarrollo convencional
 Cascada
 Requisitos ± claros
 Gobernado por un Project y
metodología (ej. CMMI)
 Foco en optimización de costes
 Defensa, Automoción,
Aeroespacial, Hardware
Analysis Design Develop Test Deploy
feedback
Desarrollo ágil
 Iterativo
 Requisitos ambiguos o cambiantes
 Scrum, Kanban, XP
 Foco en entrega de valor temprana
y continua
 Software empresarial, mercados
dinámicos, Startups
Analysis Design Develop Test Deploy
feedback
Desarrollo con MDE
Model Driven Engineering
 “El uso de modelos durante la construcción de software.”
 Algunos usos: prototipación, formalización, animación, verificación, o
automatización de parte o totalidad de procesos de construcción.
 Transformación de modelos para construcción de artefactos SW.
Analysis Design Develop Test Deploy
feedback
MDE. Casos de uso
Model
Checker
Model
1. Validation
Report
Interpreter
Model
Runtime
interpretation
2. Interpretation
Code
Generation
Model
3. Code Generation
Generated
Code
Code
Metadata
Doc
Config.
Tests
...
Textual Model Editor
Model(s)
Visual Model Editor
IDE
Model Checker
Model Transformation
Model
M2M M2T
Code
Doc, etc.
Reverse
Engineering
Metamodel(s)
Model
repository
Marco de referencia MDE
Nivel de abstracción adecuado al dominio
Workflow workflow = new Workflow()
{
Name = "Set closeprobability on opportunity create (async)",
Type = new OptionSetValue((int)WorkflowType.Definition),
Category = new
OptionSetValue((int)WorkflowCategory.Workflow),
PrimaryEntity = Opportunity.EntityLogicalName,
Mode = new OptionSetValue((int)WorkflowMode.Background),
Description = @"When an opportunity is created, this" +
" workflow sets the closeprobability field of the
opportunity record to 40%.",
OnDemand = false,
Subprocess = false,
Scope = new OptionSetValue((int)WorkflowScope.User),
TriggerOnCreate = true,
AsyncAutoDelete = true,
Xaml = xamlWF,
};
_workflowId = _serviceProxy.Create(workflow);
var activateRequest = new SetStateRequest
{
…
Generación de código
 Automatiza procesos aburridos, fontanería repetitiva
 Evita errores humanos de codificación
 Garantiza calidad por construcción
 Enfoque:
1. Regla de Pareto.
 Resolver el 80% de los casos de modo automático
 Permitir extender y realizar en código el 20% restante
2. Forward Engineering (no ingeniería inversa)
3. Separación de artefactos generados y creados manualmente para permitir
su regeneración / evolución
 No se trata de eliminar al humano, sino de una herramienta más
Marco de trabajo en Generación de Código
Metamodel
Model
Templates
Code
Transformations
Higher Abstraction Level Lower
InstancesTypes
Code Generator
Código en MDE
Model Gen. Code
Code Generator
Manual Code
+
Product
Gen. Tests
Manual Tests
Model
Checker
80%
20%
Características de la generación de código
Pros
 Sin errores manuales
 Determinista: misma entrada 
mismo resultado
 Predecible
 Rápido, efectivo
 Certificable respecto a
cumplimiento de normativa
Contras
 Código no creativo (instanciado
a partir de un conjunto de
plantillas)
 Subóptimo en algunos casos
 Limitado a la expresividad del
modelo
Código descartable. El valor está en el modelo y en el generador de código.
Respuesta ante una vulnerabilidad
Model Gen. Code
Code Generator
Manual Code
+
Product
Gen. Tests
Manual Tests
Model
Checker
Static
Analysis
80%
20%
Infraestructura Inmutable
 Menor superficie de ataque  Mayor seguridad
 Análisis estático (código, binarios, imágenes)  Automatizable
 Despliegues  Automatizable
 Ante una vulnerabilidad 0-Day
 Se necesita agilidad. Tests y Despliegues automatizados
 Contenedores p.e. permiten análisis forense
Ejemplos industriales (no sólo académicos)
Analizadores de vulnerabilidades de dependencias
 Snyk https://snyk.io
 Github Vulnerabilities
 Npm Audit
 BitHound
https://www.bithound.io
a
==
if
null
Analizadores estáticos
basados en parsing, AST y
pattern matching
Analizadores de vulnerabilidades de contenedores
 Más de 20 herramientas https://sysdig.com/blog/20-docker-security-tools/
 Anchore https://anchore.io
 Aquasec https://www.aquasec.com
 Clair https://coreos.com/clair
Bitnami
 https://bitnami.com/stacksmith
 Despliegue de aplicaciones en la nube
 Imágenes y contenedores para grandes proveedores de nube
 Producto StackSmith
 Alerta ante vulnerabilidades y reconstrucción automática de las imágenes
Bancaja PISA, 2007
 DSL para definición de lenguaje de
operaciones bancarias
 Por ejemplo: pedir una hipoteca
 Generación de UI completa
 Lenguaje restringido por seguridad al
dominio
 Código generado y firmado en maquinas de
Integración Continua
Petroquímica, 2009
 Requisito: Auditoria fuerte para empresas cotizadas en bolsa en EE.UU.
 Reglamentación: Sabarney Oxley (derivada del caso Enron)
 Sistema con 200 tablas de información relacionadas
 Diseño de solución con tablas espejo de auditoria y triggers en BD
 Generación de código solvento el problema en 1 mes de trabajo
 Con tests de integración demostrando su efectividad para todos los casos
 Una solución manual habría sido carísima de implementar, garantizar ausencia
de errores y evolucionar en el futuro.
Sematic Designs 2009
 Ira Baxter
 Caso del bombardero B-2 Spirit
 Ingeniería inversa de 1.2 M de líneas de código en JOVIAL
 Reescritas en C de modo automático
 Sin acceso al código fuente
=:-O
https://youtu.be/C-_dw9iEzhA?t=10m6s
B-2 Spirit
JOVIAL
START
%define records%
TABLE tbl'one'grp W 1;
BEGIN
ITEM itm'one'A S 3 POS(3,0) = 1;
ITEM itm'one'B S 3 POS(8,0) = 2;
END;
TABLE tbl'two'grp W 1;
BEGIN
ITEM itm'two'A S 3 POS(3,0) = 3;
ITEM itm'two'B S 3 POS(8,0) = 4;
END
%access members of records%
DEFINE get'A(G) "itm'!G'A";
DEFINE get'B(G) "itm'!G'B";
%test procedure%
PROC test(:param) S;
BEGIN
ITEM param S;
ITEM sumA S = get'A(one) + get'A(two);
ITEM sumB S = get'B(one) + get'B(two);
test = sumA + param + sumB;
%perform sumA times%
FOR I: 1 BY 1 WHILE I<= sumA;
C
#include "jovial.h"
static struct
{
U(3) : 3 _align_to_bit;
S(3) itm_one_a : 4 _align_to_bit;
U(1) : 1 _align_to_bit;
S(3) itm_one_b : 4 _align_to_bit;
U(4) : 4 _align_to_bit;
} tbl_one_grp = { .itm_one_a = 1, .itm_one_b = 2 };
static struct
{
U(3) : 3 _align_to_bit;
S(3) itm_two_a : 4 _align_to_bit;
U(1) : 1 _align_to_bit;
S(3) itm_two_b : 4 _align_to_bit;
U(4) : 4 _align_to_bit;
} tbl_two_grp = { .itm_two_a = 3, .itm_two_b = 4 };
/* access members of records */
#define GET_A(__g__) 
tbl_##__g__##_grp.itm_##__g__##_a
#define GET_B(__g__) 
tbl_##__g__##_grp.itm_##__g__##_b
static S test(S *ARG(param));
/* test procedure */
static S test(S *ARG(param))
{
ObjectSecurity
 Ulrich Lang, PhD.
 https://objectsecurity.com
 OpenPMF Security Policy Automation
 Software para ciberseguridad en contextos médicos, IoT
 Modelos en EMF basado en herramientas de Eclipse
 Modelos de seguridad: IBAC, RBAC, ABAC
 Security Policy Compliance
 HIPPA
Metacase
 https://www.metacase.com
 Producto MetaEdit+
 Herramienta grafica para modelado, metamodelado y definión de
lenguajes visuales.
 Sistemas embebidos, automoción, telco, aeroespacial
Securizando por construcción mediante MDE
Automoción
 Generación de código embebido a MISRA-C
MISRA = Motor Industry Software Reliability Association
 MISRA-C: Secure and safe Coding in C
 Standard cerrado de pago
 Analizadores estáticos disponibles
https://en.wikipedia.org/wiki/MISRA_C
AUTOSAR
https://en.wikipedia.org/wiki/AUTOSAR
Intelliment Security
http://www.intellimentsec.com
 Securización de redes
 Producto basado en MDE
 Modelos en EMF basado en herramientas de
Eclipse
 Modelado de redes, VPN, NAT y seguridad de
red
 Generación de configuraciones a diferentes
Hardware
 Monitorización y comprobación de políticas de
seguridad de red
JetBrains MPS
 https://www.jetbrains.com/mps
 Language Workbech Proyeccional para creación de DSLs
 Ejemplos
 Sistemas embebidos http://mbeddr.com
Mbeddr
 C99 extendido para seguridad en sistemas embebidos
 http://mbeddr.com
 Basado en MPS
 Características destacables
 Soporte a Unidades Físicas
(ej. Mars Climate, NASA, 1999)
 Trazabilidad de requisitos
 Verificación Fomal
 Soporte a máquinas de estado
 En uso en: Siemens, BMW, Automoción
Impuestos en Países Bajos
Diederik Dulfer & Meinte Boersma
 Agile Execution of Legislation
 Modelado de Leyes de impuestos
 Simulación del impacto
 Trazabilidad de especificaciones a leyes
Conclusiones
 Trabajar en el nivel de abstracción adecuado importa y puede marcar
la diferencia
 Automatizar todo lo posible  proporciona tiempos de respuesta
mas agiles ante incidencias y vulnerabilidades
 El código aburrido puede automatizarse en un gran porcentaje, y
puede certificarse el generador para garantizar que incluye
consideraciones de seguridad en el código generado.
¿Preguntas?
@pmolinam #supersec
¡Gracias!
@pmolinam #supersec
1 de 38

Recomendados

Presentacion Ontología de Seguridad para la securización de sistemas por
Presentacion Ontología de Seguridad para la securización de sistemasPresentacion Ontología de Seguridad para la securización de sistemas
Presentacion Ontología de Seguridad para la securización de sistemasguesta3f6ce
1K vistas41 diapositivas
Reglas de Oro para el Desarrollo con Windows Vista por
Reglas de Oro para el Desarrollo con Windows VistaReglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows Vistajuliocasal
785 vistas47 diapositivas
Curso basicoseguridadweb slideshare3 por
Curso basicoseguridadweb slideshare3Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3tantascosasquenose
668 vistas61 diapositivas
Tu banca móvil, en forma simple y ¿segura? Estado de la seguridad en apps móv... por
Tu banca móvil, en forma simple y ¿segura? Estado de la seguridad en apps móv...Tu banca móvil, en forma simple y ¿segura? Estado de la seguridad en apps móv...
Tu banca móvil, en forma simple y ¿segura? Estado de la seguridad en apps móv...Cristián Rojas, MSc., CSSLP
623 vistas30 diapositivas
Testing Android Security por
Testing Android SecurityTesting Android Security
Testing Android SecurityJose Manuel Ortega Candel
1.2K vistas72 diapositivas
Seguridad so pii_2011 por
Seguridad so pii_2011Seguridad so pii_2011
Seguridad so pii_2011Jacobo Avariento
146 vistas90 diapositivas

Más contenido relacionado

Similar a Securizando por construcción mediante MDE

Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI por
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TISoluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TIMario Redón Luz
827 vistas48 diapositivas
Los 7 pecados del Desarrollo Web por
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Webacksec
190 vistas30 diapositivas
Presentación AgLa4D por
Presentación AgLa4DPresentación AgLa4D
Presentación AgLa4DLander Amorrortu
409 vistas37 diapositivas
Tecnologías para microservicios por
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
3.6K vistas47 diapositivas
HerramientasExplotacion-GRUPO5.pptx por
HerramientasExplotacion-GRUPO5.pptxHerramientasExplotacion-GRUPO5.pptx
HerramientasExplotacion-GRUPO5.pptxJhoseC1
5 vistas31 diapositivas
Guia de Laboratorios 5 - VB.NET 2005 por
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Jose Ponce
3.9K vistas11 diapositivas

Similar a Securizando por construcción mediante MDE(20)

Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI por Mario Redón Luz
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TISoluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
Mario Redón Luz827 vistas
Los 7 pecados del Desarrollo Web por acksec
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Web
acksec190 vistas
Tecnologías para microservicios por Pedro J. Molina
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
Pedro J. Molina3.6K vistas
HerramientasExplotacion-GRUPO5.pptx por JhoseC1
HerramientasExplotacion-GRUPO5.pptxHerramientasExplotacion-GRUPO5.pptx
HerramientasExplotacion-GRUPO5.pptx
JhoseC15 vistas
Guia de Laboratorios 5 - VB.NET 2005 por Jose Ponce
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005
Jose Ponce3.9K vistas
Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica por Software Guru
Mitigando Eventualidades de Seguridad en Web 2.0 + SemánticaMitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Software Guru816 vistas
Imagen Fundamentos II por Omar Sanchez
Imagen Fundamentos IIImagen Fundamentos II
Imagen Fundamentos II
Omar Sanchez2.1K vistas
Genesis Suite Server por Luis Lesende
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
Luis Lesende336 vistas
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma… por Fabian Imaz
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…
Fabian Imaz571 vistas
Generacion simplificada de reportes de cumplimiento en ibm i por HelpSystems
Generacion simplificada de reportes de cumplimiento en ibm iGeneracion simplificada de reportes de cumplimiento en ibm i
Generacion simplificada de reportes de cumplimiento en ibm i
HelpSystems160 vistas
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORT por Jose Gonzales
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTWebinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORT
Jose Gonzales197 vistas
Programacion de aplicaciones Web con ASP.NET por Javier Roig
Programacion de aplicaciones Web con ASP.NETProgramacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NET
Javier Roig30.6K vistas
Microsoft Technet - Microsoft Forefront por Chema Alonso
Microsoft Technet - Microsoft ForefrontMicrosoft Technet - Microsoft Forefront
Microsoft Technet - Microsoft Forefront
Chema Alonso1.2K vistas

Más de Pedro J. Molina

MDE en la industria por
MDE en la industriaMDE en la industria
MDE en la industriaPedro J. Molina
28 vistas55 diapositivas
Terraform por
TerraformTerraform
TerraformPedro J. Molina
5 vistas1 diapositiva
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebPedro J. Molina
85 vistas20 diapositivas
Infrastructure as Code with Terraform por
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformPedro J. Molina
51 vistas34 diapositivas
Are Startups for me? por
Are Startups for me?Are Startups for me?
Are Startups for me?Pedro J. Molina
465 vistas18 diapositivas
Meow Demo por
Meow DemoMeow Demo
Meow DemoPedro J. Molina
228 vistas5 diapositivas

Más de Pedro J. Molina(20)

dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por Pedro J. Molina
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina85 vistas
Infrastructure as Code with Terraform por Pedro J. Molina
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
Pedro J. Molina51 vistas
Essential as the base for Web DSLs por Pedro J. Molina
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
Pedro J. Molina300 vistas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina646 vistas
Building APIs with the OpenApi Spec por Pedro J. Molina
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
Pedro J. Molina1K vistas
SVQDC 2017 Tecnologías para Microservicios por Pedro J. Molina
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
Pedro J. Molina1.1K vistas
Opensouthcode: Microservicios sobre MEAN Stack por Pedro J. Molina
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina1.2K vistas
Microservicios sobre MEAN Stack por Pedro J. Molina
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
Pedro J. Molina1.7K vistas
Hivepod: Casos de uso en OpenData por Pedro J. Molina
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
Pedro J. Molina797 vistas

Último

Tecnologia (3).pdf por
Tecnologia (3).pdfTecnologia (3).pdf
Tecnologia (3).pdfnosi6702
8 vistas15 diapositivas
MasterMind.pdf por
MasterMind.pdfMasterMind.pdf
MasterMind.pdfrtovarfernandez
18 vistas5 diapositivas
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1 por
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1Angel Borroy López
6 vistas22 diapositivas
Qué es el rodamiento hacia adelante.docx por
Qué es el rodamiento hacia adelante.docxQué es el rodamiento hacia adelante.docx
Qué es el rodamiento hacia adelante.docxFabianCarrillo31
10 vistas1 diapositiva
Seguridad de Windows 11 por
Seguridad de Windows 11Seguridad de Windows 11
Seguridad de Windows 11cesardani28128
6 vistas7 diapositivas
Advanced Persistent Threat ' BugCON 2023 por
Advanced Persistent Threat '  BugCON 2023Advanced Persistent Threat '  BugCON 2023
Advanced Persistent Threat ' BugCON 2023Jonathan Palacios
10 vistas40 diapositivas

Último(7)

Tecnologia (3).pdf por nosi6702
Tecnologia (3).pdfTecnologia (3).pdf
Tecnologia (3).pdf
nosi67028 vistas
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1 por Angel Borroy López
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
La Guía Definitiva para una Actualización Exitosa a Alfresco 23.1
Qué es el rodamiento hacia adelante.docx por FabianCarrillo31
Qué es el rodamiento hacia adelante.docxQué es el rodamiento hacia adelante.docx
Qué es el rodamiento hacia adelante.docx
FabianCarrillo3110 vistas
Tecnologia (1).pdf por nosi6702
Tecnologia (1).pdfTecnologia (1).pdf
Tecnologia (1).pdf
nosi67029 vistas

Securizando por construcción mediante MDE

  • 1. Securizando por construcción mediante MDE Dr. Pedro J. Molina http://pjmolina.com @pmolinamhttps://metadev.pro #supersec
  • 2. Pedro J. Molina Modelado y generación de código DSLs Arquitecturas de SW Empresarial Desarrollo de software de Gestión HIVEPOD
  • 4. Agenda Seguridad en desarrollo de aplicaciones Desarrollo convencional Desarrollo con MDE / MDD Seguro por Construcción Ejemplos Industriales
  • 5. Seguridad  Atributos de Seguridad  Control de acceso  Control de la información  Control de privilegios en el sistema y su cumplimiento  Software se usa para lo que fue concebido  Cumplimiento de normativa  Legal  Privacidad  Accesibilidad
  • 6. Cumplimiento de reglamentación  Accesibilidad  A* / Section 503  Seguridad  Segregación de responsabilidades: Sabarney Oxley  Tratamiento de tarjetas de crédito: PCI/DSS  GPRD / Privacidad / Gestión de datos personales
  • 7. Introducción a Seguridad para Desarrolladores Jose A. Bautista http://jbautistam.com/Articulos/Seguridad/Charla-seguridad-programadores.htm
  • 8. Desarrollo convencional  Cascada  Requisitos ± claros  Gobernado por un Project y metodología (ej. CMMI)  Foco en optimización de costes  Defensa, Automoción, Aeroespacial, Hardware Analysis Design Develop Test Deploy feedback
  • 9. Desarrollo ágil  Iterativo  Requisitos ambiguos o cambiantes  Scrum, Kanban, XP  Foco en entrega de valor temprana y continua  Software empresarial, mercados dinámicos, Startups Analysis Design Develop Test Deploy feedback
  • 10. Desarrollo con MDE Model Driven Engineering  “El uso de modelos durante la construcción de software.”  Algunos usos: prototipación, formalización, animación, verificación, o automatización de parte o totalidad de procesos de construcción.  Transformación de modelos para construcción de artefactos SW. Analysis Design Develop Test Deploy feedback
  • 11. MDE. Casos de uso Model Checker Model 1. Validation Report Interpreter Model Runtime interpretation 2. Interpretation Code Generation Model 3. Code Generation Generated Code Code Metadata Doc Config. Tests ...
  • 12. Textual Model Editor Model(s) Visual Model Editor IDE Model Checker Model Transformation Model M2M M2T Code Doc, etc. Reverse Engineering Metamodel(s) Model repository Marco de referencia MDE
  • 13. Nivel de abstracción adecuado al dominio Workflow workflow = new Workflow() { Name = "Set closeprobability on opportunity create (async)", Type = new OptionSetValue((int)WorkflowType.Definition), Category = new OptionSetValue((int)WorkflowCategory.Workflow), PrimaryEntity = Opportunity.EntityLogicalName, Mode = new OptionSetValue((int)WorkflowMode.Background), Description = @"When an opportunity is created, this" + " workflow sets the closeprobability field of the opportunity record to 40%.", OnDemand = false, Subprocess = false, Scope = new OptionSetValue((int)WorkflowScope.User), TriggerOnCreate = true, AsyncAutoDelete = true, Xaml = xamlWF, }; _workflowId = _serviceProxy.Create(workflow); var activateRequest = new SetStateRequest { …
  • 14. Generación de código  Automatiza procesos aburridos, fontanería repetitiva  Evita errores humanos de codificación  Garantiza calidad por construcción  Enfoque: 1. Regla de Pareto.  Resolver el 80% de los casos de modo automático  Permitir extender y realizar en código el 20% restante 2. Forward Engineering (no ingeniería inversa) 3. Separación de artefactos generados y creados manualmente para permitir su regeneración / evolución  No se trata de eliminar al humano, sino de una herramienta más
  • 15. Marco de trabajo en Generación de Código Metamodel Model Templates Code Transformations Higher Abstraction Level Lower InstancesTypes Code Generator
  • 16. Código en MDE Model Gen. Code Code Generator Manual Code + Product Gen. Tests Manual Tests Model Checker 80% 20%
  • 17. Características de la generación de código Pros  Sin errores manuales  Determinista: misma entrada  mismo resultado  Predecible  Rápido, efectivo  Certificable respecto a cumplimiento de normativa Contras  Código no creativo (instanciado a partir de un conjunto de plantillas)  Subóptimo en algunos casos  Limitado a la expresividad del modelo Código descartable. El valor está en el modelo y en el generador de código.
  • 18. Respuesta ante una vulnerabilidad Model Gen. Code Code Generator Manual Code + Product Gen. Tests Manual Tests Model Checker Static Analysis 80% 20%
  • 19. Infraestructura Inmutable  Menor superficie de ataque  Mayor seguridad  Análisis estático (código, binarios, imágenes)  Automatizable  Despliegues  Automatizable  Ante una vulnerabilidad 0-Day  Se necesita agilidad. Tests y Despliegues automatizados  Contenedores p.e. permiten análisis forense
  • 20. Ejemplos industriales (no sólo académicos)
  • 21. Analizadores de vulnerabilidades de dependencias  Snyk https://snyk.io  Github Vulnerabilities  Npm Audit  BitHound https://www.bithound.io a == if null Analizadores estáticos basados en parsing, AST y pattern matching
  • 22. Analizadores de vulnerabilidades de contenedores  Más de 20 herramientas https://sysdig.com/blog/20-docker-security-tools/  Anchore https://anchore.io  Aquasec https://www.aquasec.com  Clair https://coreos.com/clair
  • 23. Bitnami  https://bitnami.com/stacksmith  Despliegue de aplicaciones en la nube  Imágenes y contenedores para grandes proveedores de nube  Producto StackSmith  Alerta ante vulnerabilidades y reconstrucción automática de las imágenes
  • 24. Bancaja PISA, 2007  DSL para definición de lenguaje de operaciones bancarias  Por ejemplo: pedir una hipoteca  Generación de UI completa  Lenguaje restringido por seguridad al dominio  Código generado y firmado en maquinas de Integración Continua
  • 25. Petroquímica, 2009  Requisito: Auditoria fuerte para empresas cotizadas en bolsa en EE.UU.  Reglamentación: Sabarney Oxley (derivada del caso Enron)  Sistema con 200 tablas de información relacionadas  Diseño de solución con tablas espejo de auditoria y triggers en BD  Generación de código solvento el problema en 1 mes de trabajo  Con tests de integración demostrando su efectividad para todos los casos  Una solución manual habría sido carísima de implementar, garantizar ausencia de errores y evolucionar en el futuro.
  • 26. Sematic Designs 2009  Ira Baxter  Caso del bombardero B-2 Spirit  Ingeniería inversa de 1.2 M de líneas de código en JOVIAL  Reescritas en C de modo automático  Sin acceso al código fuente =:-O https://youtu.be/C-_dw9iEzhA?t=10m6s
  • 27. B-2 Spirit JOVIAL START %define records% TABLE tbl'one'grp W 1; BEGIN ITEM itm'one'A S 3 POS(3,0) = 1; ITEM itm'one'B S 3 POS(8,0) = 2; END; TABLE tbl'two'grp W 1; BEGIN ITEM itm'two'A S 3 POS(3,0) = 3; ITEM itm'two'B S 3 POS(8,0) = 4; END %access members of records% DEFINE get'A(G) "itm'!G'A"; DEFINE get'B(G) "itm'!G'B"; %test procedure% PROC test(:param) S; BEGIN ITEM param S; ITEM sumA S = get'A(one) + get'A(two); ITEM sumB S = get'B(one) + get'B(two); test = sumA + param + sumB; %perform sumA times% FOR I: 1 BY 1 WHILE I<= sumA; C #include "jovial.h" static struct { U(3) : 3 _align_to_bit; S(3) itm_one_a : 4 _align_to_bit; U(1) : 1 _align_to_bit; S(3) itm_one_b : 4 _align_to_bit; U(4) : 4 _align_to_bit; } tbl_one_grp = { .itm_one_a = 1, .itm_one_b = 2 }; static struct { U(3) : 3 _align_to_bit; S(3) itm_two_a : 4 _align_to_bit; U(1) : 1 _align_to_bit; S(3) itm_two_b : 4 _align_to_bit; U(4) : 4 _align_to_bit; } tbl_two_grp = { .itm_two_a = 3, .itm_two_b = 4 }; /* access members of records */ #define GET_A(__g__) tbl_##__g__##_grp.itm_##__g__##_a #define GET_B(__g__) tbl_##__g__##_grp.itm_##__g__##_b static S test(S *ARG(param)); /* test procedure */ static S test(S *ARG(param)) {
  • 28. ObjectSecurity  Ulrich Lang, PhD.  https://objectsecurity.com  OpenPMF Security Policy Automation  Software para ciberseguridad en contextos médicos, IoT  Modelos en EMF basado en herramientas de Eclipse  Modelos de seguridad: IBAC, RBAC, ABAC  Security Policy Compliance  HIPPA
  • 29. Metacase  https://www.metacase.com  Producto MetaEdit+  Herramienta grafica para modelado, metamodelado y definión de lenguajes visuales.  Sistemas embebidos, automoción, telco, aeroespacial
  • 31. Automoción  Generación de código embebido a MISRA-C MISRA = Motor Industry Software Reliability Association  MISRA-C: Secure and safe Coding in C  Standard cerrado de pago  Analizadores estáticos disponibles https://en.wikipedia.org/wiki/MISRA_C AUTOSAR https://en.wikipedia.org/wiki/AUTOSAR
  • 32. Intelliment Security http://www.intellimentsec.com  Securización de redes  Producto basado en MDE  Modelos en EMF basado en herramientas de Eclipse  Modelado de redes, VPN, NAT y seguridad de red  Generación de configuraciones a diferentes Hardware  Monitorización y comprobación de políticas de seguridad de red
  • 33. JetBrains MPS  https://www.jetbrains.com/mps  Language Workbech Proyeccional para creación de DSLs  Ejemplos  Sistemas embebidos http://mbeddr.com
  • 34. Mbeddr  C99 extendido para seguridad en sistemas embebidos  http://mbeddr.com  Basado en MPS  Características destacables  Soporte a Unidades Físicas (ej. Mars Climate, NASA, 1999)  Trazabilidad de requisitos  Verificación Fomal  Soporte a máquinas de estado  En uso en: Siemens, BMW, Automoción
  • 35. Impuestos en Países Bajos Diederik Dulfer & Meinte Boersma  Agile Execution of Legislation  Modelado de Leyes de impuestos  Simulación del impacto  Trazabilidad de especificaciones a leyes
  • 36. Conclusiones  Trabajar en el nivel de abstracción adecuado importa y puede marcar la diferencia  Automatizar todo lo posible  proporciona tiempos de respuesta mas agiles ante incidencias y vulnerabilidades  El código aburrido puede automatizarse en un gran porcentaje, y puede certificarse el generador para garantizar que incluye consideraciones de seguridad en el código generado.