Sunday, October 4, 2009

SDL (Parte 4: Conoscenza)

Conoscere
In Microsoft sono fieri di ciò che stanno ottenendo con SDL.
Secondo loro le motivazioni principali allo sviluppo di software sempre più sicuro sono:
·         Supporto
·         Conoscenza (cit: education and awareness)
Per Microsoft bisogna educare i propri sviluppatori sulla sicurezza del software.
Non possiamo pensare che tutti sappiano come fare software sicuro ne, tanto più, capire se il software che stiamo producendo sia sicuro o no.
Come hanno fatto in Microsoft
In Microsoft per educare adeguatamente i propri dipendenti, hanno tenuto alcuni corsi interni su i seguenti punti:
·         Software engineering principles
·         Lessons learned from past projects
·         Software architecture
·         Testing methods
·         Transaction technology
·         Relibility
·         Scalability
·         Understanding future technical directions
·         Various technologies, such as XML, ASP, SOAP, and so on
·         Programming languages
·         Interface design
·         Accessibility
In più ciclicamente fanno delle sezioni sulla sicurezza basate su come lavorare con la sicurezza e non come scrivere software sicuro.
È fondamentale che le persone su cui si sta puntando capiscano perchè scrivere software sicuro.
 
 Educazione
In Microsoft, almeno una volta l’anno, fanno un corso per il proprio staff (project leader o, cit., engineering staff) sulla base della sicurezza:
·         Secure software design, development e testing
·         Fuzz testing: vedremo più avanti cos’è
·         Threat modelling: vedremo anche questo più avanti. Basti sapere che è un metodo capire le incrinature nel design che abbiamo implementato prima di produrre qualcosa.
·         Implementing Threat Mitigations: Aiuta gli sviluppatori a decidere come scegliere il metodo più appropriato per attenuare o trovare una contromisura su un bug trovato.
·         Security Design and Architecture: Time-Tested Design Principles: vedremo più Avanti
·         Introduction to the SDL and Final Security Review (FSR) Process: Prepara il gruppo di sviluppo al final security review, affinchè non vi siano intoppi. Solitamente questo step è rivolto ai senior developer che dovranno schedulare i tempi di produzione.
·         Security Tools Overview
·         Performing Security Code Reviews: Questo corso punta ad insegnare come guardare correttamente il codice alla ricerca di bugs, a capire quali sono i potenziali problemi a cui il nostro software andrà incontro.
·         Secure Coding Practices: Come scrivere codice sicuro non solamente applicando le giuste pratiche precedentemente insegnate, ma usando anche i secure coding patterns.
·         Security Bugs in Detail: Verranno analizzati i bugs sulla sicurezza in dettaglio, facendo vedere i vari bugs nei software prodotti e verrà scritto un elenco di questi bugs, dove verranno appuntante: cause, com’è stato ridotto o (meglio) eliminato il problema.
·         Attack Surface Analysis (ASA) and Attack Surface Reduction (ASR): I sviluppatori verranno guidati sul come diminuire l’area d’attacco della nostra applicazione; facendola rimanere utile per il nostro cliente :D
·         Exploit Development: Come creare degli exploit per ottenere dei vantaggi sulle vulnerabilità.
·         Build Requirements: A questo corso bisognerà far partecipare tutte le persone che hanno a che fare con le build del software. In grosse società come Microsoft, questo processo è giornaliero e, sempre giornalmente, vengono utilizzati i tools di sicurezza sulla nuova build.
·         Security Response: Vedremo in futuro
·         Cryptography by Example: Auto esplicativo
·         Customer Privacy: Come sopra. Alla base questo corso include aspetti legali sulla privacy dei dati, protezione dei dati (data lifecycle), PETs (privacy-enhancing technologies) e integrità dei dati.
Se la tua azienda crea o usa del software di immagazzinamento dati privati di utenti o dati “sensibili”, i responsabili dovranno DEVONO conoscere le nozioni base sulla privacy e sulla sicurezza.
 
 Esercizi e laboratori
Esercizi e laboratori sono uno degli strumenti che più aiutano lo studente a capire i concetti fondamentali che si stanno affrontando.
Questi laboratori/esercizi in Microsoft hanno la durata di 30 min.
 
 Conclusione
Secondo Microsoft:
·         Formare
·         Mantenere
·         Valutare
Sono fondamenti indispensabili affinchè un’azienda possa creare del software sicuro.
Formare le capacità dei propri dipendenti e mantenerne le conoscenze (vuoi tenendoli in seno all’azienda vuoi perchè continui a formarli) sono investimenti necessari.
La valutazione è tanto indispensabile quanto i due punti precedenti affinchè si possa capire se stiamo investendo sul cavallo vincente.

No comments:

Post a Comment