Galleria mappe mentale Sviluppo della sicurezza software CISSP-AIO
Il CISSP ha superato gli appunti degli studenti, devi memorizzarli se vuoi superare l'esame, ma non è necessario andare troppo in profondità. Gli amici interessati alla sicurezza dello sviluppo possono usarlo per familiarizzare con i concetti. Puoi anche saperne di più, ma hai bisogno di libri sullo sviluppo. Ricorda che questo è solo un quadro di conoscenza.
Modificato alle 2021-05-25 20:52:07Sviluppo della sicurezza del software
Costruisci un buon codice
concetto
Come affrontare i problemi di sicurezza del software
La sicurezza non era una necessità durante la fase di sviluppo del software, quindi oggi molti programmatori non hanno il tempo e l'esperienza per implementare queste procedure di sicurezza.
Molti esperti di sicurezza non sono sviluppatori di software e non hanno una comprensione completa delle vulnerabilità del software.
Molti sviluppatori di software non sono esperti di sicurezza e non considerano la sicurezza una priorità nello sviluppo del software, spesso privilegiano la funzionalità rispetto alla sicurezza;
I fornitori di software hanno l'obiettivo primario di acquisire quote di mercato il più rapidamente possibile, pertanto potrebbero trascurare di dedicare tempo alla progettazione e alle fasi di test dell'architettura di sicurezza software adeguata.
La comunità informatica è abituata a ricevere prima prodotti software con difetti e poi ad applicarvi le patch. Allo stesso tempo, diventa un processo consolidato.
I consumatori hanno il controllo fisico sui difetti del software quando acquistano prodotti software, quindi devono fare affidamento su software esterno per applicare tali misure di sicurezza.
Tendenze generali nella gestione della sicurezza
1. Per avere la meglio sulla concorrenza, sul mercato affluiscono software contenenti difetti.
2. Gli hacker scoprono nuove vulnerabilità e punti deboli nel nuovo software.
3. Pubblicare queste vulnerabilità e i metodi per sfruttarle sul sito web.
4. I fornitori sviluppano e rilasciano patch per correggere le vulnerabilità.
5. Tutti gli amministratori di rete devono testare e installare tutte le patch appena rilasciate.
Ambienti diversi richiedono una sicurezza diversa.
Ambiente e applicazioni.
Funzionalità e sicurezza.
Problemi di implementazione e configurazione predefinita.
ciclo di vita dello sviluppo del software
modello di sviluppo del software
Ogni fase di lavoro per ogni modello
Fase di raccolta dei requisiti:
fase di sicurezza
Valutazione del rischio per la sicurezza
Valutazione del rischio privacy
tolleranza al rischio
P1, rischio per la privacy più elevato
P2, rischio privacy medio
P3, rischio per la privacy di basso livello
fase di progettazione:
Modello informativo: spiega le tipologie di informazioni da trattare e le modalità di trattamento
Modello funzionale: elenca le attività e le funzioni che devono essere implementate dall'applicazione
Modello comportamentale: illustra lo stato di un prodotto software durante e dopo transizioni specifiche
prospettiva di sicurezza
Analisi della superficie di attacco
Modellazione della sicurezza
fase di sviluppo:
Fase in cui gli sviluppatori del programma sono profondamente coinvolti
TOP25
TOP10
analisi statica
Fase di test:
Tipo di prova
Test unitariTest unitari
Test di integrazioneTest di integrazione
Test di accettazioneTest di accettazione
Test di regressioneTest di regressione
Test fuzz
Test manuale
Analisi dinamica
Gancio per sportello posteriore/manutenzione
Fase di funzionamento e manutenzione:
Funzionamento e manutenzione, O&M
Richiede una stretta collaborazione tra il team operativo e di manutenzione e il team di sviluppo
Verificare e confermare
Verifica
ValidazioneValidazione
Ciclo di vita e sicurezza dello sviluppo software
fase di raccolta dei requisiti
Valutazione del rischio per la sicurezza
Valutazione del rischio privacy
Tolleranza al livello di rischio
Bisogni informativi, funzionali e comportamentali
fase di progettazione
Analisi completa degli attacchi
Modellazione delle minacce
fase di sviluppo
Strumenti di ingegneria software assistiti da calcoli automatizzati
analisi statica
fase di test
Analisi dinamica
Test fuzz
Test manuale
Test unitari, test di integrazione, test di accettazione, test di regressione
Fase di esercizio e manutenzione
Revisione finale della sicurezza
metodologia di sviluppo software
metodo di sviluppo
Metodologia della cascata
fattibilità
analizzare
progetto
strumento
test
mantenere
Metodologia a V
Bisogno
Piano di test del sistema
Prova del sistema
Progettazione del contorno
Piano di test di integrazione
Test d'integrazione
disegno sottostante
piano di test unitari
prova unitaria
strumento
Prototipo
Prototipo rapido
Prototipo evolutivo
Prototipo operativo
Metodologia incrementale
Metodologia a spirale
Impostazione dell'obiettivo
fase di analisi del rischio
fase di sviluppo e test
Fase di iterazione del difetto di pianificazione
Sviluppo rapido di applicazioni Rarpid Application Development, RAD
Metodologia Agile
Mischia
programmazione estrema
Kanban
Altre modalità
Metodologia esplorativa
Modello di sviluppo applicativo congiunto, JAD
Metodologia del riutilizzo
Camera pulitaCamera pulita
Revisione del modello di sviluppo
modalità cascata
Un approccio strettamente sequenziale che richiede il completamento della fase precedente prima che possa iniziare la seconda fase. Questo approccio è molto difficile da integrare i cambiamenti e manca di flessibilità.
Motivo a V
Questo approccio enfatizza la validazione e la verifica in ogni fase del progetto, con test durante l’intero processo del progetto piuttosto che solo nella fase finale del sistema.
Modello prototipo
Crea un esempio di codice o un modello a scopo di prova
modalità incrementale
Condurre più cicli di sviluppo in varie fasi dello sviluppo del software. Ogni ciclo di sviluppo fornisce una versione utilizzabile del software.
motivo a spirale
Questo è un approccio che si concentra sull’analisi del rischio in ogni iterazione. Questo approccio integra il feedback degli utenti in modo flessibile ed evolutivo.
Sviluppo rapido di applicazioni
Questo approccio combina processi di prototipazione e sviluppo iterativo con l'obiettivo di accelerare il processo di sviluppo del software
Modello agile
È un processo di sviluppo iterativo e incrementale che incoraggia la collaborazione del team. Questo approccio fornisce flessibilità e adattabilità piuttosto che una struttura di processo rigida.
Team prodotto integrato, IPT
DevOps
Tra team di sviluppo software, IT e controllo qualità
Integrazione del modello di maturità delle capacità, CMMI
cinque livelli di maturità
iniziale
Ripetibilità
definizione
maneggio
ottimizzazione
Altri modelli di maturità
Modello di maturità DevOps (DevOps Maturity Model).
Modello di maturità di sviluppo (modello di maturità Open Soure, OSMM)
Modello di maturità della gestione dei prodotti software
Gestione della sicurezza
Cambio gestione
Modificare i passaggi di controllo
Invia una richiesta di modifica formale
Analizzare le richieste di modifica
Sviluppare una strategia di implementazione
Calcolare i costi di implementazione
Controlla l'impatto sulla sicurezza
Registra le richieste di modifica
Invia richiesta di modifica per l'approvazione
cambiamenti di sviluppo
Ricodifica e combina diversi moduli del prodotto per aggiungere o eliminare funzionalità
Associare le modifiche del codice alle richieste formali di controllo delle modifiche
Sottoporre il software a test e controllo qualità
Ripetere il processo sopra finché la qualità non è qualificata
Apporta modifiche alla versione
Riportare i risultati dei cambiamenti alla direzione
Sicurezza dell'ambiente di sviluppo
Sicurezza della piattaforma di sviluppo
Sicurezza della base di codice
Gestione della configurazione del software
Hosting di software
codifica sicura
Vulnerabilità del codice sorgente
Apri il progetto di sicurezza delle applicazioni Web (OWASP)
Le 10 principali minacce nel 2017
A1:Iniezione
A2: Autenticazione interrotta
A3: Perdita di dati sensibili
A4: XEE riferimento entità esterna XML
A5: Interrompere il controllo degli accessi
A6: Errore di configurazione della sicurezza
A7: XSS scripting tra siti
A8: Deserializzazione non sicura
A9: utilizzare controlli con vulnerabilità note
A10: Registrazione imperfetta e monitoraggio continuo
Pratiche di codifica sicure
Istituto di ingegneria del software, SEI, Carnegie Mellon University
Convalida dell'input
Prestare attenzione agli avvisi del compilatore
Architetto e progettazione secondo la politica della sicurezza
mantienilo semplice
Nega per impostazione predefinita
Seguire il principio del privilegio minimo
Pulisci i dati inviati ad altri sistemi
difesa in pratica approfondita
Utilizzare tecniche efficaci di garanzia della qualità
Adottare standard di codifica sicuri
Linguaggi e concetti di programmazione
programmazione
Assemblatori, compilatori e interpreti
concetti orientati agli oggetti
Vantaggi dell'OOP
Modulare
attuazione ritardata
Riutilizzabilità
natura
Gli oggetti di sviluppo includono
nome dell'oggetto
Descrizione della proprietà
nome attributo
Contenuto degli attributi
Tipo di dati della proprietà
Ingresso dall'esterno dell'oggetto
Uscita dall'oggetto verso l'esterno
Descrizione dell'operazione
Nome dell'operazione
Descrizione dell'interfaccia operativa
Descrizione dell'elaborazione dell'operazione
Problemi di prestazione
restrizioni e limitazioni
Connessione di istanza
connessione di messaggi
Polimorfismo
Altri concetti di sviluppo software
Modellazione dei dati
struttura dati
coesione e accoppiamento
API
Calcolo distribuito
Ambiente informatico distribuito
CORBA e ORB
COM e DCOM
Collegamento e incorporamento di oggetti, OLE
Localizzatore di risorse uniforme, URL
Edizione aziendale della piattaforma Java
architettura orientata ai servizi
Architettura orientata ai servizi Architettura orientata ai servizi
spostare il codice
applet Java
Un programmatore sviluppa un'applet Java e la esegue tramite un compilatore
Il compilatore Java converte il codice sorgente in bytecode (nessun processore specificato)
L'utente scarica l'applet Java
JVM converte il bytecode in codice a livello di macchina (processore specifico)
L'applet viene eseguita quando viene richiamata
Controllo ActiveX
Sicurezza sul web
Minacce specifiche per l'ambiente web
Interfaccia di gestione
Autenticazione e controllo degli accessi
Convalida dell'input
Attraversamento del percorso o della directory
Codifica Unicode
Codifica dell'URL
scappatoie
Vulnerabilità XSS non persistente
Vulnerabilità XSS persistente
Modello oggetto documento, DOM
Convalida dei parametri
Pre-convalida
post-convalida
Gestione della sessione
Gestione dei database e malware
Gestione del database
Sistema di gestione di database, DBMS
Garantire che i dati archiviati su diversi server nell'intera rete siano coerenti
Il processo di backup è più semplice
Persistenza della transazione per confermare la transazione della transazione
Fornisce funzionalità di ripristino e tolleranza agli errori
Consenti a più utenti di condividere dati
Fornisce molteplici controlli di sicurezza per implementare controlli di integrità, controlli di accesso e livelli di riservatezza necessari
Modello di base di dati
Base di dati relazionale
banca dati gerarchica
Banca dati di rete
database orientato agli oggetti
database relazionale a oggetti
Terminologia della banca dati
Record: una raccolta di elementi di dati correlati
File: una raccolta di record dello stesso tipo
Database: una raccolta di dati che fanno riferimento a vicenda
DBMS: gestire e controllare i database
Proprietà: una colonna in un database bidimensionale
Chiave primaria: una colonna che rende ogni riga univoca (ogni riga della tabella deve includere una chiave primaria)
Visualizzazione: una relazione virtuale definita dall'amministratore del database per impedire a un soggetto di visualizzare determinati dati
Chiave esterna: un attributo relativo alla chiave primaria di un'altra tabella
Cella: intersezione di riga e colonna
Schema: definisce la struttura del database
Dizionario dei dati: un archivio della banca centrale di elementi di dati e delle loro relazioni
Interfaccia di programmazione del database
Apri Connettività database, ODBC
Database di collegamento e incorporamento di oggetti, OLEDB
Sostituzione ODBC che estende il set di funzionalità di ODBC per supportare una gamma più ampia di database non relazionali, come database di oggetti e fogli di calcolo che non richiedono necessariamente l'implementazione di SQL
Un insieme di interfacce basate su COM che forniscono alle applicazioni un accesso unificato ai dati archiviati in diverse origini dati
Poiché OLE DB è basato su COM, può essere utilizzato solo su prodotti di strumenti client Microsoft.
Gli sviluppatori accedono ai servizi OLE DB tramite ActiveX Data Object (ADO).
Consentire a diverse applicazioni di accedere a diversi tipi e origini dati
Oggetto dati ActiveX (ADO)
Connettività del database Java (JDBC)
È un'API appositamente progettata per le applicazioni di database Java e fornisce le stesse funzioni di ODBC.
Fornisce connettività indipendente dal database tra la piattaforma Java e un'ampia gamma di database
È un'API Java che consente ai programmi Java di eseguire istruzioni SQL.
componenti del database relazionale
DDL
DML
QL
generatore di rapporti
composizione
Dizionario dei dati
Chiave primaria e chiave esterna Chiave primaria
integrità
Il meccanismo di integrità semantica (Semantic Integrity) garantisce che le regole strutturali e semantiche vengano applicate. Queste regole si applicano a tipi di dati, valori logici, vincoli di unicità e operazioni che potrebbero influire negativamente sulla struttura del database
Se tutte le chiavi esterne fanno riferimento alla chiave primaria corrente, il database ha integrità referenziale. Dovrebbe esserci un meccanismo per garantire che nessuna chiave esterna faccia riferimento alla chiave primaria di un record nullo o inesistente.
L'integrità dell'entità garantisce che le tuple siano rappresentate in modo univoco dai valori della chiave primaria.
Problemi di sicurezza del database
Metodo di attacco
polimerizzazione
Attacco di aggregazione
attacco di inferenza
è la capacità di ottenere informazioni non chiaramente disponibili
metodo
Visualizzazione databaseVisualizzazione database
Controllo accessi discrezionale, DAC
Controllo accessi obbligatorio, MAC
Poliistanziazione
Elaborazione delle transazioni online, OLTP
L'obiettivo principale di OLTP è garantire che gli oggetti fisici vengano eseguiti correttamente o non vengano eseguiti affatto. Per trattamento fisico si intende solitamente l'esecuzione indipendente di un'operazione indivisibile nel suo complesso (che contiene più sottooperazioni). Se una qualsiasi delle operazioni secondarie fallisce, è necessario eseguire il rollback di tutte le operazioni secondarie eseguite per garantire che nel database vengano immessi solo dati accurati.
Atomicità
Consistenza
Isolamento
Durabilità
Datawarehouse e data mining
Management: prendere decisioni
Analista dati:
Presentazione dei dati: tecniche di visualizzazione
Data Mining: scoperta della conoscenza nel database, KDD
Classificazione di raggruppamento: raggruppare i dati in base a somiglianze condivise
Probabilistico: identifica le interdipendenze nei dati e analizza le loro relazioni utilizzando la probabilità
Statistiche: identifica le relazioni tra gli elementi dei dati e utilizza le regole per scoprirli
Utilizzo dei dati: analisi statistica, analisi dei dati, reporting
sottoargomento
Programmatore, amministratore di database
data warehouse, data mart
Fonti di dati: file, record, database, fornitori di informazioni, ecc.
Sistemi basati sulle capacità
sistema basato sui dati
sistema basato su regole
sistema basato sulla conoscenza
Suggerimento per l'esame: i "big data" vengono archiviati in sistemi specializzati come i "data warehouse" e sviluppati utilizzando metodi come il "data mining". Questi tre termini sono correlati ma diversi
software dannoso
Modi per guadagnare con il malware
Dopo che la botnet ha compromesso il sistema di destinazione, viene utilizzata per attacchi DDOS distribuiti di tipo Denial of Service, per l'invio di e-mail di spam o come parte del sistema di comando e controllo della botnet.
Il ransomware crittografa alcuni o tutti i file di un utente con una chiave, solo i file dell'utente e la chiave viene fornita all'utente solo se paga il riscatto. Agli utenti viene solitamente chiesto di pagare un riscatto utilizzando la criptovaluta.
Lo spyware utilizza gli sviluppatori di malware per raccogliere dati personali e rivenderli ad altri
Il malware reindirizza il traffico web ad altri collegamenti che portano gli utenti ad acquistare prodotti specifici
Il malware installa registratori di tasti e raccoglie informazioni finanziarie sensibili che vengono utilizzate dagli sviluppatori di malware.
Il malware dell'utente conduce attacchi di phishing, attività fraudolente, furto di identità e attività di guerra delle informazioni
Il malware sta diventando sempre più abbondante ed efficace
L'omogeneità di molti ambienti significa che un malware può funzionare su molti (la maggior parte) dispositivi
Tutti i dispositivi (telefoni cellulari, televisori, console di gioco, reti elettriche, apparecchiature mediche, ecc.) vengono informatizzati e pertanto possono essere compromessi
Sempre più individui e aziende archiviano i dati in qualche formato digitale
Sempre più persone e dispositivi sono connessi attraverso diverse interfacce (app mobili, Facebook, web, email, SMS, e-commerce, ecc.)
Molti account configurati con troppi privilegi (accesso amministrativo o root)
Sempre più utenti che non comprendono la tecnologia utilizzano la tecnologia per scopi sensibili (online banking, e-commerce, ecc.)
Il mondo digitale offre molti modi per condurre attività criminali con un basso rischio di essere scoperti.
Virus
Virus macro: programma scritto in Visual Basic o VBScript, solitamente utilizzato nei prodotti Microsoft OFFICE.
Virus del settore di avvio Virus del settore di avvio
Virus invisibile
Virus polimorfico: può generare versioni diverse ma copie funzionalmente identiche per ingannare gli scanner antivirus.
Virus multiparte: costituito da diversi componenti, questi componenti possono essere distribuiti in diverse parti del sistema. Il virus può diffondersi più rapidamente attraverso l’uso di più agenti infettivi.
Virus meme: non è un vero e proprio virus informatico, continua a inoltrare e-mail su Internet.
Virus tunneling: nasconde le sue tracce e attività rispondendo a comandi di sistema errati o falsificando lo stato di integrità del sistema.
Componenti malware
Inserimento: installazione di una copia del virus nel sistema della vittima
Evita: utilizza vari metodi per eludere il rilevamento e nascondere le tue tracce.
Eradicazione: una volta eseguito il payload dell'attacco, le copie del virus vengono eliminate.
Replica: crea una copia e diffondila ad altre vittime.
Trigger: inizializza l'esecuzione del payload dell'attacco tramite un evento.
Payload: eseguire funzioni di attacco correlate (ad esempio eliminare file, installare backdoor o sfruttare vulnerabilità, ecc.)
Oltre il virus
Worm: sono programmi indipendenti che possono essere replicati anche senza un'applicazione host. Esempio: Stuxnet
Kit di strumenti rootkit
Funzione
Acquisisci credenziali
annusare
Attaccare altri sistemi
Nascondi le tracce dell'aggressore
attrezzo
Programma trojan
programma ipconfig
Pulitore di tronchi
Spyware e adware
Spyware
Adware
Botnet
Bot Herder
1. I pastori zombie utilizzano il software zombie come carico utile di attacco per inviare codici dannosi
2. Una volta installato il codice dannoso, lo zombie accede all'IRC integrato o al server web. Il server funge quindi da server di controllo per la botnet.
3. Lo spammer paga il pastore di zombie per l'utilizzo del sistema e invia istruzioni al server di controllo, spingendo tutti i sistemi infetti a inviare spam al server di posta.
Bomba logica Bomba logica: esegue un programma o un codice stringa quando vengono soddisfatte condizioni specifiche
Cavallo di Troia: un programma mascherato da un altro programma.
protezione
Software antimalwareSoftware antimalware
Rileva codice dannoso utilizzando le firme
Rilevamento basato sulla firma, rilevamento delle impronte digitali
Tipi di comportamento a cui il software anti-malware presta molta attenzione
Scrivere informazioni nella chiave di esecuzione del file di avvio o nel riepilogo del registro
Apri, elimina o modifica file
Invia codice eseguibile via e-mail utilizzando uno script
Connettersi a una condivisione o risorsa di rete
Modificare la logica dell'eseguibile
Creare o modificare macro e script
Formattare il disco rigido o scrivere nel settore di avvio
Rilevamento dello spam
Filtraggio bayesiano Filtraggio bayesiano
Viene eseguita l'analisi della frequenza su ciascuna parola e il messaggio viene valutato nel suo insieme per determinare se si tratta di spam.
Programma antimalware
Su ogni workstation, server e dispositivo mobile dovrebbe essere installato un software anti-malware.
Ogni dispositivo dovrebbe essere aggiornato con firme malware (pattern) in modo automatizzato
L'utente non può disattivare il software anti-malware
Dovrebbe essere sviluppato un processo di rimozione del malware pre-pianificato e dovrebbe essere nominato un punto di contatto in caso di infezione da malware.
Tutti i dischi esterni o le unità USB ecc. dovrebbero essere scansionati automaticamente
Scansiona i file di backup
Esaminare annualmente le politiche e le procedure antimalware
Il software anti-malware dovrebbe fornire protezione dall'avvio da malware
Scansione anti-malware su ogni dispositivo e gateway
Automatizza le scansioni antivirus regolari. Non fare affidamento sulla scansione manuale
I sistemi critici dovrebbero essere protetti fisicamente per evitare l'installazione di malware sul sito
Valutare la sicurezza dell'acquisizione di software
ciclo di sviluppo del software
sviluppo software
importanza
Prima la funzione
La sicurezza prima
I problemi
Problemi che richiedono attenzione
Ambienti diversi richiedono una sicurezza diversa
Ambiente e applicazione
sicurezza funzionale
Problemi di implementazione e default
La crescente complessità del software pone sfide alla sicurezza
ciclo di vita dello sviluppo del software
Il ciclo di vita dello sviluppo del sistema SDLC semplifica tutte le fasi dello sviluppo del software, dai requisiti funzionali all'implementazione
idee, obiettivi, visioni
Affrontare i requisiti aziendali e le soluzioni corrispondenti
Le attività di sicurezza si svolgono contemporaneamente durante tutto il progetto
SDLC tre fasi
Inizializzazione e pianificazione del progetto
Definizione dei requisiti funzionali
Specifiche tecniche del sistema
sviluppo e implementazione
Documentazione e controllo generale del progetto
Valutazione dei test e dei controlli
La produzione va online
Ciclo di vita del sistema, il ciclo di vita del sistema SLC ha altre due fasi
Supporto al funzionamento e alla manutenzione
Revisioni e sostituzioni di sistemi
palcoscenico
Fase di iniziazione
necessita di valutazione
Valutazione preliminare del rischio
Cosa è necessario, perché è necessario
Tipi di rischio
Rischi del software stesso
Rischi affrontati dal software in futuro
Fase di gestione del progetto e raccolta dei requisiti
gestione del progetto
Gestione delle attività di progetto per garantire il raggiungimento degli obiettivi del progetto
SOW definisce le attività del progetto
L'ambito fa paura:
WBS (struttura di ripartizione del lavoro)
fase di raccolta dei requisiti
analisi della domanda
Funzione da implementare
Requisiti di sicurezza
Definire integrità, disponibilità, riservatezza. livello di sicurezza richiesto
Requisiti dal lato della domanda
valutazione del rischio
Valutazione del rischio privacy
livello di rischio accettabile
fase di progettazione
I requisiti di sicurezza provengono dai tre modelli
modello informativo
modello funzionale
modello comportamentale
Analisi dal punto di vista della sicurezza
Analisi della superficie di attacco: ridurre l'interfaccia di attacco, identificare e ridurre la quantità di codice e funzioni utilizzate da utenti non attendibili.
Modellazione delle minacce: un approccio sistematico per mostrare come vengono implementate le diverse minacce e come possono verificarsi attacchi efficaci
fase di sviluppo
ingegneria del software assistita da computer (CASE)
fare riferimento a
OWASP
DHS
MITRA
2011 CWE/SANS TOP25 Errore Softear PIÙ PERICOLOSO
TOP10
Analisi statica: analizza il codice e trova errori
Fase di test/convalida
È in corso il test unitario
Separazione dell'autocolpevolizzazione
Separazione delle responsabilità per sviluppo, test, funzionamento e manutenzione
Test di routine
Test unitari, test di integrazione, test di accettabilità, test di regressione
Prova di sicurezza
Fuzz testing, scansione delle vulnerabilità, penetration testing manuale, analisi dinamica
Guida alla valutazione del test
verifica dei dati
Controllo dei confini
test di desensibilizzazione
cambiare controllo
fase di accettazione
certificazionecertificazione
Accreditamento
Confermare la conformità agli standard di certificazione e inviarne eventuali
Migrazione e correzioni/implementazione
migrare per sopravvivere
Correzioni e sostituzioni di sistema
O&M/e Abbandono
modello di sviluppo del software
Modello
modello a cascata
Modello a cascata
Il modello a cascata utilizza una sequenza lineare e un approccio basato sul ciclo di vita per lo sviluppo
Ogni fase deve essere completata prima che possa iniziare la fase successiva
Dopo ogni fase verrà effettuato un ripasso delle fasi precedenti.
Tutti i requisiti devono essere raccolti in anticipo
vantaggio
Adatto a piccoli progetti in cui i requisiti sono pienamente compresi
discordanza
Affidarsi alla ricerca sui bisogni iniziali e non adattarsi ai cambiamenti
Difficile adattarsi a progetti complessi
Le lezioni apprese durante lo sviluppo non possono essere reintegrate nel processo di applicazione di questo prodotto
Modello a V
Modello V
vantaggio
L'intero processo di sviluppo viene testato fino alla fine del progetto
Rispetto al modello a cascata, ha una maggiore probabilità di successo.
discordanza
manca ancora di flessibilità
Prototipazione
Prototipazione
Utilizzando la prototipazione, i team di sviluppo possono identificare i problemi di utilizzo e progettazione e apportare modifiche, se necessario.
Esistono tre metodi principali di prototipazione.
Metodo di prototipazione rapida:
metodi di prototipazione rapida
Lo sviluppo non si basa sulla prototipazione rapida ma viene rapidamente scartato una volta che il prototipo ha raggiunto il suo scopo
Metodo di prototipazione evolutiva:
Non verrà scartato dopo lo sviluppo come un prototipo rapido. Il prototipo verrà continuamente migliorato per guidare la fase finale del prodotto.
Il feedback viene raccolto in ogni fase di sviluppo e vengono apportati miglioramenti per soddisfare continuamente le esigenze degli utenti.
Metodo del prototipo operativo:
Entrambi i modelli utilizzano i dati del telefono cellulare per migliorare la qualità del prototipo, ma il prototipo operativo è progettato per essere adattato in un ambiente di sopravvivenza
modello incrementale
iterativo
vantaggio
Il tempo stringe, risolvi la funzione di connessione
Forte adattabilità dell'utente
Il sistema è integrato da componenti e può essere modificato in modo flessibile.
discordanza
Struttura di sollevamento aperta
I modelli vengono modificati e il controllo del software perde integrità
Esiste un'intersezione tra pacchetti incrementali ed è necessaria un'analisi completa.
modello a spirale
Un approccio iterativo allo sviluppo software incentrato sull'analisi del rischio
quattro fasi
facendo progetti
Sviluppo rapido di applicazioni
I metodi di sviluppo rapido delle applicazioni utilizzano la prototipazione rapida anziché un'ampia pianificazione anticipata
Vantaggi del RAD
Elevata efficienza di sviluppo e comunicazione intuitiva con gli utenti
Può mobilitare l'entusiasmo degli utenti a partecipare
Può esporre anticipatamente alcuni potenziali problemi dopo l'implementazione del sistema
Problemi con RAD
Decidi troppo in fretta
Non adatto per lo sviluppo di sistemi di grandi dimensioni e sistemi di elaborazione batch
Non adatto a moduli con grandi quantità di calcoli e logica forte
I requisiti per la gestione di base del sistema sorgente sono relativamente elevati, altrimenti si dovrà simulare meccanicamente il sistema manuale originale.
Modello Agile
Approccio di sviluppo incentrato sulle persone, iterativo e graduale
Un termine generale per diversi metodi di sviluppo, concentrandosi su metodi di sviluppo incrementali e iterativi in grado di supportare gli stessi team funzionali e sistemi di feedback continuo
È leggero rispetto ad altri modelli tradizionali ed è sufficiente per soddisfare le esigenze di ogni progetto.
Vantaggi dei modelli Agile
Concentrarsi sulla comunicazione delle persone piuttosto che sui processi e sugli strumenti
Concentrati sullo sviluppo del software giusto piuttosto che sulla documentazione complessa e ingombrante
Incoraggiare il coinvolgimento e la collaborazione del cliente non è una negoziazione contrattuale
Incoraggiare la capacità di affrontare il cambiamento piuttosto che aderire rigorosamente a un piano
Invece di utilizzare prototipi per identificare un prodotto completo, i modelli agili scompongono il prodotto in diverse caratteristiche.
Altri modelli
modello esplorativo
Sviluppo di analisi congiunte (JAD)
Riutilizzare il modello
modello di camera bianca
È un approccio che tenta di prevenire errori o sbagli attraverso lo sviluppo e la sperimentazione di metodi strutturati e formali. Questo approccio porta ad applicazioni critiche e di alta qualità attraverso un rigoroso processo di certificazione. Metodo formale = utilizzo di modelli matematici (formale) Rapporto di progettazione del software americano: gli studenti di dottorato che studiano informatica possono utilizzarlo
DevOps
DevOps ha avuto origine da grandi aziende Internet come Amazon e Google. Queste aziende hanno bisogno che i dipendenti lavorino a stretto contatto e allo stesso tempo non vogliono avere la segregazione dipartimentale.
Automazione dei processi target
Fornirti influenza sui clienti, gestire i tempi di inattività del sito Web e altre situazioni, individuare i problemi più rapidamente e a costi inferiori
La caratteristica del team è quella di consentire di fornire più funzioni ai clienti senza far crollare il sito web.
in linea di principio
Sviluppare e testare sistemi di produzione simili
È possibile implementare processi ripetibili e affidabili
Monitorare e verificare la qualità operativa
Espandi il ciclo di feedback
Integrazione del modello di maturità del software CMMI
fase di inizializzazione
Già gestito
livello definito
Livello di gestione quantificato
Livello di ottimizzazione
Cambio gestione
Gestione della configurazione del software
Il prodotto fornisce una gestione della configurazione del software in grado di identificare tempestivamente gli attributi del software in diversi punti e implementare il controllo delle modifiche programmate durante l'intero ciclo di vita del software allo scopo di mantenere l'integrità e la tracciabilità del software.
Gestione della concorrenza
controllo
registro dello stato
verifica
processo di gestione della configurazione
Identificazione
Controllo
Contabilità dello stato
verifica
Linguaggi di programmazione e calcolo distribuito
concetto
Storia dello sviluppo
linguaggio macchina
linguaggio assembly
linguaggio di alto livello
linguaggio procedurale
Quarta generazione, linguaggio di altissimo livello
linguaggio non procedurale
quinta generazione: linguaggio naturale:
composizione
assemblatore
traduttore
Traduttore
Garbage Collector: si riferisce al riciclaggio della memoria
Il concetto di programmazione orientata agli oggetti (OOP), lavorare con classi e oggetti.
metodi di sviluppo tradizionali
L'OOP produce oggetti attraverso le classi Ogni oggetto appartiene a questa classe ed eredita le proprietà di questa classe.
I programmatori sviluppano classi e tutti i loro attributi e attributi, ma non è necessario sviluppare ciascuno o tutti gli oggetti
Caratteristiche dell'OOP
Differenza tra approcci OOP e non OOP
Vantaggi dell'OPP
Modularità: oggetti autonomi, negoziati attraverso lo scambio di informazioni
Impegno ritardato:
riusabilità
naturalezza
concetto
metodo
incapsulamento
ereditare
eredità
Dati nascosti
Esempio di oggetto
Polimorfismo
Modellazione dei dati
Inclusione e accoppiamento
Calcolo distribuito
Architettura
Architettura C/S
Il percorso di rete in cui il client chiama il server
L'assistenza tra i componenti deve essere monitorata e monitorata e le richieste e i risultati devono essere trasmessi avanti e indietro tra i componenti corretti.
ambiente
OCE è sviluppato da OSF.
Dimostrare che varie capacità possono essere ereditate e condivise tra diverse classi di sistemi.
DCE fornisce servizi RPC per chiamate remote, servizi di sicurezza, servizi di directory, servizi orari e supporto di file distribuiti, ecc.
DCE è il primo tentativo del settore di realizzare un framework di calcolo distribuito
DCE è un insieme di servizi di gestione basati sul livello di comunicazione RPC
CORBA e ORB
COMeDCOM
Collegamento e incorporamento di oggetti
Architettura orientata ai servizi (SOA)
La SOA è un approccio basato sul WEB
La SOA è un luogo centralizzato in cui le applicazioni possono accedere alle funzionalità di cui hanno bisogno
Raccomandazioni per l'uso sicuro di REST
Tre percorsi sicuri per l'API REST
Autenticazione di base con TLS
Oauth 1.0a
Le funzionalità più sicure tra i tre protocolli
Utilizza la firma crittografica, HMAC-SHA1:
Non trasmettere mai segreti simbolici via cavo
Oauth 2.0:
Oauth2 ora rimuove le firme, eliminando la necessità di utilizzare algoritmi di crittografia per creare, generare e verificare le firme.
Tutta la crittografia è gestita da TLS
Non ci sono così tante librerie come nella versione 1.0, quindi usarle è una sfida
Protocollo di accesso semplice agli oggetti SOAP
Informatica mobile e sicurezza web
applicazione tipica
spostare il codice
Il codice mobile è un codice che può essere trasferito dall'host al computer client ed eseguito
Gli aggressori possono utilizzare una combinazione di metodi di attacco
Trasmissione: vulnerabilità del sistema informatico, posta elettronica, condivisione di file, browser web
Ingegneria sociale
Tipico codice mobile
Mele (applet Java, plug-in web):
applet Java
Piattaforma indipendente, puoi limitare i privilegi del codice Java nel sanbox JVM (Java Virtual Machine).
Controlli ActiveX
La tecnologia Microsoft, anche in esecuzione su sistemi Microsoft, non ha vincoli Sanbox.
Sicurezza Java
Quando i byte vengono interpretati, Java esamina l'applicazione, le variabili e la memoria utilizzata
Vantaggi: Il software può utilizzare la memoria in modo appropriato senza superare il limite impostato.
Svantaggi: fare eccessivo affidamento su questa funzionalità può portare a pratiche sciatte che possono portare ad altri problemi di sicurezza.
JAVA è efficace nel riciclo della frammentazione e nel controllo automatico della memoria, quindi non è necessario riallocare le aree di memoria.
Metodi di sicurezza Java:
validatore o traduttore
caricatore di classi
Manager della sicurezza
sicurezza web
Raccolta di informazioniRaccolta di informazioni
Il primo passo dell'attacco
Gli aggressori raccolgono informazioni disponibili al pubblico
Il manager perde accidentalmente informazioni
Consente agli sviluppatori di utilizzare DSN (nome origine dati) per evitare di esporre la posizione o le informazioni sui dati utilizzati per connettersi.
Contromisure:
La quantità minima di informazioni a disposizione dell'UI dovrebbe essere limitata a
Gli sviluppatori devono essere consapevoli che il codice che scrivono può essere visto da persone esterne all'organizzazione e dovrebbero controllare regolarmente i motori di ricerca per vedere se sono presenti siti Web, indirizzi e-mail, tipi di file e dati, ecc.
Interfacce amministrativeInterfacce amministrative
Autenticazione e controllo degli accessiAutenticazione e controllo degli accessi
Convalida dell'inputConvalida dell'input
Metodo di attacco
Attraversamento del percorso/directory
Codifica Unicode
Codifica dell'URL
Overflow del buffer
Verifica del cliente
SQL injection, attacchi XSS cross-site scripting
Tre tipi di XSS
XSS non persistente
XSS persistente
Basato sul modello oggetto documento (DOM, XSS basato sul modello oggetto documento)
Convalida dei parametriConvalida dei parametri
Gestione della sessione
Gestione del database
Sistemi esperti/Sistemi basati sulla conoscenza/Sistemi esperti/Sistemi basati sulla conoscenza
Reti neurali artificiali
software dannoso
Gestione dei database e malware
Gestione del database
concetto
I database vengono utilizzati da molto tempo per archiviare importanti proprietà intellettuali e informazioni preziose di un'azienda.
sistema di gestione di database (DBMS)
Software per la gestione di banche dati
Banca dati
DBMS
Caratteristiche
Coerenza dei datiCoerenza dei dati
Condivisione dei datiCondivisione dei dati
Recupero datiRecupero dati
Controllo di sicurezzaControllo di sicurezza
Modello
Modello relazionale: i dati vengono archiviati in una tabella (tabella, chiamata anche relazione) contenente righe (tupla, record, che rappresentano istanze di dati) e colonne (campo o attributo, che rappresentano variabili di dati). La relazione tra le tabelle viene formata in base alla chiave primaria selezionata. Attualmente il film più comunemente usato. DB2, Oracle, SQL Server.
Chiave primaria: identifica in modo univoco ogni riga nella tabella. Ogni tabella consente solo una chiave primaria univoca. RDBMS non consente l'inserimento di più record con la stessa chiave primaria, garantendo l'unicità della chiave primaria.
Chiave esterna: un attributo o una combinazione in una tabella il cui valore deve corrispondere alla chiave primaria in un'altra tabella. È la relazione di connessione tra le tabelle.
componenti principali
Linguaggio di definizione dei dati, DLL
Linguaggio di manipolazione dei dati, DML
Linguaggio di controllo dei dati, DCL
Linguaggio di queryQuery Language,QL
Modello gerarchico: ora chiamato servizio di directory, è costituito da record e campi, con relazioni logiche e ad albero tra di loro.
Modello di rete: rappresentato dai dati di rete, dal blocco dati o dal tipo di record. I blocchi contengono campi dati e le righe tra i blocchi possono esprimere relazioni tra i dati.
Il modello di database di rete consente a ciascuna primitiva di dati di avere più nodi principali e record principali
Creare una struttura di rete ridondante
La velocità di recupero è maggiore rispetto al modello gerarchico.
Modello orientato agli oggetti: combinando il modello dei dati a oggetti nella programmazione orientata agli oggetti con DBMS, può archiviare immagini, voce, video e altri dati.
Modello relazionale a oggetti (Moder relazionale a oggetti Sistema di gestione del database relazionale a oggetti, ORDBMS: un database relazionale, ma un front-end software scritto in un linguaggio orientato agli oggetti.
Interfaccia di programmazione del database
Connettività con database aperto (ODBC, Connettività con database aperto)
Connessione di oggetti e database incorporato
Oggetti dati ActiveX (ADO, Active Data Objects)
Connessione al database Java (JDBC, JaveDatabase Connectivity)
Linguaggio di markup estensibile (XML)
Dizionario dei dati
Integrità del database (Integrità)
Integrità semantica
Integrità referenziale
Integrità dell'entità
operare
rollback
invia
punto di controllo
impegno in due fasi
Domanda di Sicurezza
Aggregazione
Inferenza
Precauzioni contro il ragionamento
soppressione cellulare
Partizione del database
rumore e perturbazione
Controllo degli accessi dipendente dal contesto
Controllo degli accessi dipendente dal contenuto
Controllo di accesso
Poliistanziazione:
Data warehousing e data mining
Banca dati
Data Mining: appartiene alla categoria dell'Intelligenza Artificiale (AI)
Il data mining è l'estrazione automatica di modelli, associazioni, cambiamenti, anomalie e strutture significative dai dati
La maggior parte del valore del data mining risiede nell'utilizzo della tecnologia di data mining per migliorare i modelli linguistici
O relazione tra i dati di ricerca nel data warehouse
Gli strumenti di data mining vengono utilizzati per identificare le caratteristiche e le relazioni dei dati nei data warehouse
Codice dannoso/Malwate
Come il malware guadagna
Lo spyware raccoglie dati personali che gli sviluppatori di malware possono rivendere ad altri
Il malware reindirizza il traffico web per indurre le persone ad acquistare prodotti specifici
Il malware crea backdoor di sicurezza sui sistemi che vengono utilizzati come proxy per diffondere spam o materiale pornografico
Sistemi infettati da bot successivamente utilizzati in attacchi Denial of Service distribuiti
Il malware installa un keylogger utilizzato per raccogliere informazioni finanziarie sensibili ad uso dell'autore del malware.
Malware utilizzato per eseguire attacchi di phishing e frodi
Malware vari
Virus
Virus del settore di avvio
Virus della compressione
file virus infettivo
virus invisibile
macrovirus
virus polimorfico
virus auto-manomettente
virus genetico
virus di script
virus del tunnel
Cavalli di Troia
Rootkit (escalation dei privilegi root)
Bombe logiche
Verme:
Botnet
Gli hacker inviano codice dannoso carico di virus bot
Spyware
Adware
Programma antivirus
Principali funzioni dei software antivirus
Rilevamento delle funzionalità
Rilevazione euristica
Sandbox o macchina virtuale
La prossima generazione di software antivirus si evolve in bloccanti comportamentali
Scrivere nella chiave Esegui nel file di avvio o nel registro
Apri, elimina o modifica file
Inserisci lo script nell'e-mail e invia il codice eseguibile
Connettersi a un file o a una risorsa condivisa in rete
Modificare la logica di un file eseguibile, ecc.
soluzione
tipo caratteristico
euristico
controllore di integrità
bloccante del comportamento
Programma di immunizzazione
Strategia antivirus come parte del piano di sicurezza di un’organizzazione
Il software antivirus dovrebbe essere presente su ogni workstation, server e PDA
Ogni dispositivo dovrebbe essere configurato per aggiornare automaticamente le firme dei virus
Non consentire agli utenti di disattivare il software antivirus
Dovrebbe essere stabilito in anticipo un processo di rimozione del virus e dovrebbe essere designata una persona di contatto in caso di infezione da virus
Tutti i dischi esterni (unità USB, ecc.) dovrebbero essere scansionati automaticamente
I file di backup dovrebbero essere scansionati,
Le politiche e le misure antivirus dovrebbero essere riviste ogni anno
Il software antivirus dovrebbe fornire protezione dai virus del settore di avvio
I gateway e ogni dispositivo dovrebbero essere scansionati alla ricerca di virus
Le scansioni antivirus automatiche dovrebbero essere eseguite regolarmente e non si dovrebbe fare affidamento sulle scansioni manuali
I sistemi critici dovrebbero essere protetti fisicamente in modo che il malware non possa essere installato localmente
meccanismo di risposta
Valutare la sicurezza del software
Certificazione e accreditamento
Processo e ruolo di certificazione e accreditamento
Quadro di gestione del rischio RMF
Registri di modifica e controllo
Funzione di verifica delle informazioni
Il reporting dei dispositivi di rete del sistema è importante per la salute e la sicurezza dell'intero sistema
La capacità di controllo dei registri consente alle parti interessate di comprendere e registrare
integrità delle informazioni
Accuratezza delle informazioni
Analisi e mitigazione del rischio
Gestione del rischio
Il processo di documentazione del rischio comprende la mitigazione del rischio e la pianificazione continua
Analisi del rischio e strategie di mitigazione
azioni correttive
Utilizzare il processo di controllo delle modifiche
Leggi tutta la documentazione rilevante
test
Esegui il backup e pianifica in modo efficiente i tempi di inattività della produzione
Piano di riserva per la fidelizzazione a lungo termine
Informare in anticipo il service desk e i gruppi di utenti chiave
Puntare innanzitutto ai servizi non critici
Non tutti i rischi scoperti nella gestione delle patch devono essere mitigati