J'ai exécuté un scanner de programmes malveillants sur mon site, qui marquait un groupe de fichiers EXE compressés comme des fichiers de risques potentiels (ces fichiers ont été téléchargés par les utilisateurs). Comme je suis capable de décompresser les fichiers sur mon Mac, je suppose que ce sont de vrais fichiers ZIP et pas seulement des fichiers PHP renommés.
Le fichier ZIP ne devrait donc présenter aucun risque pour mon serveur Web, n'est-ce pas?
security
anti-virus
malware
Xavin
la source
la source
file foo.zip
, ou même si elles sont valides7z t foo.zip
pour le tester (c'est-à-dire décompresser et vérifier les totaux de contrôle CRC, sans extraire dans des fichiers locaux sur le disque). (7z
utilise une syntaxe quelque peu similaire àtar
.) Ouunzip -l foo.zip
pour lister le contenu. Quoi qu'il en soit, j'ai juste trouvé bizarre que vous parliez de vérifier les fichiers sur un autre ordinateur alors que vous auriez facilement pu les vérifier sur le serveur.Réponses:
S'ils sont en fait des fichiers Windows exe compressés, ils devraient être inoffensifs pour votre système Linux, à moins que quelque chose comme Wine ne soit en place pour tenter de les exécuter.
Mais s’ils se trouvent dans votre chemin Web, ils pourraient être des logiciels malveillants et représenter un risque important pour les visiteurs de vos sites Web (et vous-même, si vous êtes marqué comme source de programmes malveillants et que les utilisateurs reçoivent des avertissements déplacés lorsqu'ils tentent de consulter votre site Web). site).
la source
.zip
fichiers mal formés qui tentent de cibler les failles dans des implémentations de décompression spécifiques.Bien que vous ayez probablement raison dans ce cas, votre hypothèse n’est peut-être pas toujours valable. Une archive ZIP reste valide même si vous y ajoutez des données arbitraires. Il est donc tout à fait possible de créer un fichier qui est simultanément une archive ZIP valide contenant des données innocentes et également un script PHP malveillant. Ce n'est même pas particulièrement difficile; concaténez simplement le code PHP et le fichier ZIP, et assurez-vous (par exemple, en utilisant
__halt_compiler()
) que PHP n'essaiera pas d'analyser les données d'archive ZIP ajoutées.Cette astuce est légitimement utilisée pour créer des fichiers ZIP à extraction automatique, mais il est parfaitement possible de rajouter de la même manière toute autre donnée cachée ou code exécutable dans un fichier ZIP. Certains programmes peuvent refuser d’ouvrir ces fichiers ZIP modifiés (mais dans l’affirmative, ils violent techniquement les spécifications de format ZIP), ou ils peuvent identifier le fichier comme autre chose qu’un fichier ZIP par défaut, mais en général, si vous alimentez un tel fichier. fichier dans le code qui attend un fichier ZIP, il sera probablement accepté comme tel.
Une utilisation malveillante plus courante de telles astuces consiste à dissimuler le code d’exploitation dans un conteneur ZIP (par exemple, un fichier JAR) en quelque chose d’offensif (comme une image GIF, comme dans l’ exploit GIFAR ), mais rien ne l’ empêche de le faire. également utilisé, par exemple, pour contourner un filtre de téléchargement de fichier naïve qui interdit le téléchargement de scripts PHP mais autorise les fichiers ZIP, sans vérifier si le fichier téléchargé peut être les deux à la fois.
la source
Il y a au moins deux considérations notables à prendre en compte:
Ainsi, selon ce que votre serveur ne le fichier pourrait potentiellement être nocif pour votre serveur ou d' autres utilisateurs. Comme je me méfie des fichiers EXE téléchargés sur Internet, je dirais que les téléchargeurs potentiels sont les utilisateurs les plus à risque ici.
la source
Vous pouvez vérifier si les fichiers sont exécutables sur votre serveur Linux en les vérifiant simplement avec la
file FILENAME.exe
commande. Les fichiers binaires Elf (le format exécutable utilisé sous Linux) peuvent être nommés avec une.exe
extension pour gêner un administrateur Linux peu méfiant. Il est donc sage de le vérifier avant de vous assurer aveuglément que ces fichiers ne sont pas exécutables.la source
Je suis surpris que personne ne mentionne que des données peuvent être (ou être faites pour être) nuisibles à tout programme (buggy). C'est la base du fuzzying. Par exemple, vous pouvez avoir un fichier JPEG (ou de type JPEG) provoquant un débordement de mémoire tampon sur des décodeurs JPEG (spécifiques?), Ce qui peut provoquer un déni de service ou une exécution de code arbitraire. Il s’agit de subvertir un programme de traitement de données existant; pas besoin d'apporter un nouvel exécutable! Et c’est la raison pour laquelle les principes du sandboxing, de la désinfection des entrées et du moindre privilège sont nécessaires.
Ainsi, dans votre cas, vous pourriez avoir un fichier ZIP causant des problèmes sur les moteurs de décodage ZIP (spécifiques?). Il n'est pas nécessaire que le fichier ZIP contienne un exécutable natif pour qu'il soit dangereux.
Cela dit, votre scanner fonctionne à un autre niveau, plus grossier. Si le type de risque dont je parle existait dans ces fichiers, vous avez déjà été touché au moment où vous les avez traités :).
la source
Il y a eu des attaques qui incorporent des données et présentent toujours des fichiers comme valides. Sur un serveur mal configuré ou dans une application mal codée, cela pourrait entraîner l'exécution du code sur votre serveur.
Alors, faites attention à cela aussi.
la source
Une vérification supplémentaire que vous devriez idéalement mettre en place est la méthode php finfo pour vérifier si les fichiers téléchargés par les utilisateurs sont réellement ceux que vous avez autorisés, et non quelque chose comme quoi les utilisateurs ont renommé les fichiers simplement pour tromper le système.
la source
Les fichiers .exe décompressés sont également inoffensifs pour les serveurs Linux.
la source
.exe
ne fait pas plus partie du nom de fichier et cela pourrait également être choisi comme nom d'un fichier binaire ELF.