AvastSvc.exe contains a full, unsandboxed JavaScript/DOM implementation

栏目: IT技术 · 发布时间: 4年前

内容简介:The main Avast antivirus process is called AvastSvc.exe, which runs as SYSTEM.That service loads the low level antivirus engine, and analyzes untrusted data received from sources like the filesystem minifilter or intercepted network traffic.

Avast Antivirus JavaScript Interpreter

The main Avast antivirus process is called AvastSvc.exe, which runs as SYSTEM.

AvastSvc.exe contains a full, unsandboxed JavaScript/DOM implementation

That service loads the low level antivirus engine, and analyzes untrusted data received from sources like the filesystem minifilter or intercepted network traffic.

Despite being highly privileged and processing untrusted input by design, it is unsandboxed and has poor mitigation coverage. Any vulnerabilities in this process are critical, and easily accessible to remote attackers.

So.. maybe not great that it includes a custom JavaScript interpreter....????

AvastSvc.exe contains a full, unsandboxed JavaScript/DOM implementation

This repository contains an interactive shell that lets you test the interpreter on Linux for vulnerability research.

Building

Here's how to try it out, first install the dependencies.

Ubuntu

$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib

Fedora

$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686

Now you can clone this repository.

$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive

If everything looks good, build it and avscript should be ready.

$ make

Notes

Reproducing Vulnerabilities on Windows

For performance reasons, Avast do not interpret every JavaScript file they encounter, they use a heuristic to determine if it's necessary. I've found that appending the file javascript.txt included in this repository is enough to always trigger the heuristic.

For example, if you have found a vulnerability and want to reproduce it on Windows, you would first do this:

$ cat yourtestcase.js javascript.txt > ReproForWindows.js

Now verify that it still does what you expect, e.g.

$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)

Then verify the crash reproduced on Windows.

Protected Process

The Avast service is a protected process, which means debugging it from userspace is tricky. If you have kd configured, you can simply undo this and then debugging in userspace works fine.

A quick and easy solution that works on 32-bit is to do this (note that PatchGuard won't permit this on x64, but you can do something similar with breakpoint commands ).

AvastSvc.exe contains a full, unsandboxed JavaScript/DOM implementation

There is also a setting under "Troubleshooting" called "Enable Self-Defense" that should be disabled. I believe this setting disables hooking OpenProcess() in the SSDT, where they normally blacklist their own process.

You may need to temporarily disable "shields" in the Avast UI while you attach so that filesystem operations don't deadlock while the service is suspended.

Debugging

Avast does not publish any symbols for their engine, but debugging with IDA or gdb is still possible. There are some notes on debugging Windows code from Linux in the loadlibrary documentation .

If you want to use IDA, I would recommend using the gdbserver backend.

Simply use something like this, you might need to intall the gdbserver package first:

$ gdbserver 0.0.0.0:23946 ./avscript

This works surprisingly well, even pseudocode breakpoints work.

AvastSvc.exe contains a full, unsandboxed JavaScript/DOM implementation

Vulnerabilities

If you find a vulnerability, it is likely critical and wormable .

:fire: Please report it urgently. :fire:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大学程序设计课程与竞赛训练教材

大学程序设计课程与竞赛训练教材

吴永辉、王建德 / 机械工业出版社 / 2013-6 / 69.00

本书每章为一个主题,实验内容安排紧扣大学算法和数学的教学,用程序设计竞赛中的算法和数学试题作为实验试题,将算法和数学的教学与程序设计竞赛的解题训练结合在一起;在思维方式和解题策略的训练方面,以问题驱动和启发式引导为主要方式,培养读者通过编程解决问题的能力。 本书特点: 书中给出的234道试题全部精选自ACM国际大学生程序设计竞赛的世界总决赛以及各大洲赛区现场赛和网络预赛、大学程序设计竞......一起来看看 《大学程序设计课程与竞赛训练教材》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试