Skip to content

Commit 47bac92

Browse files
committed
docs: record third-party provenance, citation, and author name
Add THIRD-PARTY-NOTICES.md with the reuse basis (upstream license, author permission, or reimplemented reproducer/technique) for each leak component adapted from third-party proof-of-concept code, and note that basis in the five affected component headers. Add CITATION.cff for GitHub's "Cite this repository" entry and a README "Citing" section with matching BibTeX; repoint the README license section at the notices file. Set the author name to "Brendan Coles" in LICENSE, CITATION.cff, README, and the kasld(1) / ksymoff(1) AUTHOR lines.
1 parent 3fa1523 commit 47bac92

11 files changed

Lines changed: 91 additions & 7 deletions

File tree

CITATION.cff

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
cff-version: 1.2.0
2+
message: "If you use KASLD, please cite it as below."
3+
title: "KASLD: Kernel Address Space Layout Derandomization"
4+
abstract: >-
5+
Recovers the Linux kernel's virtual and physical memory layout — primarily
6+
the kernel text base — from a local process, to defeat KASLR.
7+
type: software
8+
authors:
9+
- given-names: "Brendan"
10+
family-names: "Coles"
11+
repository-code: "https://github.com/bcoles/kasld"
12+
url: "https://github.com/bcoles/kasld"
13+
license: MIT
14+
# Cite the latest release, not the in-development VERSION (master is x.y.z-dev).
15+
# `make bump-version` updates these two lines on release; `tests/check-version`
16+
# requires the cited version to be a real release (never a -dev string).
17+
version: "0.3.0"
18+
date-released: "2026-06-19"

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019 bcoles
3+
Copyright (c) 2019 Brendan Coles
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,36 @@ make cross
206206

207207
## License
208208

209-
KASLD is MIT licensed. It incorporates modified third-party code
210-
snippets and proof-of-concept code; those snippets may carry different
211-
license terms. See the reference URLs in each file's comment header
212-
for credits and license details.
209+
KASLD is MIT licensed (see [LICENSE](LICENSE)). Some leak components adapt
210+
third-party proof-of-concept code or implement a technique first published by
211+
others; each such file credits its original author and source in its header,
212+
and [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md) lists each with its license
213+
or reuse basis (upstream license, author permission, or technique/reproducer
214+
material reimplemented here).
215+
216+
## Citing KASLD
217+
218+
KASLD is MIT licensed — attribution is not required for use, but if you
219+
reference it in research, tooling, exploits, or writing, a citation or link is
220+
appreciated:
221+
222+
> **KASLD: Kernel Address Space Layout Derandomization**, Brendan Coles,
223+
> https://github.com/bcoles/kasld
224+
225+
BibTeX:
226+
227+
```bibtex
228+
@software{kasld,
229+
title = {KASLD: Kernel Address Space Layout Derandomization},
230+
author = {Coles, Brendan},
231+
url = {https://github.com/bcoles/kasld},
232+
version = {0.3.0},
233+
year = {2026}
234+
}
235+
```
236+
237+
GitHub also shows a *"Cite this repository"* button from
238+
[CITATION.cff](CITATION.cff). For an unreleased build from `master`, cite the
239+
specific commit and the date accessed — e.g. `bcoles/kasld@<commit>`
240+
(accessed YYYY-MM-DD) — since `-dev` version strings are not unique to a single
241+
commit.

