Примечание: 03/11/2020 Avast объявил, что решили отключить этого переводчика во всем мире!
Основной антивирус Avast называется Avastsvc.exe, который работает как система.

Эта служба загружает антивирусный двигатель низкого уровня и анализирует неконтролируемые данные, полученные из таких источников, как минифильтер файловой системы или перехваченный сетевой трафик.
Несмотря на то, что он очень привилегирован и обрабатывает ненадежный ввод по проекту, он не является бесконечным и имеет плохое покрытие смягчения. Любые уязвимости в этом процессе имеют решающее значение и легко доступны для отдаленных злоумышленников.
Так что ... может быть, не здорово, что он включает в себя пользовательский интерпретатор JavaScript .... ???? ?

Этот репозиторий содержит интерактивную оболочку, которая позволяет вам проверить интерпретатор на Linux для исследования уязвимости.
Вот как попробовать это, сначала установите зависимости.
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
Теперь вы можете клонировать этот репозиторий.
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
Если все выглядит хорошо, постройте его, и avscript должен быть готов.
$ make
По причинам производительности Avast не интерпретируют каждый файл JavaScript, с которым они сталкиваются, они используют эвристику, чтобы определить, необходимо ли это. Я обнаружил, что добавления файла javascript.txt , включенного в этот репозиторий, достаточно, чтобы всегда запустить эвристику.
Например, если вы нашли уязвимость и хотите воспроизвести ее в Windows, вы сначала сделаете это:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
Теперь убедитесь, что он все еще делает то, что вы ожидаете, например,
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)
Затем убедитесь, что аварий воспроизводится в Windows.
Сервис Avast - это защищенный процесс, что означает, что отладка его от пользователя сложно. Если у вас настроен KD, вы можете просто отменить это, а затем отладка в пользовательском пространстве работает нормально.
Быстрое и простое решение, которое работает на 32-битном, заключается в том, чтобы сделать это (обратите внимание, что PatchGuard не разрешает это на X64, но вы можете сделать что-то подобное с командами точки останова).

Существует также настройка в разделе «Устранение неполадок» под названием «Включение самообороны», которая должна быть отключена. Я полагаю, что эта настройка отключает Hooking OpenProcess() в SSDT, где они обычно вносят черные списают свой собственный процесс.
Возможно, вам потребуется временно отключить «щиты» в пользовательском интерфейсе Avast, пока вы прикрепляете, чтобы операции файловой системы не были тупились, пока служба приостановлена.
Avast не публикует никаких символов для своего двигателя, но отладка с IDA или GDB все еще возможна. Есть несколько заметок о отладке кода Windows от Linux в документации Linux.
Если вы хотите использовать IDA, я бы порекомендовал использовать бэкэнд gdbserver .
Просто используйте что -то подобное, вам может сначала установить пакет GDBServer:
$ gdbserver 0.0.0.0:23946 ./avscript
Это работает удивительно хорошо, даже псевдокодные точки остановки работают.

Если вы находите уязвимость, это, вероятно, критично и чертовски .
Пожалуйста, сообщите об этом срочно.