Project

General

Profile

Development #87739

Scan des uploads dans wcs

Added by Pierre Ducroquet 4 months ago. Updated 18 days ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
04 March 2024
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

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.


Related issues

Related to Intégrations graphiques Publik - Development #91959: Ajout d'un template malware.htmlSolution proposée18 June 2024

Actions
Related to Intégrations graphiques Publik - Development #92443: wcs: styler les span malware-file et waiting-for-scan-fileSolution proposée28 June 2024

Actions
Related to w.c.s. - Development #92482: clamd, envoyer les fichiers reçus/stockés par l'action d'appel webservice dans clamdSolution déployée29 June 2024

Actions
Related to w.c.s. - Development #92481: clamd, marquer les fichiers générés par l'action de création de document comme okSolution déployée29 June 2024

Actions
Related to w.c.s. - Development #92445: scan clamd, ne pas considérer l'erreur d'exécution comme un malwareSolution déployée28 June 2024

Actions
Related to w.c.s. - Development #92483: clamd, laisser l'usager télécharger ses fichiersSolution déployée29 June 2024

Actions
Related to w.c.s. - Development #92484: clamd, ne pas écraser un scan précédent réussi par un scan en erreurSolution déployée30 June 2024

Actions
Related to w.c.s. - Development #92486: clamd, permettre à l'admin de télécharger un fichier problématiqueSolution déployée30 June 2024

Actions

Associated revisions

Revision 7d028746 (diff)
Added by Emmanuel Cazenave 19 days ago

misc: scan uploads with clamd (#87739)

Revision f67de5dc (diff)
Added by Emmanuel Cazenave 19 days ago

formdata: forbid download of infected file (#87739)

Revision b44b1e27 (diff)
Added by Emmanuel Cazenave 19 days ago

formdata: display clamd status on files (#87739)

Revision b09f2f5c (diff)
Added by Emmanuel Cazenave 19 days ago

ctl: add clamdscan command (#87739)

History

#2

Updated by Robot Gitea 4 months ago

  • Status changed from Nouveau to En cours

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

#3

Updated by Frédéric Péters 4 months ago

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

Updated by Emmanuel Cazenave 4 months ago

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

Updated by Pierre Ducroquet 4 months ago

  • Assignee changed from Pierre Ducroquet to 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

Updated by Frédéric Péters 4 months ago

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

Updated by Thomas Noël (congés → 2 septembre) 4 months ago

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

Updated by Robot Gitea 3 months ago

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

#9

Updated by Robot Gitea 3 months ago

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

#10

Updated by Emmanuel Cazenave 3 months ago

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

Updated by Frédéric Péters 3 months ago

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.

#15

Updated by Robot Gitea about 1 month ago

  • Status changed from En cours to Solution proposée
#16

Updated by Emmanuel Cazenave 29 days ago

#17

Updated by Robot Gitea 19 days ago

  • Status changed from Solution proposée to En cours

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#18

Updated by Robot Gitea 19 days ago

  • Status changed from En cours to Solution proposée

Emmanuel Cazenave (ecazenave) a demandé une relecture de Frédéric Péters (fpeters) sur une pull request sur Gitea concernant cette demande :

#19

Updated by Robot Gitea 19 days ago

  • Status changed from Solution proposée to Solution validée

Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :

#20

Updated by Robot Gitea 19 days ago

  • Status changed from Solution validée to Résolu (à déployer)

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

#21

Updated by Emmanuel Cazenave 19 days ago

  • Related to Development #92443: wcs: styler les span malware-file et waiting-for-scan-file added
#22

Updated by Transition automatique 18 days ago

  • Status changed from Résolu (à déployer) to Solution déployée
#23

Updated by Frédéric Péters 18 days ago

  • Related to Development #92482: clamd, envoyer les fichiers reçus/stockés par l'action d'appel webservice dans clamd added
#24

Updated by Frédéric Péters 18 days ago

  • Related to Development #92481: clamd, marquer les fichiers générés par l'action de création de document comme ok added
#25

Updated by Frédéric Péters 18 days ago

  • Related to Development #92445: scan clamd, ne pas considérer l'erreur d'exécution comme un malware added
#26

Updated by Frédéric Péters 18 days ago

#27

Updated by Frédéric Péters 17 days ago

  • Related to Development #92484: clamd, ne pas écraser un scan précédent réussi par un scan en erreur added
#28

Updated by Frédéric Péters 17 days ago

  • Related to Development #92486: clamd, permettre à l'admin de télécharger un fichier problématique added

Also available in: Atom PDF