﻿﻿{"id":1597,"date":"2025-11-14T06:44:20","date_gmt":"2025-11-14T05:44:20","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/imunifyav-le-scanner-qui-execute-les-malwares\/"},"modified":"2025-11-14T06:44:20","modified_gmt":"2025-11-14T05:44:20","slug":"imunifyav-le-scanner-qui-execute-les-malwares","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/imunifyav-le-scanner-qui-execute-les-malwares\/","title":{"rendered":"ImunifyAV &#8211; Le scanner qui ex\u00e9cute les malwares"},"content":{"rendered":"<p>ImunifyAV, le scanner AV qui prot\u00e8ge 56 millions de sites Linux, vient de se faire pwn par le malware qu\u2019il essayait de d\u00e9tecter. Et c\u2019est pas la premi\u00e8re fois\u2026<\/p>\n<p>En effet,<br \/>\n<a href=\"https:\/\/patchstack.com\/articles\/remote-code-execution-vulnerability-found-in-imunify360\/\">Patchstack<\/a><br \/>\nvient de r\u00e9v\u00e9ler une faille RCE critique dans <strong>ImunifyAV<\/strong>, qui je le rappelle est un scanner antivirus gratuit ultra r\u00e9pandu dans l\u2019h\u00e9bergement mutualis\u00e9. Le probl\u00e8me en fait c\u2019est que AI-bolit, le composant qui d\u00e9obfusque le code PHP malveillant pour l\u2019analyser, utilise la fonction <code>call_user_func_array<\/code> sans v\u00e9rifier les noms de fonctions qu\u2019elle ex\u00e9cute.<\/p>\n<p>Boooh ! Du coup, vous uploadez un fichier PHP malveillant sp\u00e9cialement con\u00e7u pour l\u2019occasion par un attaquant, ImunifyAV le scanne pour voir si c\u2019est un malware, le d\u00e9obfusque pour comprendre ce qu\u2019il fait, et hop, le code malveillant s\u2019ex\u00e9cute avec les privil\u00e8ges du scanner.<\/p>\n<p>Game over.<\/p>\n<p>H\u00e9 pour qu\u2019un antimalware d\u00e9tecte un virus, il doit analyser son code mais si les cybercriminels obfusquent leur malware pour cacher le code, l\u2019antimalware doit alors le d\u00e9obfusquer avant d\u2019analyser. Mais d\u00e9obfusquer du code PHP, \u00e7a veut dire aussi l\u2019ex\u00e9cuter partiellement pour voir ce qu\u2019il fait vraiment\u2026 d\u2019o\u00f9 cette RCE.<\/p>\n<p>La faille affecte donc toutes les versions avant la 32.7.4.0 et le correctif apporte juste une fonctionnalit\u00e9 de whitelist de fonctions autoris\u00e9es pendant la d\u00e9obfuscation. Il \u00e9tait temps, m\u00eame si maintenir une whitelist de fonctions safe, \u00e0 terme c\u2019est un cauchemar car y\u2019a des centaines de fonctions dans PHP. Certaines sont safe seules mais dangereuses combin\u00e9es et je pense que les cybercriminels trouveront toujours un moyen de contourner cette whitelist.<\/p>\n<p>En tout cas, comme je le laissais entendre en intro, c\u2019est pas la premi\u00e8re fois qu\u2019AI-bolit se fait avoir sur la d\u00e9obfuscation. En 2021,<br \/>\n<a href=\"https:\/\/www.talosintelligence.com\/vulnerability_reports\/TALOS-2021-1383\">Talos avait d\u00e9j\u00e0 trouv\u00e9 une faille<\/a><br \/>\nsur <code>unserialize<\/code> dans le m\u00eame composant. C\u2019est la m\u00eame blague car pour analyser du code malveillant s\u00e9rialis\u00e9, il faut le d\u00e9s\u00e9rialiser. Et d\u00e9s\u00e9rialiser du contenu malveillant sans validation, \u00e7a fait \u201cpwn\u201d !<\/p>\n<p>Voil\u00e0, 2 fois en 4 ans sur le m\u00eame composant, c\u2019est pas ce que j\u2019appelle un accident. C\u2019est un probl\u00e8me structurel car d\u00e9tecter du malware sans l\u2019ex\u00e9cuter, c\u2019est quasi impossible avec du code dynamique. Les signatures statiques \u00e7a marche bien pour les virus classiques mais face \u00e0 du PHP obfusqu\u00e9 qui se reconstruit \u00e0 l\u2019ex\u00e9cution, vous \u00eates oblig\u00e9 de lancer le code pour voir ce qu\u2019il fait vraiment. Et l\u00e0, on est forcement en zone grise\u2026<\/p>\n<p>M\u00eame si on ex\u00e9cute du code potentiellement malveillant dans un environnement cens\u00e9 \u00eatre isol\u00e9, si celui-ci \u201cfuit\u201d ou si le code malveillant trouve un moyen de sortir de la sandbox, vous avez une RCE. Et comme ImunifyAV tourne avec les privil\u00e8ges n\u00e9cessaires pour scanner tous les fichiers d\u2019un serveur mutualis\u00e9, si vous compromettez cet antivirus, vous avez potentiellement acc\u00e8s \u00e0 tous les sites h\u00e9berg\u00e9s sur la machine.<\/p>\n<p>Si vous voulez tester, voici le proof of concept :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-gdscript3\" data-lang=\"gdscript3\"><span class=\"line\"><span class=\"cl\"><span class=\"o\">&lt;<\/span><span class=\"err\">?<\/span><span class=\"n\">php<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"o\">$<\/span><span class=\"n\">data<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"test\"<\/span><span class=\"p\">;<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"o\">$<\/span><span class=\"n\">payload<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">x73x79x73x74x65x6d<\/span><span class=\"s2\">\"<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"<\/span><span class=\"se\">x74x6fx75x63x68x20x2fx74x6dx70x2fx6cx33x33x74x2ex74x78x74x20x26x26x20x65x63x68x6fx20x22x44x45x46x2dx33x36x37x38x39x22x20x3ex20x2fx74x6dx70x2fx6cx33x33x74x2ex74x78x74<\/span><span class=\"s2\">\"<\/span><span class=\"p\">);<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">eval<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"<\/span><span class=\"se\">x70x61x63x6b<\/span><span class=\"s2\">\"<\/span><span class=\"p\">(<\/span><span class=\"o\">$<\/span><span class=\"n\">payload<\/span><span class=\"p\">));<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"err\">?<\/span><span class=\"o\">&gt;<\/span>\n<\/span><\/span><\/code><\/pre>\n<p>Placez ensuite ce poc.php quelque part, puis lancez le scanner ai-bolit dessus, et \u00e7a devrait cr\u00e9er un fichier dans \/tmp si vous \u00eates \u00e0 risque.<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">php ai-bolit.php -y -j poc.php\n<\/span><\/span><\/code><\/pre>\n<p>Voil\u00e0, si vous g\u00e9rez des serveurs avec ImunifyAV, vous savez ce qu\u2019il vous reste \u00e0 faire ! Une bonne mise \u00e0 jour !<\/p>\n<p>Et bien s\u00fbr, si vous vous inqui\u00e9tez, sachez que y\u2019a aucun moyen de savoir si vous avez \u00e9t\u00e9 compromis avant le patch. Faut patcher, et prier pour que personne n\u2019ait exploit\u00e9 la faille entre sa d\u00e9couverte et sa publication.<\/p>\n<p>Bon courage !<\/p>\n<p>\n<a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/rce-flaw-in-imunifyav-puts-millions-of-linux-hosted-sites-at-risk\/\">Source<\/a>\n<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>ImunifyAV, le scanner AV qui prot\u00e8ge 56 millions de sites Linux, vient de se faire pwn par le malware qu\u2019il essayait de d\u00e9tecter. Et c\u2019est pas la premi\u00e8re fois\u2026 En effet, Patchstack vient de r\u00e9v\u00e9ler une faille RCE critique dans ImunifyAV, qui je le rappelle est un scanner antivirus gratuit ultra r\u00e9pandu dans l\u2019h\u00e9bergement mutualis\u00e9. Le probl\u00e8me en fait c\u2019est que AI-bolit, le composant qui d\u00e9obfusque le code PHP malveillant pour l\u2019analyser, utilise la fonction call_user_func_array sans v\u00e9rifier les noms de fonctions qu\u2019elle ex\u00e9cute. Boooh ! Du coup, vous uploadez un fichier PHP malveillant sp\u00e9cialement con\u00e7u pour l\u2019occasion par un attaquant, ImunifyAV le scanne pour voir si c\u2019est un malware, le d\u00e9obfusque pour comprendre ce qu\u2019il fait, et hop, le code malveillant s\u2019ex\u00e9cute avec les privil\u00e8ges du scanner. Game over. H\u00e9 pour qu\u2019un antimalware d\u00e9tecte un virus, il doit analyser son code mais si les cybercriminels obfusquent leur malware pour cacher le code, l\u2019antimalware doit alors le d\u00e9obfusquer avant d\u2019analyser. Mais d\u00e9obfusquer du code PHP, \u00e7a veut dire aussi l\u2019ex\u00e9cuter partiellement pour voir ce qu\u2019il fait vraiment\u2026 d\u2019o\u00f9 cette RCE. La faille affecte donc toutes les versions avant la 32.7.4.0 et le correctif apporte juste une fonctionnalit\u00e9 de whitelist de fonctions autoris\u00e9es pendant la d\u00e9obfuscation. Il \u00e9tait temps, m\u00eame si maintenir une whitelist de fonctions safe, \u00e0 terme c\u2019est un cauchemar car y\u2019a des centaines de fonctions dans PHP. Certaines sont safe seules mais dangereuses combin\u00e9es et je pense que les cybercriminels trouveront toujours un moyen de contourner cette whitelist. En tout cas, comme je le laissais entendre en intro, c\u2019est pas la premi\u00e8re fois qu\u2019AI-bolit se fait avoir sur la d\u00e9obfuscation. En 2021, Talos avait d\u00e9j\u00e0 trouv\u00e9 une faille sur unserialize dans le m\u00eame composant. C\u2019est la m\u00eame blague car pour analyser du code malveillant s\u00e9rialis\u00e9, il faut le d\u00e9s\u00e9rialiser. Et d\u00e9s\u00e9rialiser du contenu malveillant sans validation, \u00e7a fait \u201cpwn\u201d ! Voil\u00e0, 2 fois en 4 ans sur le m\u00eame composant, c\u2019est pas ce que j\u2019appelle un accident. C\u2019est un probl\u00e8me structurel car d\u00e9tecter du malware sans l\u2019ex\u00e9cuter, c\u2019est quasi impossible avec du code dynamique. Les signatures statiques \u00e7a marche bien pour les virus classiques mais face \u00e0 du PHP obfusqu\u00e9 qui se reconstruit \u00e0 l\u2019ex\u00e9cution, vous \u00eates oblig\u00e9 de lancer le code pour voir ce qu\u2019il fait vraiment. Et l\u00e0, on est forcement en zone grise\u2026 M\u00eame si on ex\u00e9cute du code potentiellement malveillant dans un environnement cens\u00e9 \u00eatre isol\u00e9, si celui-ci \u201cfuit\u201d ou si le code malveillant trouve un moyen de sortir de la sandbox, vous avez une RCE. Et comme ImunifyAV tourne avec les privil\u00e8ges n\u00e9cessaires pour scanner tous les fichiers d\u2019un serveur mutualis\u00e9, si vous compromettez cet antivirus, vous avez potentiellement acc\u00e8s \u00e0 tous les sites h\u00e9berg\u00e9s sur la machine. Si vous voulez tester, voici le proof of concept : &lt;?php $data = &#8220;test&#8221;; $payload = &#8220;x73x79x73x74x65x6d&#8221;(&#8220;x74x6fx75x63x68x20x2fx74x6dx70x2fx6cx33x33x74x2ex74x78x74x20x26x26x20x65x63x68x6fx20x22x44x45x46x2dx33x36x37x38x39x22x20x3ex20x2fx74x6dx70x2fx6cx33x33x74x2ex74x78x74&#8221;); eval(&#8220;x70x61x63x6b&#8221;($payload)); ?&gt; Placez ensuite ce poc.php quelque part, puis lancez le scanner ai-bolit dessus, et \u00e7a devrait cr\u00e9er un fichier dans \/tmp si vous \u00eates \u00e0 risque. php ai-bolit.php -y -j poc.php Voil\u00e0, si vous g\u00e9rez des serveurs avec ImunifyAV, vous savez ce qu\u2019il vous reste \u00e0 faire ! Une bonne mise \u00e0 jour ! Et bien s\u00fbr, si vous vous inqui\u00e9tez, sachez que y\u2019a aucun moyen de savoir si vous avez \u00e9t\u00e9 compromis avant le patch. Faut patcher, et prier pour que personne n\u2019ait exploit\u00e9 la faille entre sa d\u00e9couverte et sa publication. Bon courage ! Source<\/p>\n","protected":false},"author":1,"featured_media":1598,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1597","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1597"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1597\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1598"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}