大家来找茬: 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 条回复
Sainnhepark
266 天前
加了一个点
hello2090
266 天前
@Sainnhepark 请教,没看出来那个点啊,上面加了那么一大段,后面 HAVE_LINUX_LANDLOCK_H 改成了 HAVE_LINUX_LANDLOCK
solangm
266 天前
@hello2090
+ #include <sys/prctl.h>
+.
+ void my_sandbox(void)
hello2090
266 天前
@solangm 我日,真的假的,这么厉害。
EyebrowsWhite
266 天前
我觉得如果 AI 能辅助 code review 还挺好的

https://chat.openai.com/share/fe0cc11b-a207-4d8e-8c26-430aa0893a73
kidlj
266 天前
@EyebrowsWhite 今后 AI 将让系统 bug 和后门不复存在。
kkk9
266 天前
@kidlj #6 天大的笑话
Kumo31
266 天前
这个 . 会导致编译失败,即使系统支持 sandbox ,也不会开启
Kumo31
266 天前
@Kumo31 landlock...
skiy
266 天前
如何确定维护者是不是恶意的?加了个 . 之后,还能编译成功吗?
kidlj
266 天前
@kkk9 你可以看下 5 楼贴出来的 chatgpt 的回答,仅仅通过这一段 diff ,就给出了这么多见解(包括认识到了这多出的一个点的影响),试问有几个人能够在短时间内达到这样的见解呢?而 AI 工具一直在进步,所以我有这样的推测。你认为是笑话就当笑话看吧。
moudy
266 天前
@skiy 就是因为编译永不成功,所以成问题了
yolee599
266 天前
@skiy #10 这个是编译前的选项检查阶段,如果编译通过了就会开启 HAVE_LINUX_LANDLOCK ,维护就是要让它永远都编译失败,这样 HAVE_LINUX_LANDLOCK 就永远不会开启了
Greenm
266 天前
@kidlj 任何认为后门和 bug 将在某一天不复存在的想法都是一厢情愿和不切实际的,只要有人存在就不可能彻底解决这类问题。世界本来就是混沌的,你只能努力减少 bug ,永远也做不到杜绝。
cnt2ex
266 天前
@kidlj 让系统 bug 和后门不复存在不可能。能大量减少也许还有可能。
写一个程序,来判断另外一个程序有没有 bug ,这类问题最终是个停机问题,是不可解的。

AI 能做到的无非是和现在杀软的工作类似,能有多少的准确率预测出是否有 bug 。
而且对于一个 AI 算法来说,存在对抗样本,肯定会有人发明出能欺骗 AI 的后门代码的。
dyv9
266 天前
@kidlj 不对,对手也先利用 AI 检测一次,找到更隐秘的方案,只是难度一点,同时也让这个事变得门槛更高,实力不够的人看不出来。
kera0a
265 天前
@cnt2ex 我朋友在快手,boss 让他做一个提前发现未知 bug 的方案😄
kkk9
265 天前
@kidlj #11 如果 bug 实际存在,但是 AI 不认定存在 bug ,请问这个 bug 还是 bug 吗?你的不复存在论很矛盾啊,薛定谔的猫?

你换个说法,什么优化论、减少论,我都还能理解,不复存在论真是太天真了。
kkk9
265 天前
@kidlj #11 再说说你的其他的天真想法

> 仅仅通过这一段 diff ,就给出了这么多见解

这些见解是哪里来的,数据样本不是吗?那 AI 没见过的东西能解释吗?只要看不到 bug 就不存在 bug 咯?

> 试问有几个人能够在短时间内达到这样的见解呢?

如果你的脑子可以无损存储全部数据样本并且自由的根据需求去索引,我想人脑的算力应该是人类科技 AI 不能超越的。

> AI 工具一直在进步,

你用了工具一词,那么我相信你说的 AI 工具是人类创造的,而不是人工智能的自我创造,那么 AI 必然低于或等于人类的最高科技水平。人造的就一定存在 bug ,总有考虑不到的情况。那你说的 AI 怎么进步也没法超越数据样本去凭空推断吧?

> 你认为是笑话就当笑话看吧。

真话当笑话,笑话当假话,假话当真话,人真不像话。
kkk9
265 天前
@kidlj #11 这个帖子发在<信息安全>分类下面,我觉得分类简介已经给出了很好的结论。

我们都希望自己管理的计算机系统在运转过程中不要遇到任何安全事件。只是,这个不完美的世界的现实告诉我们:学无止境。

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

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

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

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

© 2021 V2EX