Remarque: Le 03/11/2020, Avast a annoncé qu'ils avaient décidé de désactiver cet interprète à l'échelle mondiale!
Le processus antivirus AVAST principal est appelé Avastsvc.exe, qui s'exécute en tant que système.

Ce service charge le moteur antivirus de bas niveau et analyse les données non fiables reçues de sources comme le minifiltre du système de fichiers ou le trafic réseau intercepté.
En dépit d'être très privilégié et de traitement des contributions non fiables par conception, il n'est pas en pain et a une mauvaise couverture d'atténuation. Toutes les vulnérabilités de ce processus sont essentielles et facilement accessibles aux attaquants distants.
Alors .. peut-être pas génial qu'il comprenne un interprète JavaScript personnalisé .... ???? ?

Ce référentiel contient un shell interactif qui vous permet de tester l'interprète sur Linux pour la recherche sur la vulnérabilité.
Voici comment l'essayer, installez d'abord les dépendances.
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
Vous pouvez maintenant cloner ce référentiel.
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
Si tout semble bon, construisez-le et avscript doit être prêt.
$ make
Pour des raisons de performance, AVAST n'interprète pas tous les fichiers JavaScript qu'ils rencontrent, ils utilisent une heuristique pour déterminer si cela est nécessaire. J'ai trouvé que l'ajout du fichier javascript.txt inclus dans ce référentiel suffit à toujours déclencher l'heuristique.
Par exemple, si vous avez trouvé une vulnérabilité et que vous souhaitez le reproduire sur Windows, vous feriez d'abord cela:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
Vérifiez maintenant qu'il fait toujours ce que vous attendez, par exemple
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)
Vérifiez ensuite le crash reproduit sur Windows.
Le service AVAST est un processus protégé, ce qui signifie le déboguer de l'espace utilisateur est délicat. Si vous avez configuré KD, vous pouvez simplement annuler cela, puis le débogage dans l'espace utilisateur fonctionne bien.
Une solution rapide et facile qui fonctionne sur 32 bits est de le faire (notez que PatchGuard ne le permettra pas sur X64, mais vous pouvez faire quelque chose de similaire avec les commandes de point d'arrêt).

Il existe également un paramètre sous "dépannage" appelé "Activer l'autodéfense" qui doit être désactivé. Je crois que ce paramètre désactive l'accrochage OpenProcess() dans le SSDT, où ils listent normalement leur propre processus.
Vous devrez peut-être temporairement désactiver les "boucliers" dans l'interface utilisateur AVAST pendant que vous vous attachez afin que les opérations du système de fichiers ne s'impliquent pas pendant la suspension du service.
Avast ne publie aucun symbole pour leur moteur, mais le débogage avec IDA ou GDB est toujours possible. Il y a quelques notes sur le code Windows de débogage de Linux dans la documentation LoadLibrary.
Si vous souhaitez utiliser IDA, je recommanderais d'utiliser le backend gdbserver .
Utilisez simplement quelque chose comme ça, vous devrez peut-être d'abord installer le package GDBServer:
$ gdbserver 0.0.0.0:23946 ./avscript
Cela fonctionne étonnamment bien, même les points d'arrêt des pseudocodes fonctionnent.

Si vous trouvez une vulnérabilité, il est probablement critique et verbalable .
Veuillez le signaler de toute urgence.