Obfuscação de sslpassword com hook PQsetSSLKeyPassHook_OpenSSL
William Ivanski
EnterpriseDB
2024-11-08 16:30:00 - AUDITORIO 2
PostgreSQL permite a conexão utilizando certificados de cliente, especificados pelos parâmetros de string de conexão "sslcert" e "sslkey". Se o certificado for criptografado em disco e requerer uma senha, a mesma é solicitada iterativamente através da pergunta "Enter PEM pass phrase:". O parâmetro "sslpassword" suprime essa pergunta iterativa da senha.
Porém, como o parâmetro "sslpassword" requer a senha em texto puro e não é incluso no arquivo .pgpass, em alguns casos pode ser necessário obfuscar essa senha, por exemplo quando a string de conexão é armazenada no catálogo de replicação.
Nessa palestra:
- Explicamos e exemplificamos a conexão usando certificados de cliente com e sem senha;
- Ilustramos a problemática acima, propondo a necessidade de obfuscar a senha "sslpassword" na string de conexão;
- Apresentamos código-fonte escrito em C para construir um módulo que utiliza o hook "PQsetSSLKeyPassHook_OpenSSL" para de-obfuscar a senha "sslpassword" em memória no momento da conexão com o PostgreSQL;
- Ilustramos todos os passos necessários para construir esse módulo carregar ele em memória junto com a "libpq" usando "LD_PRELOAD", para que aplicações possam conectar com o PostgreSQL utilizando certificados de cliente criptografados, com senha "sslpassword" obfuscada na connection string.
Obfuscação de sslpassword com hook PQsetSSLKeyPassHook_OpenSSL
William Ivanski
EnterpriseDB
2024-11-08 16:30:00 - AUDITORIO 2
PostgreSQL permite a conexão utilizando certificados de cliente, especificados pelos parâmetros de string de conexão "sslcert" e "sslkey". Se o certificado for criptografado em disco e requerer uma senha, a mesma é solicitada iterativamente através da pergunta "Enter PEM pass phrase:". O parâmetro "sslpassword" suprime essa pergunta iterativa da senha. Porém, como o parâmetro "sslpassword" requer a senha em texto puro e não é incluso no arquivo .pgpass, em alguns casos pode ser necessário obfuscar essa senha, por exemplo quando a string de conexão é armazenada no catálogo de replicação. Nessa palestra: - Explicamos e exemplificamos a conexão usando certificados de cliente com e sem senha; - Ilustramos a problemática acima, propondo a necessidade de obfuscar a senha "sslpassword" na string de conexão; - Apresentamos código-fonte escrito em C para construir um módulo que utiliza o hook "PQsetSSLKeyPassHook_OpenSSL" para de-obfuscar a senha "sslpassword" em memória no momento da conexão com o PostgreSQL; - Ilustramos todos os passos necessários para construir esse módulo carregar ele em memória junto com a "libpq" usando "LD_PRELOAD", para que aplicações possam conectar com o PostgreSQL utilizando certificados de cliente criptografados, com senha "sslpassword" obfuscada na connection string.