[Ajout de l'entête "Connection: close" dans l'écran de sécurité] : ne pas faire bénéficier du keep-alive aux éventuelles attaquant. #4243

Closed
opened 3 years ago by g0uZ · 6 comments
g0uZ commented 3 years ago

Tout est dans le titre. L'idée est toujours la même : couper la connexion TCP lorsque qu'une erreur (503 ici) est rencontré. On évite ainsi de faire bénéficier du keep-alive un attaquant et on le fait "tomber" plus rapidement dans les règles de protection du FW (obligation de faire une 1 connection TCP par requête en erreur).

NB : nginx ne ferme pas la connection si PHP renvoi cet entête (il suffit de définir des pages d'erreur personnalisé associées à une location définissant un keep-alive-timeout a 0)

Tout est dans le titre. L'idée est toujours la même : couper la connexion TCP lorsque qu'une erreur (503 ici) est rencontré. On évite ainsi de faire bénéficier du keep-alive un attaquant et on le fait "tomber" plus rapidement dans les règles de protection du FW (obligation de faire une 1 connection TCP par requête en erreur). NB : nginx ne ferme pas la connection si PHP renvoi cet entête (il suffit de définir des pages d'erreur personnalisé associées à une location définissant un keep-alive-timeout a 0)
b_b commented 3 years ago
Owner

La modification semble simple, tu peux fournir un patch pour relecture stp ?
Statut changé à En cours

La modification semble simple, tu peux fournir un patch pour relecture stp ? **Statut changé à En cours**
Owner

Version cible mise à 4.0

**Version cible mise à 4.0**
Owner

Le patch tout simple :

diff --git a/ecran_securite.php b/ecran_securite.php
index dfb02bb..4ae6417 100644
--- a/ecran_securite.php
+++ b/ecran_securite.php
`` -643,6 +643,7 `` if (isset($ecran_securite_raison)) {
 	header("Cache-Control: no-cache, must-revalidate");
 	header("Pragma: no-cache");
 	header("Content-Type: text/html");
+	header("Connection: close");
 	die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
 }

Est-ce qu'on envoie aussi l'entête en cas de dépassement du load ? (je pense que oui, mais dans le doute...)

Le patch tout simple : ``` diff --git a/ecran_securite.php b/ecran_securite.php index dfb02bb..4ae6417 100644 --- a/ecran_securite.php +++ b/ecran_securite.php `` -643,6 +643,7 `` if (isset($ecran_securite_raison)) { header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Type: text/html"); + header("Connection: close"); die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>"); } ``` Est-ce qu'on envoie aussi l'entête en cas de dépassement du load ? (je pense que oui, mais dans le doute...)
Owner
https://git.spip.net/spip-contrib-outils/securite/pulls/2
Owner

intégré par 3eccaf4142

intégré par https://git.spip.net/spip-contrib-outils/securite/commit/3eccaf41426d4f3c8f28b50d81e12fbe5f8af4c2
Owner

et reporté par d9e311c89b
Statut changé à Fermé

et reporté par https://git.spip.net/spip/spip/commit/d9e311c89ba9e10a44a733954ed44eac128df41a **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.