pgsql: Reject extraneous data after SSL or GSS encryption handshake. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Reject extraneous data after SSL or GSS encryption handshake.
Date
Msg-id E1mk7Iy-0000GE-I2@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Reject extraneous data after SSL or GSS encryption handshake.

The server collects up to a bufferload of data whenever it reads data
from the client socket.  When SSL or GSS encryption is requested
during startup, any additional data received with the initial
request message remained in the buffer, and would be treated as
already-decrypted data once the encryption handshake completed.
Thus, a man-in-the-middle with the ability to inject data into the
TCP connection could stuff some cleartext data into the start of
a supposedly encryption-protected database session.

This could be abused to send faked SQL commands to the server,
although that would only work if the server did not demand any
authentication data.  (However, a server relying on SSL certificate
authentication might well not do so.)

To fix, throw a protocol-violation error if the internal buffer
is not empty after the encryption handshake.

Our thanks to Jacob Champion for reporting this problem.

Security: CVE-2021-23214

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/9d5a76b8d18d6584341f754090c3007a54215f45

Modified Files
--------------
src/backend/libpq/pqcomm.c          | 12 ++++++++++++
src/backend/postmaster/postmaster.c | 24 ++++++++++++++++++++++++
src/include/libpq/libpq.h           |  1 +
3 files changed, 37 insertions(+)


pgsql-committers by date:

Previous
From: Alvaro Herrera
Date:
Subject: pgsql: Fix typo
Next
From: Tom Lane
Date:
Subject: pgsql: Last-minute updates for release notes.