1.7 Given a scenario, implement controls to mitigate attacks and software vulnerabilities

  • Attack types:

  • XML attack: WAF; disable external entities; input validation; sensitive data not serialised

  • SQL injection: WAF; input sanitisation; least privilege restrictions for databases

  • Overflow attack:

    • Buffer: ASLR/DEP; NX bit; use secure functions; higher-level languages; input validation

    • Integer: range checking; prefer unsigned integers; use safer code implementations

    • Heap: higher-level languages; input validation; safe compilers; patching

  • Remote code execution: avoid using user input inside evaluated code; strict file upload extensions etc.

  • Directory traversal: ensure user cannot supply entire file path; accept known-good input

  • Privilege escalation: avoid using administrative privileges; separate privilege areas

  • Password spraying: MFA; strong passwords; user training; logging/monitoring

  • Credential stuffing: MFA; CAPTCHA; unpredictable usernames; check against leaks

  • Impersonation: use of session identifiers; packet filtering; DAI; encrypted protocols

  • Man-in-the-middle attack: session encryption; ensure only valid certificates are used

  • Session hijacking: key/cookie/link encryption; Secure & HttpOnly flags for cookies

  • Rootkit: patching; layered security; heuristic analysis; antivirus

  • Cross-site scripting:

    • Reflected: WAF; use appropriate response headers; avoid suspicious links

    • Persistent: WAF; filter input & encode data on output; escape HTML data on arrival

    • DOM: don't treat untrusted data as code; delimit untrusted data as quoted strings

  • Vulnerabilities:

    • Improper error handling: info leak through over-detailed error messages => error handling policy; error logging; graceful handling of all possible errors

    • Dereferencing: get value (NULL) in memory pointed by pointer; process failure => higher-level programming languages; sanity-check pointers prior to use

    • Insecure object reference: (IDOR) exposure of reference to internal object => user authorisation; make objects harder to enumerate (e.g. random over increments)

    • Race condition: produces unexpected result when timing of actions impact other actions => careful programming; locking (at most one thread can modify database)

    • Broken authentication: brute-forcing credentials; unexpired session tokens => MFA; no default creds; password policy; delay failed attempts; session management

    • Sensitive data exposure: steal keys; MITM; steal plaintext data (server/transit/client) => data classification; secure encryption; key management; salted hashes

    • Insecure components: public exploits for known vulnerabilities => check product versions; monitor for unmaintained products (virtual patch/WAF)

    • Insufficient logging and monitoring: lack of timely response; late detection/monitoring => failure logging; centralised logs; tamper prevention; timely incident response

    • Weak or default configurations: unpatched flaws; default accounts; unprotected files => hardening; minimalistic platforms; segmentation; review & update configurations

    • Use of insecure functions:

      • strcpy: allows BOF => input validation; use secure functions

Last updated