Crowdstrike crash 是由空指针解引用导致

2024-07-20 07:45:11 +08:00
 desGalaxy
https://twitter.com/Perpetualmaniac/status/1814376668095754753

最后推文建议把 C++换成 Rust :D
8825 次点击
所在节点    Windows
41 条回复
yyyyt
2024-07-20 15:31:40 +08:00
只能说测试都不做就推给了全世界用户
真牛
moudy
2024-07-20 15:38:08 +08:00
@busier 似乎是 azura 异常引起的分发失败,推特有人截图说那个文件里都是垃圾内容
w568w
2024-07-20 16:23:52 +08:00
1. 首先明确的是,Rust 在内存安全上无懈可击(不要说什么「都是编码习惯」「我习惯好写 C++ 从来不出错」,Rust 从原理上避开习惯带来的内存问题,把这变成一个根本无需讨论的伪命题了,还不高兴了?)所以说这个问题是不用 Rust 导致的,无可厚非;

2. 但是,重点是 crowdstrike 这个开发测试流程和程序员的态度,就像楼上说的,换成 Rust 多半也只会 unwrap() everywhere ,最后全 panic 掉。换语言能解决个人粗心大意的问题,但这个问题不在其中。还是那句话,出现一只蟑螂的时候,说明……
786375312123
2024-07-20 16:53:00 +08:00
不是,不说 rust ,不说测试,不说开发能力。
练静态分析都没上?现成的工具一大堆啊?
https://clang.llvm.org/docs/analyzer/checkers.html#core-nulldereference
polobug
2024-07-20 16:55:43 +08:00
100 元一台的每年服务费一点都不便宜啊。。
tairan2006
2024-07-20 16:55:57 +08:00
草台班子是这样的
desGalaxy
2024-07-20 21:59:27 +08:00
@w568w Rust 也有 unsafe 代码可能会有内存 bug 。但 rust 的确让 unsafe 代码明确,且尽量少
winson030
2024-07-20 22:47:56 +08:00
这大公司连 sdlc 都没贯彻落实,实在不能理解。他这情况连 sit 都不可能过的,更何况 uat 和 production 。
her999
2024-07-20 23:59:07 +08:00
@moudy 昨天上午,我打算下载一个 vscode 的扩张,发现 https://marketplace.visualstudio.com/ 服务中断了。当时的确部分 azura 主机出现异常,而 crowdstrike 也的确通过 azura 更新。但是,如果 azura 出现故障,Crowdstrike 就把下载到的错误的内核文件(*.sys),不经过校验,就直接安装在用户的生产环境中,导致系统蓝屏,那么更证明 crowdstrike 是十足的草台班子。
12101111
2024-07-21 03:45:51 +08:00
@lrxiao 在微软的 gdi rust 内核模块中就能找到 unwrap 的 message ,可见微软也在用 unwrap 和 assert

比如 called Option::unwrap() on a None value gdi_rust\src\xform\mod.rs
Src and Dst are of different sizes gdi_rust\src\xform\xformobj_cxx.rs
assertion failed: !self.ppath.is_null() gdi_rust\src\pathobj.rs
called Option::unwrap() on a None value gdi_rust\src\umptr.rs
called Result::unwrap() on an Err value gdi_rust\src\region.rs
index out of bounds: the len is but the index is
assertion failed: index <= scan_data.len()
assertion failed: ScanInternal::is_valid_scan(&&*self.scan_data, previous_index)

用 strings win32kbase_rs.sys 就能看到(版本号 10.0.26100.1252 )
mongoose
2024-07-21 12:57:20 +08:00
不是吧?
我记得他们官方出的解释文章中说不是因为空指针问题。
v1
2024-07-21 18:30:49 +08:00
@moudy @her999 指正 Azure …
moudy
2024-07-21 18:39:32 +08:00
@kk2syc 我在前一天晚上玩 xbox 发现商店异常,打折页面没响应。但是就觉得 xbox 服务抽风。没想到是微软云抽风,更没想到把 crowdstreik 给点着了
v1
2024-07-21 19:53:35 +08:00
@moudy 嗯嗯,我只是回复你们打错字了
wangshuo6
2024-07-21 20:10:37 +08:00
rust 启动!
VYSE
2024-07-21 21:38:17 +08:00
可是安全软件的内核模块往往是对 io ,network 的 hook ,不 crash 但模块会不工作,此时也会 bsod...
Keuin
2024-07-21 23:30:47 +08:00
Rust 也不能保证不会出 bug ,解决 bug 的应该是流程和规范,而非语言
leimao
2024-07-22 07:28:40 +08:00
太长了,推文哪里提到 Rust 了?
leimao
2024-07-22 07:31:29 +08:00
看到了。Rust 就没有空指针吗?空指针这个问题,只能靠检查来解决吧?
Nugine0
2024-07-22 08:41:48 +08:00
讲道理,你们测试会测到 azure 宕机返回垃圾内容的情况吗?多半会认为底层已经有校验了吧。
当天上午我的确先看到了 Azure 大规模宕机的消息,下午就是 CrowdStrike 的大新闻。

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

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

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

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

© 2021 V2EX