Sommaire
- ClamAV pour Firefox: Fireclam
- Système de fichier ClamAV: ClamFS
- inotify à travers systemd.path
- Conclusion
Bonjour Nal!
Cette semaine j'ai fait la bêtise d'exécuter un .jar
en root sans l'avoir scanné auparavant… et voilà que j'ai lancé dans ma Debian un logiciel qui m'affiche de la pub et qui en plus paraît suspicieux pour clamav (pour Windows, heureusement…):
/home/adrien/Téléchargements/JOdin3CASUAL-r1035-dist.jar: Win.Worm.Chir-1370 FOUND
Je me suis donc dit que je ne me ferais plus avoir et que je scannerai dès aujourd'hui tous les fichiers provenant d'Internet (oui, parfois je fais des téléchargements par FTP ou P2P…).
Une première étape est de pouvoir scanner tout ce qui provient de Firefox^W Iceweasel (comme c'est un client HTTP et FTP, c'est de lui que proviennent la plupart de mes fichiers).
ClamAV pour Firefox: Fireclam
Très vite dans ma recherche je suis tombé sur l'extension qu'il me fallait: Fireclam. Elle permet en effet de scanner tous les fichiers téléchargés depuis Iceweasel.
Cette solution ne suffira évidemment pas, puisque parfois j'utilise Gnome Web^W^W Epiphany (le browser, pas le Double Dash like :)) ou Chromium.
Bien que ça pouvait convenir dans un premier temps, cette solution a malheureusement un gros désavantage: scanner un fichier n'est pas rapide et Iceweasel est principalement mono processus, alors le navigateur reste figé pendant quelques instants et ça se ressent très vite.
En attendant que le projet Electrolysis avance et en croisant les doigts pour que cette partie soit aussi dans un processus séparé du principal, il me fallait trouver une autre solution.
Système de fichier ClamAV: ClamFS
Une deuxième solution est apparue durant ma quête: le projet ClamFS propose de scanner automatiquement les fichiers accédés depuis un répertoire monté avec ce logiciel.
Ce logiciel fonctionne bien et a en plus la bonne idée de garder un cache des fichiers déjà scannés, ce qui permet de ne scanner le fichier qu'une fois, même si l'accès se fait dix fois.
Un premier soucis est que le message d'erreur lors de l'ouverture d'un fichier infecté est un message du style "Permission non accordée" ce qui fait d'abord penser à un fichier sans accès de lecture plutôt qu'un fichier malveillant. Ce problème est lié à FUSE et n'est pas trop dérangeant pour moi, il faut juste s'y habituer.
Par contre un point plus dérangeant est qu'il n'est pas possible de monter le dossier ~/Téléchargements
sur ~/Téléchargements
. Bien que l'on puisse faire pointer le téléchargement des navigateurs sur un dossier caché comme ~/.downloads
et laisser ClamFS créer le dossier ~/Téléchargements
(ou celui définit dans votre fichier ~/.config/user-dirs.dirs
), il reste le problème que si l'on accède au fichier depuis le navigateur, aucun scanne ne sera effectué, puisque le navigateur accédera par ~/.downloads
au lieu de ~/Téléchargements
.
Malgré ces deux désavantages, je pense garder cette solution pour l'installer sur mon serveur (typiquement pour le dossier /opt
), car le code FUSE est bien écrit et claire (disponible par SVN chez SourceForge et, vu les déboirs récent de SourceForge, cloné en GIT chez moi).
En plus, un contributeur a proposé de faire les scans lors de l'écriture des fichiers (au lieu de l'ouverture): c'est donc implémentable et l'auteur de ClamFS n'y semble pas opposé bien que la proposition dorme depuis quelques temps.
Pour moi, le top serait de pouvoir faire ceci lorsqu'un fichier est écrit :
- lancer le scan du fichier
- s'il est bon, le laisser ainsi (pas besoin de cache ici, il y a peu de chance que l'on écrive plusieurs fois le même fichier [excepté lors d'un renommage])
- s'il est mauvais:
- le renommer en
fichier.extension.VIRUS
- créer un fichier avec le nom original (donc
fichier.extension
) et y placer le rapport de ClamAV.
- le renommer en
Pour éviter de scanner une deuxième fois le fichier renommé et de scanner le fichier de rapport crée, il faut faire les deux dernières étapes dans le dossier source du montage.
Cette solution permettrait de résoudre mes problèmes avec les navigateurs: je peux ouvrir le fichier depuis le navigateur et lorsqu'il est infecté, je me retrouve avec un texte m'expliquant quel type de virus a été détecté (en plus, si je pense que c'est un faux positif, je peux toujours retrouver le fichier original facilement).
À long terme, je pense faire cette proposition au développeur de ClamFS et peut-être même tenter moi-même une implémentation.
inotify à travers systemd.path
En essayant ClamFS, je me suis souvenu que tu m'avais déjà parlé d'inotify et que tes commentaires proposait même d'utiliser systemd pour automatiser le lancement de services suite aux changements de fichier.
J'ai essayé, ça marche. Ma solution fait un peu bricolage, mais à l'avantage d'être extensible (entendre, il est facile de surveiller plusieurs dossiers en même temps).
Elle se compose de 4 fichiers systemd utilisateur (donc à placer dans ~/.local/share/systemd/user
):
- filestoscan.path
[Unit]
Description=Exécute ClamAV lors d'écriture dans le fichier ~/.files.toscan
[Path]
PathChanged=/home/adrien/.files.toscan
Unit=clamscan.service
- clamscan.service
[Unit]
Description=Scanne les fichiers listés dans ~/.files.toscan
Require=clamd.socket
[Service]
ExecStart=/bin/sh -c 'mkdir -p /tmp/virus && \
if [ -e /home/adrien/.files.toscan ]; \
then clamscan -l /tmp/virus/clamscan.log -i -o -z -f /home/adrien/.files.toscan --move=/tmp/virus/ \
&& rm /home/adrien/.files.toscan ;\
fi'
- downloads.path
[Unit]
Description=Controle les modifications de ~/Téléchargements
[Path]
PathChanged=/home/adrien/Téléchargements
Unit=listDownloads.service
- listDownloads.service
[Unit]
Description=Créer une liste de fichier à scanner
[Service]
ExecStart=/bin/sh -c "ls -t1d /home/adrien/Téléchargements/* | head >> /home/adrien/.files.toscan"
Ensuite il faut activer les unités .path
avec:
systemctl --user start downloads.path filestoscan.path
Il faut penser à l'ajouter dans ~/.xsessionrc
pour que tout soit en route lors du démarrage de ta session.
Ça fonctionne ainsi:
- Firefox écrit un fichier dans
~/Téléchargements
-
downloads.path
voit l'écriture du fichier et exécutelistDownloads.service
-
listDownloads.service
écrit la liste des 10 derniers fichiers téléchargés dans~/.files.toscan
-
filestoscan.path
remarque que ce fichier est rempli et exécuteclamscan.service
-
clamscan.service
scanne les fichiers listés dans~/.files.toscan
Cette solution est un peu alambiquée, mais elle me permet d'ajouter facilement de nouveaux répertoires à vérifier (p.ex. le ~/.cache
) sans devoir recréer le code de clamscan.service
.
Le top serait que systemd.path
puisse passer en paramètre quels fichiers ont été écrit dans ~/Téléchargements
, mais man
n'est pas très bavard à ce sujet et le web non plus… Ça m'éviterait de prendre arbitrairement les 10 derniers fichiers écrits dans le dossier ~/Téléchargements
.
Conclusion
Je ne sais pas ce que la solution de systemd va donner sur le long terme, mais je l'aime bien, parce que les fichiers de configuration de systemd sont assez claire pour moi.
J'ai déjà remarqué quelques points à améliorer dans mes services: parfois Firefox crée des fichiers .part
durant le téléchargement, il faudrait les exclure. À cause de ça, il m'est arrivé d'avoir des doublons dans le fichier ~/.files.toscan
(ça ne perturbe pas trop clamscan
, il y a juste quelques warnings écrits dans le log, mais rien de grave). D'ailleurs il faudrait idéalement éviter de créer des doublons dans le fichier ~/.files.toscan .
Et toi Nal ? Comment fais-tu avec les dossiers téléchargés ?
Est-ce que tu ne télécharges que les iso de ta distribution préférée, vérifie la somme sha1 et coupe la connexion internet jusqu'à la prochaine mise à jour ? Est-ce que tu refuses toute exécution de fichier dans ton /home ? Est-ce que tu as une solution beaucoup plus simple que je n'ai pas vu ?
# Enfin!
Posté par Nitchevo (site web personnel) . Évalué à 10.
Linux a rattrapé Windows!
[^] # Re: Enfin!
Posté par max22 . Évalué à 10.
enfin prêt pour le desktop…
# Systemd enable
Posté par Jiehong (site web personnel) . Évalué à 7.
Je pense qu'il te suffit de l'activer pour que systemd le lance au démarrage de ta session :
[^] # Re: Systemd enable
Posté par louiz’ (site web personnel) . Évalué à 5.
Exact, cependant il faut rajouter quelque chose comme
Dans filestoscan.path
[^] # Re: Systemd enable
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Je n'ai pas mon PC sous la main, mais j'ai oublié la partie [Install] avant d'essayer d'utiliser "systemctl --user enable", merci.
# Ne pas executer n'importe quoi
Posté par Anonyme . Évalué à 8.
Ca ne me parait pas très fiable. Que se passe il si on telecharge plus de 10 fichiers rapidement ? Ou si par hasard se trouvent dans le dossier Téléchargement 10 fichiers avec une date dans le futur ? Si l'on telecharge un fichier lorsqu'un scan est deja en train de tourner, et juste avant le "rm .files.toscan" ? Et ca, ce ne sont que les cas tordus les plus evidents.
Moi, je n'ai pas de systeme compliqué pour scanner automatiquement les fichiers. En fait, je ne télécharge pas des fichiers executables toutes les 5 minutes, c'est plutot quelquechose d'exceptionnel. Et de toute facon, dans ce cas la, je ne fais pas confiance à un antivirus, sachant qu'il est trivial de créer un programme malveillant qui ne sera pas détécté. Quand j'execute un binaire, c'est que je connais d'ou il vient, que j'ai confiance dans la source, et verifié la signature. Ou alors j'execute ca dans une VM.
[^] # Re: Ne pas executer n'importe quoi
Posté par Michaël (site web personnel) . Évalué à 4.
Vu les progrès énorme faits virtualisation dans les dernières années — aujourd;hui c'est hyoper facile à utiliser — cela me semble aussi la solution la plus raisonnable pour exécuter des programmes d'origine douteuse.
[^] # Re: Ne pas executer n'importe quoi
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 3.
Les machines virtuelles ont en effet bien évolué, mais comme c'était pour flasher un téléphone, je ne suis pas sûr que la communication USB soit transmise correctement (et avec le protocole USB 2, pas comme sous VirtualBox où par défaut seul la version 1 est gérée).
[^] # Re: Ne pas executer n'importe quoi
Posté par NeoX . Évalué à 3.
il me semble qu'il suffit d'installer :
- L'extension PACK dans virtualbox : https://www.virtualbox.org/wiki/Downloads
- les "guest addition" dans la machine virtuelle
[^] # Re: Ne pas executer n'importe quoi
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 3.
C'est bien ce que je disais, par défaut, VirtualBox ne gère pas l'usb2. Il faut accepter leur licence spéciale PUEL.
[^] # Re: Ne pas executer n'importe quoi
Posté par NeoX . Évalué à 2.
leur PUEL te demande d'utiliser l'extension pack, uniquement pour un usage personnel
en gros ils ne souhaitent pas que tu montes un gros serveur virtualbox, et que tu revendes du service de VMs à des clients (usage commercial) ou que tu fasses la meme chose dans ton entreprise.
en meme temps, l'USB1 pour des clients distants, ca doit bien suffire, puisqu'il faut etre sur la machine pour brancher l'appareil :p
[^] # Re: Ne pas executer n'importe quoi
Posté par François Chaix (site web personnel) . Évalué à 2. Dernière modification le 27 juin 2015 à 18:57.
Dans ce cas-là, ce que je ferai, moi, ce serait d'utiliser un liveCD/USB (tant que c'est pas persistant) pour exécuter en root ce machin. Ça fait la même chose que la VM, puisque ça ne peut pas installer quoi que ce soit dans le vrai système de la machine (qui est bien sûr sur une partition chiffrée non montée, ça va de soi).
Le seul problème qui subsiste, c'est que certains virus sont capables de se mettre dans les firmwares du matos. Et à ça, je n'ai pas vraiment de réponse, à part d'utiliser un vieux PC pourri qui ne sert presque jamais, et en tout cas pas pour des trucs importants.
Edit : Bon, ok, le problème du vieux PC pourri, c'est qu'il n'a sûrement pas de l'USB3. Mais bon, zut à la fin, on ne peut pas tout avoir !
La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.
[^] # Re: Ne pas executer n'importe quoi
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Oui, c'est en effet une très bonne solution et ça évite de se créer une VM juste pour ça. Si on ne chiffre pas ses disques, on peut aussi simplement les débrancher.
Pour l'instant, je ne connais pas de téléphone avec de l'USB3 ;) C'est juste que pour flasher ~250 Mo, tu as intérêt quand même à pouvoir utiliser de l'USB2 au lieu de l'USB1.
# Règle de sécurité
Posté par David Demelier (site web personnel) . Évalué à 0.
Personnellement, je ne lance aucun binaire sur ma machine. Toutes mes applications viennent des dépôts officiels ou au pire je les compile à la main (CMake, Qt 5.4 par exemple).
Un .jar, jamais de la vie je l'aurais lancé, encore moins en root !
Pareil pour les applications qui te mettent ce genre d'instructions pour l'installation :
À fuir comme la peste :-)
git is great because linus did it, mercurial is better because he didn't
[^] # Re: Règle de sécurité
Posté par Solareagle . Évalué à 3.
Alors, en root, sûrement pas, mais on trouve pas mal de simulations pour l'enseignement des sciences, telles que celles que l'on trouve sur le site PHET de l'université du Colorado, simulations qui sont souvent très bien faites je trouve.
[^] # Re: Règle de sécurité
Posté par Michaël (site web personnel) . Évalué à 7.
Si tu installes un logiciel tiers à partir des sources, il faudra bien que tu exécutes du code shell que eux ont écrit avec les droits root. Que tu fasses un
curl -L -O http://mysupersoft/install.sh | bash
ou unsudo make install
ne fait pas de grand différence – tant que tu fais confiance au téléchargement.[^] # Re: Règle de sécurité
Posté par Anonyme . Évalué à 4.
Oui, et faire confiance à un "curl http://…" c'est pas forcement une bonne idée …
[^] # Re: Règle de sécurité
Posté par fearan . Évalué à 4.
heu il y a une grosse différence entre faire un sudo make install ou un install.sh et faire de même avec un .jar
le make install ou le install.sh (surtout le make qui avec l'option --just-print install qui permet de vérifier avant), pour le install.sh va falloir le lire et c'est pas forcément évident. Évidemment on peut cacher des trucs dedans, mais c'est moins facile qu'avec un jar.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Règle de sécurité
Posté par Michaël (site web personnel) . Évalué à 2.
Ah oui il y a une énorme différence! Je réponds à un commentaire (qui ne parle pas de
jar
mais decurl - | sh
).[^] # Re: Règle de sécurité
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Les compiler à la main n'enlève pas les backdoors ;) Il faudrait faire une lecture du code avant de compiler et d'exécuter.
Oui, mais ainsi je pouvais flasher mon téléphone…
[^] # Re: Règle de sécurité
Posté par fearan . Évalué à 3.
si c'est un galaxy tu as heimdal qui marche sous nux, par contre, pour le reste je sais pas.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Règle de sécurité
Posté par syj . Évalué à 1.
Si tu as un besoin impératif de flasher ton téléphone.
Achète un téléphone qui peut être flashé avec un dd ,c'est plus safe. Tu n'as alors besoin de ne faire confiance qu'au fournisseur de l'image.
PS: Je ne sais pas si çà existe :)
[^] # Re: Règle de sécurité
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Si, ça existe, c'est un OpenMoko ou un GTA04 et le système est simplement sur une carte microSD (tu peux aussi le transférer dans le NAND depuis la microSD).
# Solution systemd
Posté par Xaapyks . Évalué à 3.
Si je comprends bien, il y a une race condition avec la solution systemd, non ?
Pour un gros fichier qui mettrait du temps à être scanné, tu ne sais pas où le scan en est (en cours ? terminé ?) et si tu exécutes ton binaire/script/jar avant que le scan soit fini, tu exécutes du code malicieux ?
[^] # Re: Solution systemd
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Pour savoir où en est le scan, la commande "systemctl --user status clamscan.service" est suffisante.
Je n'ai en effet pas pensé à la situation des gros fichiers, mais j'imagine une solution assez simple:
[^] # Re: Solution systemd
Posté par Xaapyks . Évalué à 2.
Mouais…
Si c'est aussi lourd à faire, tu ne le feras pas, ou alors que les 4 premiers jours
Si tu ouvres depuis Firefox/Iceweasel, il exécutera pas le fichier comme un script avec ./ mais invoquera le bon binaire de /usr/bin avec le fichier en paramètre. Les permissions d’exécution seront même pas regardées.
# curl http://adresse/web | sudo sh
Posté par Ife . Évalué à 7.
Tout le monde sait que c'est la meilleure manière d'installer un logiciel sur Linux.
Ruby est le résultat d'un gamin qui apprend le Java, puis jette un œil à Perl et se dit « je peux le réparer! »
# A ta place, je réinstallerai
Posté par syj . Évalué à 4.
Avant de me poser la question de comment scanner , je réinstallerai l'ensemble du poste à partir d'une distribution.
Si le programme arrive à te lancer des spots de pub. Tu ne sais pas si il n'a pas ouvert des backdoor, rootkit pour un usage ultérieur.
Sinon personnellement , j'utilise le site virustotal.com pour analyser et si le fichier a été scanné depuis moins d'un mois, je le laisse de côté et je le rescanne dans un mois.
Si ClamAV qui est dans la liste des antivirus ne l'identifie comme un virus , je vais soumettre mon exemplaire à ClamAV.
D'une manière générale,je n'utilise que des programmes qui viennent des dépots officiels aussi
[^] # Re: A ta place, je réinstallerai
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Merci pour le conseil, en effet une réinstallation est de mise.
Je ne connaissais pas virustotal.com, mais je crois que je préfère avoir confiance en clamav en local plutôt qu'un service web qui pourrait un jour vendre un service de "non-détection" de virus… (clamav aussi pourrait, mais au moins on peut relire le code).
[^] # Re: A ta place, je réinstallerai
Posté par oinkoink_daotter . Évalué à 3.
Oui, c'est possible (même si c'est peu probable(*), ou alors pour des trucs dont tu ne seras jamais la cible -je parle d'attaques de niveau stuxnet- ).
Mais mettre ça en balance d'un Clamav, comment dire… c'est avoir une très très haute opinion de Clamav, à mon avis, très mal placée.
(*) peu probable ou dans le sens où la vente du service multi antivirus est le business model de VT. Le jour où un AV utilisé par VT ne remontera pas une alerte alors que la version identique en standalone le ait, VT sera mort. C'est un site très utilisé dans le milieu de la sécurité, connu pour être assez paranoïaque. En fait, comme il est en accès libre, ce que font les méchants, c'est bricoler leurs malwares jusqu'à ce qu'ils passent VT sans être détecté. Jeu du chat et de la souris bien connu.
[^] # Re: A ta place, je réinstallerai
Posté par fearan . Évalué à 2.
Sans aller jusqu'à la vente de service, la NSA ou tout autre agence pourrait avoir un intérêt à ce que le service laisse passer 2/3 trucs. Sans oublier la bonne base utilisateur à vendre ;)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: A ta place, je réinstallerai
Posté par oinkoink_daotter . Évalué à 2.
Oui bien sûr !
Sauf que si tu regardes un peu le truc, tu te rends compte que vu le bizness model de la boîte, c'est surtout du pays d'origine dont il faut se méfier (connu d'ailleurs pour son activisme de ce point de vue). Et lui, en fait n'a pas vraiment besoin que le site réponde non à leur malware, il leur suffit juste que les AV ne le détectent pas, et justement VT leur fourni la capacité d'analyse bien gentiment (on m'a confirmé qu'il était aussi utilisé dans ce sens par des gens méchants).
[^] # Re: A ta place, je réinstallerai
Posté par Yann Hirou . Évalué à 2.
VirusTotal.com n'est pas un service web perdu au fin fond du net, ils ont été rachetés en 2012 par Google (source: https://fr.wikipedia.org/wiki/VirusTotal)
Bémol sur leur utilisation: une fois soumis vous ne contrôlez plus vos fichiers… donc attention à ne soumettre que les fichiers sur lesquels vous avez un gros doute !
extrait de leur FAQ:
[^] # Re: A ta place, je réinstallerai
Posté par syj . Évalué à 1.
En usage Pro, il y avait une recommandation du CERTA dans un de ses numéros hebdomadaire qui indiquait qu'il ne faut pas utiliser ce genre de site si on travaille pour une grosse société ou une institution.
Par exemple, si tu bosses dans le nucléaire , çà pourrait faire du bruit si çà se sait que tu as reçu tel Trojan sur une
de tes machines.
[^] # Re: A ta place, je réinstallerai
Posté par xcomcmdr . Évalué à 2.
Si tu bosses dans le nucléaire et que tes machines sont reliés à Internet, c'est déjà pas bon…
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: A ta place, je réinstallerai
Posté par syj . Évalué à 1.
Je ne serais pas surpris que le service RH/Paie d'une centrâle ne possède pas d'accès Internet…
On parle depuis 2 ou 3 semaines du vol des données RH des fonctionnaires américains.
Je n'aimerai pas faire partie du service informatique qui est à l'origine de la faille sécurité.
[^] # Re: A ta place, je réinstallerai
Posté par oinkoink_daotter . Évalué à 2.
Ils n'ont pas de messagerie sur les postes bureautique ?
[^] # Re: A ta place, je réinstallerai
Posté par jyes . Évalué à 4.
Non, quand on travaille « dans le nucléaire » (remarque que vu la formulation, c’est un travail que l’on ne doit pas exercer bien longtemps), on n’a que des craies et des ardoises, parce-qu’on est des gens précautionneux.
[^] # Re: A ta place, je réinstallerai
Posté par flan (site web personnel) . Évalué à 7. Dernière modification le 24 juin 2015 à 20:41.
Pourquoi y aurait-il besoin d'internet pour avoir une messagerie ?
# ClamAV : nid à vulnérabilités
Posté par cowboy . Évalué à 2.
Tout scanner avec ClamAV n'est pas forcément une bonne idée … au contraire.
Vu le nombre de vulnérabilités dans son code atroce, mieux vaut faire attention et éventuellement utiliser VirusTotal que d'installer ClamAV.
[^] # Re: ClamAV : nid à vulnérabilités
Posté par Benoît Sibaud (site web personnel) . Évalué à 7.
Quelques infos chiffrées : http://www.cvedetails.com/vulnerability-list/vendor_id-8871/product_id-15657/Clamav-Clamav.html
# L'art du troll
Posté par Jean-Philippe Garcia Ballester (site web personnel) . Évalué à 2.
Sauf erreur, je crois que tu fais référence à mon commentaire dans le journal inotify. Ca me fait un peu rire, parce que à la base je l'avais surtout écrit pour troller les anti-systemd :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.