Skip to content

fix(models): guarda-corpos no transporte e bundle de CA configuravel - #4

Open
marvinrez wants to merge 1 commit into
danielcarletti:mainfrom
marvinrez:fix/secure-transport-guardrails
Open

fix(models): guarda-corpos no transporte e bundle de CA configuravel#4
marvinrez wants to merge 1 commit into
danielcarletti:mainfrom
marvinrez:fix/secure-transport-guardrails

Conversation

@marvinrez

Copy link
Copy Markdown

Duas opcoes de request eram aceitas em producao sem qualquer alerta:

  • verify_tls: false desativa a verificacao do certificado do servidor;
  • api_base_url_override aceitava qualquer string, inclusive http://, e tem precedencia sobre a URL oficial da SEFIN.

Com as duas, a DPS assinada - que carrega CNPJ, valores e dados do tomador - podia ser transmitida em texto claro para um host arbitrario, sem nenhum aviso ao operador. O agravante e que o README sugere o override como remedio para o erro 495 SSL Certificate Error, que e justamente o erro que leva alguem com pressa a desligar o TLS.

Passa a valer:

  • api_base_url_override exige https:// e host;
  • verify_tls: false e recusado quando environment e producao, e emite aviso nos demais ambientes;
  • verify_tls aceita o caminho de um bundle PEM de CA, resolvido em relacao ao params.json como ja acontece com certificate.chain_path.

O bundle de CA entra junto de proposito: sem ele a mudanca so retiraria a saida de emergencia de quem esbarra no 495, sem oferecer o caminho correto. requests ja aceita um caminho em verify, entao o api_client nao muda.

params.example.json continua valido sem alteracao. README documenta as duas opcoes na secao do erro 495.

Nove testes cobrem http:// recusado, URL sem host, https:// aceito, verify_tls: false recusado em producao e avisado fora dela, bundle aceito em producao, caminho relativo resolvido, bundle inexistente reportado, e o caminho chegando ate o cliente.

Duas opcoes de request eram aceitas em producao sem qualquer alerta:

- verify_tls: false desativa a verificacao do certificado do servidor;
- api_base_url_override aceitava qualquer string, inclusive http://, e tem
  precedencia sobre a URL oficial da SEFIN.

Com as duas, a DPS assinada - que carrega CNPJ, valores e dados do tomador -
podia ser transmitida em texto claro para um host arbitrario, sem nenhum aviso
ao operador. O agravante e que o README sugere o override como remedio para o
erro 495 SSL Certificate Error, que e justamente o erro que leva alguem com
pressa a desligar o TLS.

Passa a valer:

- api_base_url_override exige https:// e host;
- verify_tls: false e recusado quando environment e producao, e emite aviso
  nos demais ambientes;
- verify_tls aceita o caminho de um bundle PEM de CA, resolvido em relacao ao
  params.json como ja acontece com certificate.chain_path.

O bundle de CA entra junto de proposito: sem ele a mudanca so retiraria a
saida de emergencia de quem esbarra no 495, sem oferecer o caminho correto.
requests ja aceita um caminho em verify, entao o api_client nao muda.

params.example.json continua valido sem alteracao. README documenta as duas
opcoes na secao do erro 495.

Nove testes cobrem http:// recusado, URL sem host, https:// aceito,
verify_tls: false recusado em producao e avisado fora dela, bundle aceito em
producao, caminho relativo resolvido, bundle inexistente reportado, e o
caminho chegando ate o cliente.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants