[Cybersécurité] OpenSAMM, modèle de maturité pour le développement d’applications sécurisées

OpenSAMM (Software Assurance Maturity Model) est un des projets « Flagship » de l’OWASP (Open Web Application Security Project) permettant d’évaluer, définir et mettre en place une stratégie de sécurité pour les applications.

Le projet propose de découper le développement logiciel en 4 domaines divisés en 12 sous-domaines. On retrouve globalement les différentes étapes du SDLC.

Catégories OpenSAMM

 

Fonctionnement

Chaque sous domaine est divisé en 4 niveaux de maturité.

  • 0 : Niveau implicite de départ
  • 1 : Compréhension initiale et mise en place de pratiques de sécurité
  • 2 : Amélioration de l’efficacité/efficience des pratiques de sécurité
  • 3 : Maîtrise complète des pratiques de sécurité

Pour chaque sous-domaine, plusieurs éléments sont associés à chaque niveau de maturité :

Note : les exemples associés ci-dessous proviennent du niveau de maturité 1 du sous-domaine « Education and Guidance » du domaine « Governance ».

  • L’objectif à atteindre pour compléter le niveau de maturité
    exemple :
    – Fournir aux collaborateurs des ressources documentaires sur le développement et de déploiement sécurisés d’applications
  • Les activités à mener pour atteindre l’objectif
    exemple :
    – Faire une formation de sensibilisation à la sécurité
    – Ecrire et maintenir des guides techniques
  • Les questions à se poser pour évaluer la stratégie de sécurité en place
    exemple : 
    – Les développeurs ont-ils reçu une sensibilisation à la sécurité ?
    – Les membres des équipes projet savent-elles où chercher les guides et bonnes pratiques de développement sécurisé ?
  • Résultats attendus après avoir satisfait les objectifs
    exemple : 
    – Prise de conscience des développeurs sur les problèmes de développement les plus communs
    – Application des règles de sécurité de base sur les logiciels
    – Définition d’un niveau de connaissance minimum en sécurité pour les collaborateurs techniques
    – Mise en place de contrôles de ce niveau minimum de sécurité
  • Les métriques à mesurer et leurs seuils d’acceptation
    exemple :
    – Plus de 50% des développeurs a été sensibilisé durant la dernière année
    – Plus de 75% des développeurs seniors/architectes a été sensibilisé durant la dernière année
    – Commencer le guide technique dans les 3 mois après la 1re formation
  • Les coûts associés
    exemple :
    – Coût de la formation (à construire ou via une prestation)
    – Maintenance du guide technique
  • Les acteurs impliqués
    exemple :
    – Développeurs
    Architectes
  • Les autres sous-domaines liés avec les niveaux associés
    exemple :
    – Policy & Compliance niveau 2
    – Security Requierement niveau 1
    – Secure Architecture niveau 1

 

Comment mettre en place OpenSAMM ?

Pour mettre en place OpenSAMM il faut suivre les différentes étapes proposées :

Etapes OpenSAMM

  • 1 – Prepare – Préparer
    objectif : s’assurer de bien démarrer le projet
    activités :
    – Définir le périmètre
    – Identifier les collaborateurs
    – Communiquer sur l’initiative
  • 2 – Assess – Evaluer
    objectif : identifier et comprendre le niveau de maturité actuel
    activités :
    – Evaluer les pratiques déjà en place
    – Déterminer le niveau de maturité actuel
  • 3 – Set the target – Définir la cible souhaitée
    objectif : définir le niveau cible dans chaque sous-domaine
    activités :
    – Définir la cible souhaitée
    – Estimer les impacts
  • 4 – Define the plan – Définir le plan
    objectif : définir le plan pour arriver à l’objectif souhaité
    activités :
    – Définir le nombre de phases pour atteindre l’objectif
    – Définir le planning
  • 5 – Implement – Mettre en place
    objectif : réaliser le plan défini
    activités :
    – Mettre en place les mesures nécessaires
  • 6 – Roll-out – Mettre à disposition
    objectif : S’assurer que ce qui a été mis en place est utilisé
    activités :
    – Communiquer sur les améliorations
    – Mesurer l’efficacit

 

Calcul du niveau de maturité d’une organisation

