V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
desGalaxy
V2EX  ›  Windows

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

  •  1
     
  •   desGalaxy · 49 天前 · 6052 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。
    41 条回复    2024-07-22 09:56:21 +08:00
    levelworm
        1
    levelworm  
       49 天前 via Android   ❤️ 1
    学好 C/C++果然有用啊
    canyue7897
        2
    canyue7897  
       49 天前 via Android   ❤️ 2
    为什么不换?
    这不就让 C ++背锅了嘛
    还能让全世界认识我
    busier
        3
    busier  
       49 天前 via iPhone
    写出 bug 问题不大,问题是都不测试就分发么
    mioktiar56
        4
    mioktiar56  
       49 天前   ❤️ 7
    以前刚写 C++的时候还经常犯使用空指针的错误,写了几年后,这种 bug 基本不会出现了;

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

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