• Tom Lane's avatar
    Reject extraneous data after SSL or GSS encryption handshake. · 9d5a76b8
    Tom Lane authored
    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
    9d5a76b8
pqcomm.c 49.9 KB