#sandbox #security #linux

libsydtime

基于Rust的C LD_PRELOAD库,用于用系统调用替换vDSO时间调用

3个版本

0.0.3 2024年2月12日
0.0.2 2024年1月25日
0.0.1 2024年1月25日

#867 in Unix APIs

Download history 3312/week @ 2024-03-14 3272/week @ 2024-03-21 3284/week @ 2024-03-28 3108/week @ 2024-04-04 3129/week @ 2024-04-11 2854/week @ 2024-04-18 3044/week @ 2024-04-25 2992/week @ 2024-05-02 2842/week @ 2024-05-09 2700/week @ 2024-05-16 2797/week @ 2024-05-23 2491/week @ 2024-05-30 2273/week @ 2024-06-06 1424/week @ 2024-06-13 2742/week @ 2024-06-20 2650/week @ 2024-06-27

9,091 每月下载量

LGPL-3.0-or-later

5KB

libsydtime是一个LD_PRELOAD库,用于用系统调用替换vDSO时间调用。这个库是sydtrace/deny_tsc沙箱命令的补充。

从源代码安装,请克隆https://git.sr.ht/~alip/syd仓库,切换到time目录,并运行makemake testdoas make install。唯一的前提是Rust 1.56.1或更高版本。

以下是如何使用libsydtime与syd结合使用的简单示例

$ strace -qf -e%clock syd -ppaludis -mtrace/deny_tsc:1 -eLD_PRELOAD=/usr/local/lib/libsydtime.so date
[pid 27095] clock_gettime(CLOCK_REALTIME, {tv_sec=1706186439, tv_nsec=28829866}) = 0
Thu Jan 25 12:40:39 UTC 2024
[pid 27095] +++ exited with 0 +++
$ strace -qf -e%clock syd -ppaludis date # vDSO
Thu Jan 25 12:41:25 UTC 2024
[pid 27103] +++ exited with 0 +++
$ strace -qf -e%clock syd -ppaludis -mtrace/deny_tsc:1 date # vDSO not permitted
[pid 27113] --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=NULL} ---
[pid 27113] +++ killed by SIGSEGV +++
$

由Ali Polatel维护。最新源代码可在https://git.sr.ht/~alip/syd找到,可以通过电子邮件向~alip/[email protected]提交错误/补丁。

依赖项

~43KB