Skip to main content

Introduction to software security

Security is a non-functional requirement of software engineering. Creating inherently secure applications is a fundamental, yet often unknown, skill for a good developer or software engineer.

A vulnerability is software is an unmet security specification. Bug-free software does not exist and not all bugs lead to vulnerabilities.

Even if a vulnerability exists, there may not be an exploit for it.

The key issues in secure designs are:

    Reduce privileged parts to a minimum Keep it simple Discard privileges definitively as soon as possible Open design: not rely on obscurity Take care of concurrency and race conditions Fail-safe and default deny. Filter the input and the output. Use trusted libraries Use trusted entropy sources such as /dev/urandom