Skip to content

ssl-with-bad-defaults (S503)

Derived from the flake8-bandit linter.

What it does

Checks for function definitions with default arguments set to insecure SSL and TLS protocol versions.

Why is this bad?

Several highly publicized exploitable flaws have been discovered in all versions of SSL and early versions of TLS. The following versions are considered insecure, and should be avoided:

  • SSL v2
  • SSL v3
  • TLS v1
  • TLS v1.1

Example

import ssl


def func(version=ssl.PROTOCOL_TLSv1): ...

Use instead:

import ssl


def func(version=ssl.PROTOCOL_TLSv1_2): ...