desGalaxy
V2EX  ›  Windows

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

  •  1
     
  •   desGalaxy · Jul 20, 2024 · 10930 views
    This topic created in 843 days ago, the information mentioned may be changed or developed.
    41 replies  •  2024-07-22 09:56:21 +08:00
    levelworm
    levelworm
    Jul 20, 2024 via Android❤️1
    1
    学好 C/C++果然有用啊
    canyue7897
    canyue7897
    Jul 20, 2024 via Android❤️2
    2
    为什么不换?
    这不就让 C ++背锅了嘛
    还能让全世界认识我
    busier
    busier
    Jul 20, 2024 via iPhone
    3
    写出 bug 问题不大,问题是都不测试就分发么
    mioktiar56
    mioktiar56
    Jul 20, 2024❤️7
    4
    以前刚写 C++的时候还经常犯使用空指针的错误,写了几年后,这种 bug 基本不会出现了;

    换成 Rust 虽然没有这种 bug ,还是会有其他 bug 的,和语言没关系,和人关系比较大,估计是降本增效导致的
    zhng920823
    zhng920823
    Jul 20, 2024
    5
    那个 9c 是结构体或类成员的偏移嘛
    liuguangxuan
    liuguangxuan
    Jul 20, 2024
    6
    @zhng920823 9c 应该是无效的地址,不应该访问,所以挂了。
    desGalaxy
    desGalaxy
    OP
    Jul 20, 2024
    7
    @zhng920823 是的
    Rehtt
    Rehtt
    Jul 20, 2024 via Android❤️1
    8
    话说推送前没测试吗,这次导致大面积错误的事故应该是可以测试出来的啊
    PrinceofInj
    PrinceofInj
    Jul 20, 2024
    9
    我比较好奇的是如何收场。赔款?还是直接破产?
    Kumo31
    Kumo31
    Jul 20, 2024
    10
    Rust 又赢了
    lrxiao
    lrxiao
    Jul 20, 2024
    11
    按照写这个程序的人的做法, 写 Rust 也只会 unwrap 然后照样 panic (
    crackidz
    crackidz
    Jul 20, 2024
    12
    Rust 党又来了...
    minami
    minami
    Jul 20, 2024 via Android
    13
    在 servo 完工前任何对 rust 的吹嘘都是扯蛋
    o0DoO0o
    o0DoO0o
    Jul 20, 2024
    14
    换位思考一下,写出这段程序的人现在应该在想怎么安全辞职了
    iamtom
    iamtom
    Jul 20, 2024❤️1
    15
    @Rehtt 估计没有实际测试,疏忽了。世界本来就是草台班子。我觉得一点不奇怪。
    还有地铁系统出 bug 的,导致路线出错。
    e3c78a97e0f8
    e3c78a97e0f8
    Jul 20, 2024❤️1
    16
    @Rehtt 没测试只是一方面,另一方面是推送的时候不是 incremental ,而是直接推给全球所有用户。只能说这个公司的技能点都点在政企关系上,技术实力差得很。
    kenvix
    kenvix
    Jul 20, 2024
    17
    这简直超级草台班子,但凡开发自己跑一下都不至于这样
    y1y1
    y1y1
    Jul 20, 2024
    18
    这个我也看见了,读到最后推荐 rust 猝不及防没绷住
    gulugu
    gulugu
    Jul 20, 2024
    19
    这真是毁掉世界只需一行代码啊!只要掌握资源,凡人比黑客还牛
    xjzshttps
    xjzshttps
    Jul 20, 2024
    20
    这个事情真的很离谱
    看全面爆发,这个 bug 触发条件看起来很简单
    那么从写出 bug 到全部客户都更新上,中间有多少步骤?
    开发自测,专业测试,测试版本上限,正式版小范围推送,中间哪一步都应该能够拦截吧?
    或者说这个是时间之类的相关的 bug ?测试时由于一些条件不会触发?
    yyyyt
    yyyyt
    Jul 20, 2024 via Android
    21
    只能说测试都不做就推给了全世界用户
    真牛
    moudy
    moudy
    Jul 20, 2024 via iPhone
    22
    @busier 似乎是 azura 异常引起的分发失败,推特有人截图说那个文件里都是垃圾内容
    w568w
    w568w
    Jul 20, 2024
    23
    1. 首先明确的是,Rust 在内存安全上无懈可击(不要说什么「都是编码习惯」「我习惯好写 C++ 从来不出错」,Rust 从原理上避开习惯带来的内存问题,把这变成一个根本无需讨论的伪命题了,还不高兴了?)所以说这个问题是不用 Rust 导致的,无可厚非;

    2. 但是,重点是 crowdstrike 这个开发测试流程和程序员的态度,就像楼上说的,换成 Rust 多半也只会 unwrap() everywhere ,最后全 panic 掉。换语言能解决个人粗心大意的问题,但这个问题不在其中。还是那句话,出现一只蟑螂的时候,说明……
    786375312123
    786375312123
    Jul 20, 2024
    24
    不是,不说 rust ,不说测试,不说开发能力。
    练静态分析都没上?现成的工具一大堆啊?
    https://clang.llvm.org/docs/analyzer/checkers.html#core-nulldereference
    polobug
    polobug
    Jul 20, 2024
    25
    100 元一台的每年服务费一点都不便宜啊。。
    keenkiller
    keenkiller
    Jul 20, 2024 via Android
    26
    草台班子是这样的
    desGalaxy
    desGalaxy
    OP
    Jul 20, 2024 via Android
    27
    @w568w Rust 也有 unsafe 代码可能会有内存 bug 。但 rust 的确让 unsafe 代码明确,且尽量少
    winson030
    winson030
    Jul 20, 2024
    28
    这大公司连 sdlc 都没贯彻落实,实在不能理解。他这情况连 sit 都不可能过的,更何况 uat 和 production 。
    her999
    her999
    Jul 20, 2024
    29
    @moudy 昨天上午,我打算下载一个 vscode 的扩张,发现 https://marketplace.visualstudio.com/ 服务中断了。当时的确部分 azura 主机出现异常,而 crowdstrike 也的确通过 azura 更新。但是,如果 azura 出现故障,Crowdstrike 就把下载到的错误的内核文件(*.sys),不经过校验,就直接安装在用户的生产环境中,导致系统蓝屏,那么更证明 crowdstrike 是十足的草台班子。
    12101111
    12101111
    Jul 21, 2024
    30
    @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
    mongoose
    Jul 21, 2024
    31
    不是吧?
    我记得他们官方出的解释文章中说不是因为空指针问题。
    v1
    v1
    Jul 21, 2024
    32
    @moudy @her999 指正 Azure …
    moudy
    moudy
    Jul 21, 2024 via iPhone
    33
    @kk2syc 我在前一天晚上玩 xbox 发现商店异常,打折页面没响应。但是就觉得 xbox 服务抽风。没想到是微软云抽风,更没想到把 crowdstreik 给点着了
    v1
    v1
    Jul 21, 2024
    34
    @moudy 嗯嗯,我只是回复你们打错字了
    wangshuo6
    wangshuo6
    Jul 21, 2024
    35
    rust 启动!
    VYSE
    VYSE
    Jul 21, 2024 via Android
    36
    可是安全软件的内核模块往往是对 io ,network 的 hook ,不 crash 但模块会不工作,此时也会 bsod...
    Keuin
    Keuin
    Jul 21, 2024
    37
    Rust 也不能保证不会出 bug ,解决 bug 的应该是流程和规范,而非语言
    leimao
    leimao
    Jul 22, 2024 via iPhone
    38
    太长了,推文哪里提到 Rust 了?
    leimao
    leimao
    Jul 22, 2024 via iPhone
    39
    看到了。Rust 就没有空指针吗?空指针这个问题,只能靠检查来解决吧?
    Nugine0
    Nugine0
    Jul 22, 2024
    40
    讲道理,你们测试会测到 azure 宕机返回垃圾内容的情况吗?多半会认为底层已经有校验了吧。
    当天上午我的确先看到了 Azure 大规模宕机的消息,下午就是 CrowdStrike 的大新闻。
    yongdaimi
    yongdaimi
    Jul 22, 2024
    41
    任何不经过测试的 code 直接推送或入库都是灾难。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3909 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    ♥ Do have faith in what you're doing.