aboutsummaryrefslogtreecommitdiffstats
path: root/docs/openbsd
diff options
context:
space:
mode:
authorAnton Lindqvist <anton@basename.se>2018-08-28 20:15:25 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-28 11:15:25 -0700
commit53ff87847a172828ddb92cbc95aa2a3e8a0937e0 (patch)
tree69536347484ae6f5d0492497a1ba63332a700565 /docs/openbsd
parentb771b17ec95715c24715d730363f6f07bc46fd4f (diff)
docs: add OpenBSD
Diffstat (limited to 'docs/openbsd')
-rw-r--r--docs/openbsd/found_bugs.md19
-rw-r--r--docs/openbsd/setup.md119
2 files changed, 138 insertions, 0 deletions
diff --git a/docs/openbsd/found_bugs.md b/docs/openbsd/found_bugs.md
new file mode 100644
index 000000000..f7ddb9a4f
--- /dev/null
+++ b/docs/openbsd/found_bugs.md
@@ -0,0 +1,19 @@
+# Found bugs
+
+Newer bugs comes first.
+
+- [kqueue: use-after-free in `kqueue_close()`](https://marc.info/?l=openbsd-cvs&m=153364550327224&w=2)
+
+- [unveil: invalid call to `VOP_UNLOCK()`](https://marc.info/?l=openbsd-cvs&m=153318491427658&w=2)
+
+- [open: NULL pointer dereference while operating on cloned device](https://marc.info/?l=openbsd-cvs&m=153297130613157&w=2)
+
+- [mprotect: incorrect bounds check in `uvm_map_protect()`](https://marc.info/?l=openbsd-cvs&m=153227003430211&w=2)
+
+- [fchown: NULL pointer dereference while operating on cloned device](https://marc.info/?l=openbsd-cvs&m=153224108724940&w=2)
+
+- [recvmsg: double free of mbuf](https://marc.info/?l=openbsd-cvs&m=153067010015474&w=2)
+
+- [ftruncate: NULL pointer dereference while operating on cloned device](https://marc.info/?l=openbsd-cvs&m=153062270701248&w=2)
+
+- [kqueue: NULL pointer dereference](https://marc.info/?l=openbsd-cvs&m=152930020005260&w=2)
diff --git a/docs/openbsd/setup.md b/docs/openbsd/setup.md
new file mode 100644
index 000000000..428c73bef
--- /dev/null
+++ b/docs/openbsd/setup.md
@@ -0,0 +1,119 @@
+# Setup
+
+Instructions for running OpenBSD host, OpenBSD vm, amd64 kernel.
+In addition, the host must be running `-current`.
+
+Variables used throughout the instructions:
+
+- `$KERNEL` - Custom built kernel, see [Compile Kernel](#compile-kernel).
+ Defaults to `/sys/arch/amd64/compile/GENERIC/obj/bsd` if the
+ instructions are honored.
+- `$SSHKEY` - Public SSH key ***without a passphrase*** used to connect to the
+ VMs, it's advised to use a dedicated key.
+- `$USER` - The name of the user intended to run syzkaller.
+- `$VMDIR` - Directory containing VM disk images.
+- `$VMID` - The numeric ID of last started VM.
+
+## Install syzkaller
+
+1. Install dependencies:
+
+ ```sh
+ # pkg_add bash git gmake go
+ ```
+
+2. Clone repository:
+
+ ```sh
+ $ mkdir -p ~/go/src/github.com/google
+ $ cd ~/go/src/github.com/google
+ $ git clone git@github.com:google/syzkaller.git
+ $ cd syzkaller
+ $ gmake all
+ ```
+
+## Compile Kernel
+
+A `GENERIC` kernel must be compiled with
+[kcov(4)](https://man.openbsd.org/kcov.4)
+option enabled:
+
+```sh
+$ cd /sys
+$ echo 'pseudo-device kcov 1' >arch/amd64/conf/KCOV
+$ echo 'include "arch/amd64/conf/KCOV" >>arch/amd64/conf/GENERIC
+$ make -C arch/amd64/compile/GENERIC config
+$ make -C arch/amd64/compile/GENERIC
+```
+
+## Create VM
+
+1. [vmd(8)](https://man.openbsd.org/vmd.8)
+ must be configured to allow non-root users to create VMs since it removes the
+ need to run syzkaller as root:
+
+ ```sh
+ $ cat /etc/vm.conf
+ vm "syzkaller" {
+ disable
+ disk "${VMDIR}/syzkaller.img"
+ local interface
+ owner $USER
+ allow instance { boot, disk, memory }
+ }
+ ```
+
+2. Create disk image:
+
+ ```sh
+ $ vmctl create "${VMDIR}/syzkaller.img" -s 4G
+ ```
+
+3. Install VM:
+
+ ```sh
+ $ vmctl start syzkaller-1 -c -t syzkaller -b /bsd.rd -d "${VMDIR}/syzkaller.img"
+ ```
+
+ Answers to questions that deviates from the defaults:
+
+ ```
+ Password for root account? ******
+ Which speed should com0 use? 115200
+ Allow root ssh login? yes
+ ```
+
+4. Restart the newly created VM and copy the SSH-key:
+
+ ```sh
+ $ vmctl stop syzkaller-1 -w
+ $ vmctl start syzkaller
+ $ ssh "root@100.64.${VMID}.3" 'cat >~/.ssh/authorized_keys' <$SSHKEY
+ $ vmctl stop syzkaller -w
+ ```
+
+## Configure and run syzkaller
+
+```sh
+$ pwd
+~/go/src/github.com/google/syzkaller
+$ cat openbsd.cfg
+{
+ "name": "openbsd",
+ "target": "openbsd/amd64",
+ "http": ":10000",
+ "workdir": "$HOME/go/src/github.com/google/syzkaller/workdir",
+ "syzkaller": "$HOME/go/src/github.com/google/syzkaller",
+ "image": "$VMDIR/syzkaller.img",
+ "sshkey": "$SSKEY",
+ "sandbox": "none",
+ "procs": 2,
+ "type": "vmm",
+ "vm": {
+ "count": 4,
+ "mem": 512,
+ "kernel": "$KERNEL"
+ }
+}
+$ ./bin/syz-manager -config openbsd.cfg
+```