文章目录
  1. 1. 简介
  2. 2. ubuntu 16.04使用
    1. 2.1. 安装swift
    2. 2.2. 下载编译fuzzilli
    3. 2.3. 下载编译webkit
    4. 2.4. 运行fuzzilli
  3. 3. 总结
  4. 4. 参考

简介

开源的一款JavaScript的模糊测试工具,由SamuelGroß编写,使用swift语言开发。
链接:https://github.com/googleprojectzero/fuzzilli/


ubuntu 16.04使用

安装swift

1
2
3
apt-get install clang-4.0 clang++-4.0 libicu-dev
ln /usr/bin/clang-4.0 /usr/bin/clang
ln /usr/bin/clang++-4.0 /usr/bin/clang++

去官网https://swift.org下载最新的匹配ubuntu的版本,这里下载的是16.04版本,使用wget下载

1
wget https://swift.org/builds/swift-4.2.3-release/ubuntu1604/swift-4.2.3-RELEASE/swift-4.2.3-RELEASE-ubuntu16.04.tar.gz

下载之后进行解压

1
2
mkdir ~/swift
tar -xvzf swift-4.2.3-RELEASE-ubuntu16.04.tar.gz -C ~/swift

添加环境变量路径,

1.执行如下命令

1
export PATH=~/swift/swift-4.2.3-RELEASE-ubuntu16.04/usr/bin:$PATH

2.在~/.bashrc文件添加上面的代码并运行如下代码

1
source ~/.bashrc

下载编译fuzzilli

1
2
3
git clone https://github.com/googleprojectzero/fuzzilli.git
cd fuzzilli
swift build -c release -Xlinker='-lrt'

下载编译webkit

从github上clone下载,在切换到指定提交记录了,然后打上给的patch文件

1
2
3
4
5
git clone https://github.com/WebKit/webkit
git checkout 8d7c264869ecbdd56fb46aa5762d82c318f39feb -b fuzz
patch -p1 < webkit.patch
cp fuzzilli/Targets/JavaScriptCore/fuzzbuild.sh .
./fuzzbuild.sh

如果 clone 失败可以使用如下方法,第一次只拉取最新的一次提交版本,第二次在获取全部版本,具体命令如下:

1
2
git clone --depth=1 https://github.com/WebKit/webkit
git fetch --unshallow

官方的编译方式可以参考如下:https://trac.webkit.org/wiki/BuildingGtk

运行fuzzilli

1
2
sysctl -w 'kernel.core_pattern=|/bin/false' //首次运行
swift run -c release -Xlinker='-lrt' FuzzilliCli --profile=jsc /webkit/FuzzBuild/Debug/bin/jsc

总结

IL中间层语言非常简单易学,此工具可以fuzz开源的Js引擎,但是需要修改一定的源代码。

参考

  1. https://medium.com/@agavatar/open-source-swift-on-ubuntu-linux-cd00e697dff0
  2. https://trac.webkit.org/wiki/BuildingGtk
文章目录
  1. 1. 简介
  2. 2. ubuntu 16.04使用
    1. 2.1. 安装swift
    2. 2.2. 下载编译fuzzilli
    3. 2.3. 下载编译webkit
    4. 2.4. 运行fuzzilli
  3. 3. 总结
  4. 4. 参考