THIRD-PARTY-NOTICES.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Third-party notices
2+
3+
KASLD is licensed under the MIT License (see [LICENSE](LICENSE)). Most of the
4+
code is original. Some leak components adapt third-party proof-of-concept code,
5+
and some implement a technique first published by others; each such component
6+
credits its origin in its file header. This file collects those credits with
7+
the source and reuse basis for each.
8+
9+
| Component | Original author(s) | Source | Basis for reuse |
10+
|---|---|---|---|
11+
| `kernelsnitch` | IAIK, Graz University of Technology | https://github.com/IAIK/KernelSnitch | Upstream is MIT — honored; attribution retained. |
12+
| `echoload` | Claudio Canella, Michael Schwarz, Martin Haubenwallner, Martin Schwarzl, Daniel Gruss | https://github.com/cc0x1f/store-to-leak-forwarding | Used with the authors' permission. |
13+
| `databounce` | Claudio Canella, Michael Schwarz, Martin Haubenwallner, Martin Schwarzl, Daniel Gruss | https://github.com/cc0x1f/store-to-leak-forwarding | Used with the authors' permission. |
14+
| `qemu_tcg_iret` | @_leave07 and @prosti | https://kqx.io/post/qemu-nday/ | Used with the authors' permission. |
15+
| `perf_event_open` | lizzie | https://blog.lizzie.io/kaslr-and-perf.html | Adapted with the author's knowledge; substantially reworked since. |
16+
| `entrybleed` | Will (William Liu) | https://www.willsroot.io/2022/12/entrybleed.html | Adapted with the author's knowledge (the EntryBleed paper references KASLD). |
17+
| `proc_kallsyms` | spender (Brad Spengler) | https://grsecurity.net/~spender/exploits/exploit.txt | Rewritten; used with the author's knowledge. |
18+
| `mincore` | Jann Horn | https://bugs.chromium.org/p/project-zero/issues/detail?id=1431 | Adapted from the author's minimal bug reproducer (CVE-2017-16994) and reimplemented. |
19+
| `bcm_msg_head_struct` | Norbert Slusarek | https://www.openwall.com/lists/oss-security/2021/06/15/1/2 | Adapted from the author's minimal bug reproducer (CVE-2021-34693) and reimplemented. |
20+
| `sysfs_kernel_notes_xen` | Nassim-Asrir (@p1k4l4) | https://github.com/Nassim-Asrir/ZDI-24-020 | Technique credit; reimplemented in KASLD's own code. |
21+
| `prefetch` | Daniel Gruss et al. (technique); Will (timing asm) | https://gruss.cc/files/prefetch.pdf ; EntryBleed | Implements the published technique; adapts the EntryBleed timing asm. |
22+
| `zombieload` | ZombieLoad authors (Michael Schwarz, Moritz Lipp, et al., IAIK) | https://github.com/IAIK/ZombieLoad | Implements the published technique in KASLD's own code (`src/include/sidechannel.h`). |
23+
24+
Each component's full credit and reference URLs are in its file header under
25+
`src/components/`. Upstream licenses, where they exist, are honored;
26+
adaptations used with permission are noted above.

man/kasld.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,4 @@ The guides under
205205
.I <prefix>/share/doc/kasld/
206206
cover usage, exploitation, and the inference engine in depth.
207207
.SH AUTHOR
208-
KASLD is maintained by bcoles <bcoles@gmail.com>.
208+
KASLD is maintained by Brendan Coles <bcoles@gmail.com>.

man/ksymoff.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,4 @@ only when the symbol source is an ELF file.
204204
.BR nm (1),
205205
.BR readelf (1)
206206
.SH AUTHOR
207-
KASLD is maintained by bcoles <bcoles@gmail.com>.
207+
KASLD is maintained by Brendan Coles <bcoles@gmail.com>.

src/components/bcm_msg_head_struct.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
//
66
// Mostly taken from original PoC by Norbert Slusarek:
77
// https://www.openwall.com/lists/oss-security/2021/06/15/1/2
8+
// The original was a minimal proof-of-concept reproducer; reimplemented here.
89
//
910
// Leak primitive:
1011
// Data leaked: kernel stack pointer (uninitialized struct padding)

src/components/databounce.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@
4747
// https://github.com/cc0x1f/store-to-leak-forwarding-there-and-back-again
4848
// https://i.blackhat.com/asia-20/Friday/asia-20-Canella-Store-To-Leak-Forwarding-There-And-Back-Again-wp.pdf
4949
//
50+
// The store-to-leak reference code (cc0x1f) is used with the authors'
51+
// permission.
52+
//
5053
// KASLD_BUILD_NO_OPTIMIZE: built -O0 (Makefile) so the optimizer cannot reorder
5154
// or elide the timing / cache-probe / speculation measurements this technique
5255
// relies on; a per-function no-opt attribute is not a reliable substitute.

src/components/echoload.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
// https://github.com/cc0x1f/store-to-leak-forwarding-there-and-back-again
5151
// https://i.blackhat.com/asia-20/Friday/asia-20-Canella-Store-To-Leak-Forwarding-There-And-Back-Again-wp.pdf
5252
//
53+
// The store-to-leak reference code (cc0x1f) is used with the authors'
54+
// permission.
55+
//
5356
// KASLD_BUILD_NO_OPTIMIZE: built -O0 (Makefile) so the optimizer cannot reorder
5457
// or elide the timing / cache-probe / speculation measurements this technique
5558
// relies on; a per-function no-opt attribute is not a reliable substitute.

src/components/kernelsnitch.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
// References:
4747
// https://lukasmaar.github.io/papers/ndss25-kernelsnitch.pdf
4848
// https://github.com/IAIK/KernelSnitch
49+
//
50+
// The IAIK/KernelSnitch reference code is MIT licensed; attribution retained.
4951
// ---
5052
// <bcoles@gmail.com>
5153

0 commit comments

Comments
 (0)