CISSP · Réussir du premier coup
Domaine 8, dernière partie : évaluer le logiciel acquis, coder en sécurité (OWASP), et les fondamentaux des bases de données.
Évaluer l'efficacité de la sécurité logicielle (8.3) : auditer et journaliser les changements, analyser et mitiger les risques, appliquer la logique certification/accreditation au logiciel (chapitre 6).
Logiciel acquis (8.4) — on ne développe pas tout, et l'externe apporte ses risques :
| Source | Risques | Contrôles |
|---|---|---|
| COTS (commercial) | Boîte noire, dépendance éditeur | Due diligence, patching, code escrow (récupérer le source si l'éditeur disparaît) |
| Open source | Licences, dépendances vulnérables (Log4j) | Revue de licence, SCA, SBOM (chapitre 3) |
| Third-party / managed (SaaS) | Contrôle limité, données chez le tiers | Contrats, SLA, SOC 2 Type II (chapitre 17), responsabilité partagée (chapitre 6) |
L'OWASP Top 10 recense les risques web les plus critiques ; le CWE Top 25 les faiblesses logicielles. Les grandes familles à maîtriser :
| Faiblesse | Mécanisme | Contre-mesure |
|---|---|---|
| Injection (SQLi) | Injecter du code dans une requête (union, blind, inference) | Requêtes paramétrées / procédures stockées, validation d'entrée, échappement |
| XSS | Injecter du script exécuté chez la victime (reflected, stored, DOM) | Output encoding, CSP, validation |
| CSRF | Forcer une action à l'insu de l'utilisateur authentifié | Tokens anti-CSRF, SameSite cookies |
| Buffer overflow | Déborder un tampon pour exécuter du code (stack/heap) | Langages memory-safe, canaries, ASLR/DEP (chapitre 6) |
| Directory traversal | Remonter l'arborescence (../) pour lire des fichiers | Validation des chemins, canonicalisation |
| TOCTOU / race condition | Exploiter l'écart entre la vérification (check) et l'usage (use) | Verrous atomiques, opérations transactionnelles |
| Insecure deserialization | Objets sérialisés malveillants | Éviter la désérialisation de données non fiables, signatures |
| SSRF | Forcer le serveur à requêter une ressource interne | Allow-list des destinations, segmentation |
| Backdoors / maintenance hooks | Accès cachés laissés par les développeurs | Revue de code, retrait avant production |
Canaux cachés (covert channels) : communication illégitime via un moyen non prévu — timing channel (moduler le temps pour transmettre) vs storage channel (utiliser un emplacement de stockage partagé). À distinguer précisément. Attention aussi aux citizen developers et plateformes low-code/no-code : elles démocratisent le développement mais échappent souvent aux contrôles de sécurité.
« SQLi → paramètre ; XSS → encode ; CSRF → token. » Trois failles web, trois parades canoniques. Et pour TOCTOU : « Time Of Check ≠ Time Of Use » — la fenêtre entre vérifier et agir.
Savoir testable à la frontière des domaines 3 et 8 :
| Lettre | Propriété |
|---|---|
| A | Atomicity : tout ou rien |
| C | Consistency : la base reste dans un état valide |
| I | Isolation : les transactions concurrentes n'interfèrent pas |
| D | Durability : une fois validée, la transaction persiste |
ACID : Atomicity, Consistency, Isolation, Durability — les quatre garanties d'une transaction fiable. Et : Cardinality = Comptage des lignes · Degree = colonnes (« degree comme le nombre de Domaines/attributs »).
Awa boucle la sécurité applicative. Un test révèle une injection SQL dans un vieux module de Berlin : correction par requêtes paramétrées et validation d'entrée en allow-list. Le portail client, vulnérable au XSS stocké, reçoit un output encoding systématique et une CSP ; les formulaires sensibles gagnent des tokens anti-CSRF. Un audit de code déniche un maintenance hook laissé par un développeur — retiré avant la mise en production. Pour la base de paiement, Awa impose des views qui masquent les colonnes sensibles selon le rôle (content-dependent, chapitre 14) et vérifie que les transactions respectent l'ACID. Le progiciel de comptabilité COTS est couvert par un code escrow au cas où l'éditeur disparaîtrait. Enfin, elle encadre les citizen developers du marketing, qui bâtissaient des automatisations low-code hors de tout contrôle — désormais soumises à revue. Le programme de sécurité de la fintech est complet, du risque au code.
Conditions réelles : 30 minutes, une seule passe, réponses notées avant de consulter le corrigé.
Which is the MOST effective defense against SQL injection?
Les requêtes paramétrées séparent code et données : l'injection devient impossible. Cacher la version (A) est de la sécurité par l'obscurité.
Which defense BEST mitigates cross-site scripting (XSS)?
Output encoding + CSP neutralisent le script injecté. Les autres options n'ont aucun effet sur le XSS.
Which attack forces an authenticated user's browser to perform an unwanted action?
Le CSRF force le navigateur authentifié à exécuter une action non voulue. Le XSS injecterait du script — attaque distincte.
Which control specifically mitigates CSRF?
Tokens anti-CSRF et cookies SameSite empêchent la requête forgée. L'output encoding (B) vise le XSS.
Which vulnerability class is prevented by memory-safe languages, canaries, ASLR, and DEP?
Memory-safe, canaries, ASLR, DEP protègent contre les débordements de tampon (chapitre 6). Sans rapport avec SQLi ou CSRF.
A TOCTOU vulnerability exploits what?
TOCTOU exploite l'écart entre la vérification et l'usage : une race condition. « Time Of Check ≠ Time Of Use. »
Which covert channel transmits information by modulating timing?
Le timing channel module le temps pour transmettre ; le storage channel (A) utilise un emplacement partagé.
Which input validation strategy is more secure?
L'allow-list n'accepte que le connu-bon : plus sûr que la deny-list, qui tente d'énumérer l'infini du mauvais.
Why should error messages shown to users be generic?
Un message d'erreur bavard révèle la structure interne à l'attaquant : détails dans les logs, message générique à l'utilisateur (fail securely, chapitre 6).
What protects an organization if a COTS vendor goes out of business?
Le code escrow confie le source à un tiers, récupérable si l'éditeur disparaît. Les autres options ne protègent pas de ce risque.
Which risk is MOST associated with open-source dependencies?
L'open source hérite ses vulnérabilités (Log4j) et impose des obligations de licence → SCA + revue de licence.
A hidden access method left in code by a developer is called what?
Un accès caché laissé dans le code = backdoor / maintenance hook, à retirer avant la production.
In relational database terms, what is cardinality?
Cardinality = nombre de lignes (tuples). Le nombre de colonnes (A) est le degree — inversion classique.
What is the degree of a relation?
Le degree = nombre de colonnes (attributs). Les lignes (A) donnent la cardinality.
What do the letters ACID stand for?
ACID = Atomicity, Consistency, Isolation, Durability — les garanties d'une transaction fiable.
Which ACID property ensures a transaction is all-or-nothing?
L'atomicity garantit le tout ou rien. La durability (D) assure la persistance après validation.
Which ACID property ensures concurrent transactions do not interfere?
L'isolation empêche les transactions concurrentes d'interférer (via les verrous). L'atomicity (A) gère le tout ou rien.
How can a database view improve security?
Une view restreint colonnes et lignes visibles : un contrôle d'accès content-dependent (chapitre 14). Elle ne chiffre pas le disque (A).
Which key enforces referential integrity by referencing another table's primary key?
La foreign key référence la primary key d'une autre table, assurant l'intégrité référentielle. La candidate key (B) est candidate à être primaire.
An attacker manipulates input like "../../etc/passwd" to read files outside the intended directory. Which attack is this?
Remonter l'arborescence avec « ../ » = directory traversal. Parade : validation et canonicalisation des chemins.
Which attack forces a server to make requests to internal resources on the attacker's behalf?
Le SSRF force le serveur à requêter des ressources internes. Le XSS (B) vise le navigateur de la victime.
What is a PRIMARY security concern with citizen developers using low-code/no-code platforms?
Le low-code démocratise le développement mais échappe souvent aux contrôles et à la revue de sécurité — d'où le besoin de gouvernance.
Where should secrets such as API keys be stored?
Les secrets vont dans un coffre ou des variables protégées, jamais en dur (secrets scanning, chapitre 22). Les coder (A) ou les exposer (C) est une faute.
Which system uses a knowledge base and an inference engine to emulate expert decision-making?
Un expert system combine base de connaissances et moteur d'inférence pour imiter la décision d'un expert. Les autres options n'ont rien d'inférentiel.
Deducing restricted information from authorized queries is which database attack?
Déduire l'interdit à partir de requêtes autorisées = inference (chapitre 7). L'aggregation (A) additionne des faits anodins.
≥ 20/25 : félicitations, vous avez terminé les 8 domaines ! Place à la révision transverse (chapitre 24) et aux examens blancs. Entre 15 et 19 : récitez OWASP et ACID. < 15 : relisez le chapitre avant d'attaquer les blancs.