pourquoi s'intéresser à la sécu? Il y a des trucs à protéger pourquoi se protéger? Rien à cacher? Toute entreprise est vulnérable à quelque chose
How does an attack work?
Targets
entry points
exploitation / persistence
elevation of privilege / pivot
data extraction
Lockheed Martin example
Targets
money
reputation
data
watering holes
exemple de watering hole: curling.com
Targets
user data, company data
passwords
intellectual property
activity
les mots de passe ont une valeur
Targets
Which ones will you protect first?
Priorities
protéger les cibles ci-dessus certaines sont plus importantes que d'autres peut-être que le plus important est la disponibilité
Entry points
Company's door
employees
wifi
phishing
social engineering
(tout n'est pas lié au code, mais ce sont des vecteurs d'entrée, exemple de cloudflare)
Entry points
email
browser
weak server
website
API
stolen password
gaffe aux malwares, INSTALLEZ UN AD BLOCKER BERDOL
Attacker types
automated scripts
targeted attack
nation state adversary
trier par temps, argent, compétence
Defining a threat?
Cost of a threat
How much to attack?
How much to protect?
How long to attack?
How long to protect?
l'attaquant a le temps avec lui Rowhammer VS XSS
on peut ainsi décider:
cheap pour se protéger, cheap à attaquer, on protège
cher pour se protéger, cheap à attaquer, on protège
cheap à protéger, cher à attaquer, ?
cher à protéger, cher à attaquer, ?
It is getting cheaper
BUT
les coûts pour se protéger diminuent, mais moins vite que les coûts pour attaquer n'hésitez pas à déléguer
Attacker only needs to enter once
La défense doit arrêter toutes les attaques, l'attaque ne doit percer la défense qu'une seule fois
The fortress
Attention à la métaphore de la forteresse. On imagine des grands murs autour du SI. DMZ
The city
Dans la réalité, un SI, une app, un site, c'est comme une ville. On ne peut pas vérifier tous les gens qui rentrent, on ne peut pas attraper tous les voleurs, on ne peut pas empêcher tous les feux de se déclarer. Il faut savoir les repérer.
Par contre, on peut découpler certaines parties, et gérer différents accès Exemple: chez Clever, on fait tourner le code d'autres personnes
What do I do first ?
Risk analysis and threat modeling
c'est un document vivant
ça permet de fixer les menaces
STRIDE: Spoofing, tampering, repudiation, information disclosure, Denial of Service, Elevation of privilege
E-commerce assets
availability
credit card numbers
user information
E-commerce actors
network
website user (anonymous)
website user (authenticated)
site admin
server admin
E-commerce threat
XSS:
network / user access level
Spoofing / Information disclosure / Elevation of privilege
easy to reproduce, easy to fix
Business continuity planning
Plan de continuité d'activité, plan de reprise d'activité
Who does the backups? Clever does the backups
Incident response
il y aura des pb, il faut être prêt à faire face. Qui gère les incidents de sécu? Pas forcément un poste attitré, juste quelqu'un sachant qui appeler. Avoir des gens on call, c'est important, cf clever
En cas d'attaque publique, une seule approche, la transparence modérée: "on a reçu un rapport d'attaque, on est en train de regarder".
LE PLUS TOT POSSIBLE
Surtout, ne pas mentir et faire l'autruche, ou pire, ne pas réagir. c'est une course contre la montre.
Rebuilding
Comment remonter le système en cas de pb? Qui a les accès? Bus factor! Les backups! On sauvegarde, mais est-ce qu'on sait restaurer? A-t-on le numéro de l'hébergeur?
System architecture
layers
compartmentation
clear interfaces
least authority principle
on ne peut pas empêcher les failles d'apparaître. Les applis modernes dépendent de trop de composants externes. (exemple des services d'audit de Gemfile)
Une architecture claire, qui fait du contrôle d'accès proprement, ça se passe beaucoup mieux. Ca indique quelles parties protéger, quelles parties monitorer
Code audits
(white box)
Si on a un bon modèle de menaces (et éventuellement une archi propre), on sait rapidement quelles parties du code attaquer. Spoiler alert: c'est principalement aux frontières du système: authentification, réseau, fichiers, API, etc.
Fix it!
Penetration testing
différence avec l'audit de code: un audit de code va indiquer des faiblesses potentielles du code le test de pénétration démontre un attaquant qui rentre. Souvent, le testeur se contente de trouver un point d'entrée. C'est une preuve par contradiction: on a juste besoin de rentrer une fois pour démontrer que ça n'est pas sécurisé
C'est intéressant si on a déjà une bonne pratique de la sécu, et qu'on peut faire un débrief, pour voir comment un tel attaquant aurait pu être détecté
Penetration test with scope
test de pénétration cherchant à atteindre une cible particulière, avec des moyens définis. Utile pour tester la réactivité de l'équipe sécu, la détection d'intrusions, la réponse aux incidents