Skip to content

Commit 68e5248

Browse files
authored
Backport: Properly NULL-terminate GSS receive buffer on error packet reception (#1498)
This pr fixes https://www.postgresql.org/support/security/CVE-2022-41862/ in cloudberry https://git.postgresql.org/cgit/postgresql.git/commit/?id=71c37797d7bd78266146a5829ab62b3687c47295 Original commit message: === pqsecure_open_gss() includes a code path handling error messages with v2-style protocol messages coming from the server. The client-side buffer holding the error message does not force a NULL-termination, with the data of the server getting copied to the errorMessage of the connection. Hence, it would be possible for a server to send an unterminated string and copy arbitrary bytes in the buffer receiving the error message in the client, opening the door to a crash or even data exposure. As at this stage of the authentication process the exchange has not been completed yet, this could be abused by an attacker without Kerberos credentials. Clients that have a valid kerberos cache are vulnerable as libpq opportunistically requests for it except if gssencmode is disabled. Author: Jacob Champion Backpatch-through: 12 Security: CVE-2022-41862
1 parent f8210ef commit 68e5248

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/interfaces/libpq/fe-secure-gssapi.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,8 @@ pqsecure_open_gss(PGconn *conn)
585585

586586
PqGSSRecvLength += ret;
587587

588+
Assert(PqGSSRecvLength < PQ_GSS_RECV_BUFFER_SIZE);
589+
PqGSSRecvBuffer[PqGSSRecvLength] = '\0';
588590
appendPQExpBuffer(&conn->errorMessage, "%s\n", PqGSSRecvBuffer + 1);
589591

590592
return PGRES_POLLING_FAILED;

0 commit comments

Comments
 (0)