Projet

Général

Profil

Development #87739

Scan des uploads dans wcs

Ajouté par Pierre Ducroquet il y a environ 2 mois. Mis à jour il y a environ 17 heures.

Statut:
En cours
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
04 mars 2024
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Pour répondre positivement aux audits de sécurité, et apporter une protection supplémentaire aux postes des agents en cas de faille dans la protection locale, il faut mettre en place un scan par antivirus des pièces jointes dans wcs.

Historique

#2

Mis à jour par Robot Gitea il y a environ 2 mois

  • Statut changé de Nouveau à En cours

Pierre Ducroquet (pducroquet) a ouvert une pull request sur Gitea concernant cette demande :

#3

Mis à jour par Frédéric Péters il y a environ 2 mois

Pour info côté démarches simplifiées, le comportement a récemment été modifié, https://github.com/demarches-simplifiees/demarches-simplifiees.fr/issues/9733 :

Pour l'usager il y avait précédemment un retour pour lui indiquer que le fichier n'était pas bon, ça a été retiré (de toute façon le fichier est déjà chez l'usager, tant pis pour lui).

Pour l'agent le nom du fichier apparait mais sans lien pour le télécharger tant que l'antivirus n'est pas passé sur le fichier. (et s'il est passé et que le fichier est mauvais, ça reste pas téléchargeable + une note d'explication).

On pourrait imaginer en plus, pour les admins, pour analyse, avoir un lien de téléchargement qui fournisse le fichier dans un zip chiffré.

#4

Mis à jour par Emmanuel Cazenave il y a 30 jours

Je me dis qu'on pourrait faire encore plus simple, uniquement de l'affichage (antivirus pas passé/anti-virus passé et OK/antivirus passé et NOK faites attention) sans restriction sur le téléchargement.

La restriction du téléchargement entraîne des complications de traitement de la demande, je me dis qu'on serait mieux à ne pas mettre un doigt là dedans.

@Pierre je veux bien reprendre ce ticket.

#5

Mis à jour par Pierre Ducroquet il y a 25 jours

  • Assigné à changé de Pierre Ducroquet à Emmanuel Cazenave

Emmanuel Cazenave a écrit :

@Pierre je veux bien reprendre ce ticket.

Avec le plus grand plaisir !
J'ai fait ce que je sais faire, l'interaction avec clamd, mais la partie intégration dans wcs et surtout l'interaction avec le machin qu'on appelle humain, c'est pas mon truc :)

À ta dispo si t'as le moindre doute ou la moindre interrogation sur la partie clamav/clamd.

#6

Mis à jour par Frédéric Péters il y a 25 jours

La restriction du téléchargement entraîne des complications de traitement de la demande, je me dis qu'on serait mieux à ne pas mettre un doigt là dedans.

Je pense important une fois qu'un fichier est connu comme vérolé de ne pas pouvoir le télécharger, je ne vois pas ce que ça change au traitement de la demande ? (entre "ne pas pouvoir le télécharger" et "compter sur l'agent qui va voir que c'est écrit 'ne pas cliquer' à côté du fichier").

#7

Mis à jour par Thomas Noël il y a 25 jours

Frédéric Péters a écrit :

Je pense important une fois qu'un fichier est connu comme vérolé de ne pas pouvoir le télécharger, je ne vois pas ce que ça change au traitement de la demande ? (entre "ne pas pouvoir le télécharger" et "compter sur l'agent qui va voir que c'est écrit 'ne pas cliquer' à côté du fichier").

Mes 2 cents sur l'affaire. C'est moi qui a dit que pour que le traitement des demandes des citoyens reste équitable, il faudra éviter que des demandes ne puissent pas être traitées à cause de l'anti-virus. Mais on peut aussi imaginer un mode "trouille" où on désactive effectivement le chargement des fichiers non-scannés, ou détectés comme virus, ou pas scannés depuis X heures.

Je proposerais un affichage selon la date du dernier scan :
  • document jamais scanné : « ce document n'est pas encore passé dans l'anti-virus, vous ne pouvez pas le télécharger »
  • scanné récemment : « ce document a été scanné le x/x/x à xhx par l'anti-virus » (et le lien vers le download)
  • scanné il y a plus de X heures (configurable par tenant) : « ce document a été scanné le x/x/x à xhx par l'anti-virus, un nouveau scan va être programmé », pas de lien ... (+ un lien pour lancer un scan ?)
  • (et bien sûr le cas du fichier scanné et détecté vérolé, là c'est plus facile)

A voir ensuite avec quelle fréquence on programme le scan des documents, de fait un truc qui tourne en permanence serait idéal, avec une parallélisation sur "n" tenants en simultané, toute optimisation bienvenue... à voir éventuellement ce que clamav/clamd sait faire sur un "pool" de fichiers, si ça optimise ou pas...

Tout cela en plus, bien sûr, d'un scan au moment de la réception du fichier, en asynchrone (worker) ?

#8

Mis à jour par Robot Gitea il y a 11 jours

Emmanuel Cazenave (ecazenave) a ouvert une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Robot Gitea il y a 11 jours

Emmanuel Cazenave (ecazenave) a fermé une pull request sur Gitea concernant cette demande.

#10

Mis à jour par Emmanuel Cazenave il y a environ 18 heures

Je commence le travail sur l'interface et voici ce que je m'apprête à faire.

Toucher aux deux seules vues de backoffice qui permettent de télécharger des fichiers (sauf erreur de ma part) :

  • /backoffice/management/monformulaire/XX/download?f=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
  • /backoffice/management/monformulaire/XX/attachment?f=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

Si un fichier est scanné et pas de virus, RAS ça fonctionne comme d'habitude.

Si pas scanné ou scanné et vérolé on redirige vers une page qui:

  • explique la situation
  • permet de revenir d'où l'on vient (via le referer de la requête d'origine)
  • permet de télécharger quand même si on a je ne sais quelle permission
#13

Mis à jour par Frédéric Péters il y a environ 17 heures

Je pense qu'il faut dès le début apporter les mêmes restrictions en front, surtout qu'a priori c'est le même code et donc limite plus facile de faire ainsi.

permet de revenir d'où l'on vient (via le referer de la requête d'origine)

Oublie le referer, c'est une mauvaise donnée, simplement javascript:back() s'il faut vraiment un lien de retour.

Formats disponibles : Atom PDF