最小化 436 字节的 Copy Fail 漏洞利用,得益于代码高尔夫的力量
这个 ELF 通过完全未映射、rwx,并有条件地将自身用作 ELF 载荷来毒化缓存,从而对漏洞利用进行了极限高尔夫化。更多更诡异的 ELF 内部高尔夫即将推出
有更好的想法?在 https://copy.golf/ 参与竞争
=== 草率部分开始 ===
在 Debian/Ubuntu 上:
sudo apt install build-essential binutils
该仓库包含固定的 shell.nix 和 .envrc。
使用 nix-shell:
nix-shell
使用 direnv:
direnv allow
这提供了此处使用的可复现工具链:
gcc 15.2.1
GNU ld / strip from llvmPackages_19.bintools
python3
make
如果你使用 Nix 或 direnv,make 将自动使用 shell 中的工具链。
你也可以在快速的 Ubuntu Server 24.04 LTS 虚拟机中尝试该漏洞利用
cd test-vm
./quick-test.sh
make size
make clean
gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
GNU ld (GNU Binutils for Ubuntu) 2.42
GNU strip (GNU Binutils for Ubuntu) 2.42
可复现的更小构建:
gcc 15.2.1
GNU ld 2.46
GNU strip with --strip-section-headers
最终大小因 GCC、binutils 和 strip 实现而异。