Le niveau de maturité se définit par sous-domaine (« Education & Guidance » par exemple). Il est calculé en fonction d’un barème lié aux réponses aux questions de chaque niveau de maturité.

L’exemple ci-dessous expose le nombre de points à ajouter pour chaque réponse.

Barèmes OpenSAMM

Pour le sous-domaine « Education & Guidance », un exemple de réponses serait  :

  • Have developers been given high-level security awareness training?
    réponse : Once => 0,2 point
  • Does each project team understand where to find secure development best-practices and guidance?
    réponse : Half=> 0,5 point
  • Are those involved in the development process given role-specific security training and guidance?
    réponse : No => 0 point
  • Are stakeholders able to pull in security coaches for use on projects?
    réponse : Some => 0,2 point
  • Is security-related guidance centrally controlled and consistently distributed throughout the organization?
    réponse : Per Team => 0,2 point
  • Are developers tested to ensure a baseline skillset for secure development practices?
    réponse : No => 0 point

Dans ce cas le score est de 1,1, ce qui se traduit par un niveau de maturité 1+.

Aide à la mise en place

Pour aider à la mise en place d’OpenSAMM, l’OWASP met à disposition un fichier Excel permettant de :

  • Evaluer le niveau de maturité par sous-domaine en répondant aux questions. En fonction des réponses, le score par sous-domaine est automatiquement calculé.

Evaluation Excel OpenSAMM

  • Proposer en fonction des réponses données ci-dessus une roadmap pour améliorer les scores. Cette roadmap est composée de 4 phases et propose dans chaque itération d’améliorer un ou plusieurs point. L’évolution du score par phase est indiqué.

Roadmap Excel OpenSAMM

  • Proposer des statistiques sur la situation actuelle et la situation cible.

Statistiques Excel OpenSAMM

Ainsi que des graphiques sur l’avancement proposé par la roadmap

Statistiques Roadmap Excel OpenSAMM

 

Ressources

[Cybersécurité] Secure Software Development Life Cycle (SSDLC)

Le cycle de de vie du développement d’un application est l’ensemble des étapes de réalisation d’un logiciel dans le but de construire un produit de qualité.

L’intégration de la sécurité dans le SDLC intervient à chaque étape de celui-ci et se matérialise de plusieurs manières (threat modeling, review, SAST, DAST, etc.).

Ci-dessous, une liste non-exhaustive d’actions à mener au sein du SDLC pour délivrer une application sécurisée.

Ressources

[Windows8] GeekComics disponible sur le store

Ma 1re application Windows 8 est disponible sur le store depuis quelques jours.

 

 

URL

 

http://apps.microsoft.com/webpdp/app/geekcomics/ff20600a-0a42-4c92-a278-e88a38249b6b

 

Description

 

GeekComics vous permet de lire vos bandes dessinées geek préférées tirées de xkcd (http://xkcd.com) et Geek and Poke (http://geekandpoke.typepad.com). Lisez vos BDs, recherchez une BD, partagez une BD que vous appréciez depuis votre ordinateur ou votre tablette.

[Fiddler] Limiter sa connexion internet

Lors du développement d’applications nécessitant une connexion internet il est intéressant de pouvoir les tester avec plusieurs vitesses de connexion.

Fiddler, le célébre proxy HTTP nous offre cette possibilité en quelques clicks.

 

Configurer la vitesse de la connexion

 

Dans le menu Rules -> Customize Rules…, trouvez les lignes suivantes :

 

if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = "50";
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "25";
}

 

La 1re ligne indique le nombre de millisecondes nécessaires pour envoyer 1Ko. La 2eme ligne quant à elle indique le nombre de secondes pour recevoir 1Ko.

Voici quelques valeurs pour tester vos connexions :

 

 

Une fois la vitesse renseignée dans le fichier de configuration, sauvegardez puis fermez-le.

 

Brider la connexion

 

Toujours dans le menu Rules -> Performance, cochez la case "Simulate Modem Speeds".

 

Tests

 

Pour vérifier, le bridage de la connexion, j’ai développé une petite application qui télécharge un fichier de 10Mo et indique la vitesse approximative de la connexion internet.

Sans brider la connexion :

 

 

En activant le bridage à 16ms pour télécharger un Ko :