大家来找茬: xz 维护者如何悄悄关闭 landlock 保护机制

266 天前
 skies457

https://git.tukaani.org/?p=xz.git;a=blobdiff;f=CMakeLists.txt;h=d2b1af7ab0ab759b6805ced3dff2555e2a4b3f8e;hp=76700591059711e3a4da5b45cf58474dac4e12a7;hb=328c52da8a2bbb81307644efdb58db2c422d9ba7;hpb=eb8ad59e9bab32a8d655796afd39597ea6dcc64d

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -901,10 +901,29 @@ endif()
 
 # Sandboxing: Landlock
 if(NOT SANDBOX_FOUND AND ENABLE_SANDBOX MATCHES "^ON$|^landlock$")
-    check_include_file(linux/landlock.h HAVE_LINUX_LANDLOCK_H)
+    # A compile check is done here because some systems have
+    # linux/landlock.h, but do not have the syscalls defined
+    # in order to actually use Linux Landlock.
+    check_c_source_compiles("
+        #include <linux/landlock.h>
+        #include <sys/syscall.h>
+        #include <sys/prctl.h>
+.
+        void my_sandbox(void)
+        {
+            (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+            (void)SYS_landlock_create_ruleset;
+            (void)SYS_landlock_restrict_self;
+            (void)LANDLOCK_CREATE_RULESET_VERSION;
+            return;
+        }
+
+        int main(void) { return 0; }
+        "
+    HAVE_LINUX_LANDLOCK)
 
-    if(HAVE_LINUX_LANDLOCK_H)
-        set(SANDBOX_COMPILE_DEFINITION "HAVE_LINUX_LANDLOCK_H")
+    if(HAVE_LINUX_LANDLOCK)
+        set(SANDBOX_COMPILE_DEFINITION "HAVE_LINUX_LANDLOCK")
         set(SANDBOX_FOUND ON)
 
         # Of our three sandbox methods, only Landlock is incompatible
5829 次点击
所在节点    信息安全
31 条回复
kenilalexandra
265 天前
看来这个作者也是用心良苦啊,为了植入后门应该想了不少吧
skiy
265 天前
@yolee599 编译不成功,怎么还能打 tar ?没有单元测试的啊?这标准化流程做得不行啊。

我是想说,怎么知道它这个点是错误输入的,还是恶意的?
Forbidden
265 天前
@kidlj 顶级黑客最有效的社工手段,雇运维拔网线
试问阁下如何防范放行漏洞的 AI
yolee599
265 天前
@skiy #22 这个还没到编译阶段呢,是在 configure 阶段做的检查。在检查的时候怎么知道能不能开启 HAVE_LINUX_LANDLOCK 选项呢?就是在 configure 写一个简单的 demo 并编译它,这个 demo 就调用 LANDLOCK 的 api 函数,如果这个 demo 编译通过了,就认为可以使用 HAVE_LINUX_LANDLOCK ,反之就是不能使用。即使实际可以调用 LANDLOCK 的 api 函数,但是现在加了一个点,这个 demo 必然是编译失败的,所以 configure 就认为不支持 HAVE_LINUX_LANDLOCK 。
y1y1
265 天前
@kidlj #11 问题的个数要远大于程序的个数,不存在能解决任意问题的程序
amorphobia
265 天前
这次是一个点,在 diff 里至少还能肉眼看到,如果用一个不可见字符,比如说 U+2800 (盲文的空白符),那 reviewer (几乎一定) 看不见了啊……
my3157
265 天前
@EyebrowsWhite 好像只有 GPT4 能明确检查出 "." 的问题, 其他一众模型包括 GitHub Copilot 都只会告诉你 check_c_source_compiles 可能会因为系统不支持编译失败
skiy
265 天前
@yolee599 GitHub Actions 能做到你说的这一步吧?不过看了下,官方的是自建的代码托管平台,没接入 CI 。
genesislive
264 天前
看来这个维护者过去的提交都得重新审查
CivAx
264 天前
@EyebrowsWhite #5 附上 5 楼的贴图:

clemooling
264 天前
@kidlj 你不能保证你所使用的 AI 本身不包含后门

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX