V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
woniuppp
V2EX  ›  程序员

怎么防止同事用 Evil.js 的代码投毒

  •  
  •   woniuppp ·
    shengxinjing · 2022-08-23 09:40:24 +08:00 · 12573 次点击
    这是一个创建于 856 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎么防止同事用 Evil.js 的代码投毒-视频版 B 站

    最近Evil.js被讨论的很多,项目介绍如下

    2022-08-22-16-17-24.png

    项目被发布到 npm 上后,引起了激烈的讨论,最终因为安全问题被 npm 官方移除,代码也闭源了

    作为一个前端老司机,我肯定是反对这种行为,泄私愤有很多种方式,代码里下毒会被 git log 查到,万一违法了,还不如离职的时候给老板一个大逼兜来的解恨

    今天我们来讨论一下,如果你作为项目的负责人,如何甄别这种代码下毒

    1. 检测函数的 toString
    2. iframe
    3. node 的 vm
    4. ShadowRealm api
    5. Object.freeze
    6. 备份检测

    怎么防止同事用 Evil.js 的代码投毒-视频版 B 站

    怎么防止同事用 Evil.js 的代码投毒-完整代码

    第 1 条附言  ·  2022-08-23 10:32:29 +08:00
    这个包投毒水平很差,审核的话还好,lodash-utils 是正常的包, 依赖 a 包,a 依赖 b,b 里面是你的权限
    GopherDaily
        1
    GopherDaily  
       2022-08-23 09:50:03 +08:00   ❤️ 9
    刑事诉讼
    SunsetShimmer
        2
    SunsetShimmer  
       2022-08-23 09:50:53 +08:00   ❤️ 1
    看起来是只针对这个 Evil.js 项目的解决方法,不具有普适性?下次出现个 Evil.js-1 怎么办?

    我个人认为,一个开源项目不具有任何“社会责任”,也不应该期待着开源项目维护者有“责任感”。只要伸手拿了项目,只有您自己才有义务保证自己的产品没问题。
    Mithril
        3
    Mithril  
       2022-08-23 09:53:06 +08:00   ❤️ 66
    为啥要防。。。
    不要总想着帮公司法务干活,他们赚的不比码农少。
    abc0123xyz
        4
    abc0123xyz  
       2022-08-23 09:53:56 +08:00
    怎么防止同事删库
    jazzg62
        5
    jazzg62  
       2022-08-23 09:55:51 +08:00
    怎么防止老婆给我下药?
    SunsetShimmer
        6
    SunsetShimmer  
       2022-08-23 09:55:59 +08:00   ❤️ 1
    换个角度思考,确保每个引用的第三方库都有使用的理由,随时移除不再使用的 /没有理由的库,固定依赖版本。这算不算更好的办法?
    nothingistrue
        7
    nothingistrue  
       2022-08-23 09:56:33 +08:00
    个人开发不好防,但是同事的话那是团队开发,好防的很,做好单元测试就行了。如果没有单元测试,那你也不用防了,相比于产品给你的坑,Evil.js 投的毒都是小意思。
    Bijiabo
        8
    Bijiabo  
       2022-08-23 09:57:02 +08:00   ❤️ 6
    这可能更多的是一个非技术问题。

    需要考虑的是在什么情况下同事会下毒,没人会无缘无故做出这样的事情,是不是团队太卷、老板太 SB 、做事方式太奇葩。

    (深思熟虑之后,最终选择了和同事一起下毒跑路 >_>...
    jazzg62
        9
    jazzg62  
       2022-08-23 09:57:29 +08:00
    @jazzg62 家贼难防,代码审计很重要!!!
    ThreeK
        10
    ThreeK  
       2022-08-23 09:59:06 +08:00
    先拿到工期再讨论怎么做。
    dx3759
        11
    dx3759  
       2022-08-23 09:59:21 +08:00
    静态代码审查
    kidult
        12
    kidult  
       2022-08-23 10:00:32 +08:00
    吃饱了撑的要来投毒
    kikitte
        13
    kikitte  
       2022-08-23 10:00:58 +08:00   ❤️ 84
    “无产阶级常常分不清敌人经常内斗”
    Qy2FbR
        14
    Qy2FbR  
       2022-08-23 10:01:01 +08:00 via Android
    你们都不写 unit test 的吗?
    ck65
        15
    ck65  
       2022-08-23 10:02:30 +08:00 via iPhone
    生活和工作在一个互不信任的社会里,悲,难。
    Qy2FbR
        16
    Qy2FbR  
       2022-08-23 10:02:42 +08:00 via Android
    不搞 code review 的吗?
    dongpengfei1
        17
    dongpengfei1  
       2022-08-23 10:06:08 +08:00
    为什么反对投毒,因为会影响到其他同事的合法利益。
    lakehylia
        18
    lakehylia  
       2022-08-23 10:12:41 +08:00
    技术选型你们不做的吗?选型都不是小罗罗做的,都是大佬做技术选型,小罗罗负责填充代码。这个包根本过不了技术选型的关。
    JaguarJack
        19
    JaguarJack  
       2022-08-23 10:17:12 +08:00
    难道版本控制里面看不到加依赖吗?
    roundgis
        20
    roundgis  
       2022-08-23 10:20:19 +08:00 via Android
    你是老闆?
    tkHello
        21
    tkHello  
       2022-08-23 10:20:21 +08:00
    暴风雨只会来的更猛烈
    rxswift
        22
    rxswift  
       2022-08-23 10:22:41 +08:00
    让公司对员工好一点可解
    v2ka
        23
    v2ka  
       2022-08-23 10:23:14 +08:00
    都是成年人,为自己的行为负责就好了。

    别人要做小偷,要搞打砸抢烧,你防着有用吗?

    不是有公安,有法院,有版房吗?

    社会会合理分流,让合适的人呆到合适的地方就行了。

    不用你操那么大的心。
    shanyuhai123
        24
    shanyuhai123  
       2022-08-23 10:23:41 +08:00
    为了推广而发的帖子,散了吧。
    git 、svn 等代码管理工具有你提交记录,一抓一个准。
    Mark24
        25
    Mark24  
       2022-08-23 10:23:51 +08:00
    营造好的用工环境,哄好打工人。

    丧失信任之后,防你能防得住么?不如日行一善来的靠谱。
    samin
        26
    samin  
       2022-08-23 10:24:13 +08:00
    @roundgis 应该是个小 leader 来套方案 ?
    cheng6563
        27
    cheng6563  
       2022-08-23 10:26:27 +08:00
    git 如不开 gpg 验证的话完全可以伪造提交作者
    fanxasy
        28
    fanxasy  
       2022-08-23 10:26:48 +08:00
    应该大力推广,因为代码投毒总比物理投毒好。同理我们应该大力发展色情产业(
    tianyou666shen
        29
    tianyou666shen  
       2022-08-23 10:30:36 +08:00
    关键字 同事 投毒
    我以为你想说游族老板林奇呢

    只要不往我杯子里投毒,其他您随意.(毕竟您都要和公司鱼死网破了)
    sherryqueen
        30
    sherryqueen  
       2022-08-23 10:31:09 +08:00
    我国有一套完整的刑法
    zhaokun
        31
    zhaokun  
       2022-08-23 10:33:08 +08:00
    代码检测还不如多关注项目组员工的状态
    flybears
        32
    flybears  
       2022-08-23 10:35:02 +08:00
    @cheng6563 之前公司就碰见过这种,伪造提交者...最后也没查出来,后面就让加 gpg 验证
    fournoas
        33
    fournoas  
       2022-08-23 10:36:15 +08:00
    代码投毒小把戏而已,当年 Ken Thompson 是往 C 编译器里留后门。还不如考虑下怎么魔改项目构建工具吧
    woniuppp
        34
    woniuppp  
    OP
       2022-08-23 10:41:32 +08:00
    @GopherDaily 是这样的 囧
    woniuppp
        35
    woniuppp  
    OP
       2022-08-23 10:42:15 +08:00
    @SunsetShimmer 锁版本就是更好的办法
    woniuppp
        36
    woniuppp  
    OP
       2022-08-23 10:42:51 +08:00
    @kikitte 对的 你也是
    woniuppp
        37
    woniuppp  
    OP
       2022-08-23 10:43:25 +08:00
    @v2ka 那为啥每家都装防盗门 囧
    woniuppp
        38
    woniuppp  
    OP
       2022-08-23 10:43:42 +08:00
    @shanyuhai123 好的
    woniuppp
        39
    woniuppp  
    OP
       2022-08-23 10:44:18 +08:00
    @Qy2FbR 可能是依赖的包里
    woniuppp
        40
    woniuppp  
    OP
       2022-08-23 10:44:37 +08:00
    @kidult 这个库的作者可能就是吃饱了
    woniuppp
        41
    woniuppp  
    OP
       2022-08-23 10:45:04 +08:00
    @shanyuhai123 大部分项目 git 都没有 gpg 验证的,提交记录可以伪造的
    woniuppp
        42
    woniuppp  
    OP
       2022-08-23 10:45:25 +08:00
    @sherryqueen 有刑法也不耽误自己装防盗门的
    PerFectTime
        43
    PerFectTime  
       2022-08-23 10:49:35 +08:00
    写一个 Unevil.js 覆盖所有原型链
    Felldeadbird
        44
    Felldeadbird  
       2022-08-23 10:49:58 +08:00
    git log 一查就知道谁引入包了。

    所以这种项目除了炫技和泄愤,完全感觉不到投毒水平在哪?

    真正要给代码投毒,只需要在交易逻辑上写一个 弱智 BUG 就可以了。

    let subtotal;

    if(subtotal = pay.total ){
    xhr ....
    }

    这种逻辑 BUG ,只要公司没代码自动审查,没单元测试,没自动化。写得隐蔽点,夹在开发中。等某天引爆。
    yy77
        45
    yy77  
       2022-08-23 10:50:48 +08:00
    对引入包进行审计。即一般的程序员不能在网上看到某个包觉得好用就引入,需要进行审计之后再引入。

    可是真要投毒,不用引入整个包,在某个 util 库里写上一段更难查到。
    GP1
        46
    GP1  
       2022-08-23 10:51:24 +08:00
    你那么怕是不是平时压榨剥削员工有一手,导致自己心里有鬼?正常人谁愿意这样恶心人?
    woniuppp
        47
    woniuppp  
    OP
       2022-08-23 10:55:15 +08:00
    @GP1 包作者不是我啊 兄弟
    MoYi123
        48
    MoYi123  
       2022-08-23 11:04:05 +08:00   ❤️ 2
    这种毒还要引第三方库? 自己造的 bug 不比这多?
    soulmine
        49
    soulmine  
       2022-08-23 11:10:01 +08:00
    谁引发的问题谁负责 为啥要管呢
    darknoll
        50
    darknoll  
       2022-08-23 11:15:40 +08:00
    老板亲自发帖?
    palxie
        51
    palxie  
       2022-08-23 11:17:57 +08:00   ❤️ 5
    如果你是老板, 确实是你该考虑, 如果你真的只是同事, 那我觉得你戏有点多.
    rbq123456
        52
    rbq123456  
       2022-08-23 11:22:35 +08:00
    为啥要引入这样的包呢,这引入一看 package.json 就知道了。真想投毒就自己偷偷写点不就好了,这毒代码又不复杂,一问就是没注意看,再问就是百度复制的代码
    liuzhedash
        53
    liuzhedash  
       2022-08-23 11:24:10 +08:00
    谁是我们的敌人,谁是我们的朋友?
    deng81416754
        54
    deng81416754  
       2022-08-23 11:25:57 +08:00
    我看刑,你们觉得型吗
    vazo
        55
    vazo  
       2022-08-23 11:26:29 +08:00
    我就不信大伙热爱这个团队会主动投毒.有些问题看起来是技术问题其实是管理问题.
    NoString
        56
    NoString  
       2022-08-23 11:35:03 +08:00
    我的评价是就这就这 还不如我自己写的 bug 厉害
    zr8657
        57
    zr8657  
       2022-08-23 11:36:06 +08:00   ❤️ 3
    我觉得全世界的无产阶级是不可能团结起来的,可悲
    dianso
        58
    dianso  
       2022-08-23 11:48:29 +08:00
    一个 40 多岁的初中生写的,抱怨社会不公。
    kenvix
        59
    kenvix  
       2022-08-23 11:57:45 +08:00
    @kikitte 你先别假定他是无产阶级
    liuzhaowei55
        60
    liuzhaowei55  
       2022-08-23 12:15:34 +08:00 via iPhone
    一架飞机上不会有两个人同时携带炸弹,同理一个项目里不会有两个人同时下毒,所以只要你先下手,就可以杜绝同事下毒了。
    WOLFRAZOR
        61
    WOLFRAZOR  
       2022-08-23 12:58:27 +08:00
    刑啊!到时候看谁先进哈哈哈哈哈
    clrss
        62
    clrss  
       2022-08-23 13:30:56 +08:00
    虚假的投毒:
    Evil.js

    真正的投毒:
    goto fail;
    goto fail;
    PendingOni
        63
    PendingOni  
       2022-08-23 14:28:54 +08:00
    我觉得还是 DDoS 脚本小子比较刑
    Tink
        64
    Tink  
       2022-08-23 14:33:42 +08:00 via Android
    @Mithril 这不是法务的事
    gabezhao
        65
    gabezhao  
       2022-08-23 15:05:04 +08:00
    @jazzg62 大郎,改喝药了
    tairan2006
        66
    tairan2006  
       2022-08-23 15:15:04 +08:00   ❤️ 2
    我劝你少管闲事
    piloots
        67
    piloots  
       2022-08-23 15:42:34 +08:00
    真刑。太刑,决定刑。无期刑,直至死刑。
    set01
        68
    set01  
       2022-08-23 16:21:25 +08:00   ❤️ 2
    楼主换个标题就没这么多乱七八糟的回复了
    怎么防止同事用 Evil.js 的代码给我的代码里投毒,影响我下班
    belowfrog
        69
    belowfrog  
       2022-08-23 17:38:46 +08:00
    是供应链投毒的问题,看看 https://github.com/LavaMoat/LavaMoat ,metamask 用的文案
    manami
        70
    manami  
       2022-08-23 17:39:29 +08:00
    还不如专门用有漏洞的包,攻击交给别人去做
    Qy2FbR
        71
    Qy2FbR  
       2022-08-23 19:04:54 +08:00 via Android
    @woniuppp 啥你们用公司里没有的包都不用过 security/risk/compliance?
    luomu24
        72
    luomu24  
       2022-08-23 21:28:04 +08:00
    每次看到你们这么精力十足折腾,我就觉得我不适合这行。
    AhECbt
        73
    AhECbt  
       2022-08-23 21:35:11 +08:00
    还有比 rm -rf /* 更毒的?目前没发现呐。
    Aixtuz
        74
    Aixtuz  
       2022-08-23 23:27:50 +08:00
    相对于 “如何对付变成敌人的队友?”
    更重要的不该是 “如何避免队友变成敌人么?”

    如果不是把队友逼急了,人家至于投毒么...
    没有理由就是要投的人,有很多么?
    abuabu
        75
    abuabu  
       2022-08-24 00:29:28 +08:00
    上一贴:怎么给代码下毒
    这一贴:怎么防止同事下毒
    下一贴:怎么防止和 v2er 做同事
    lopssh
        76
    lopssh  
       2022-08-24 07:20:16 +08:00 via Android
    太秀了吧这个
    hervey0424
        77
    hervey0424  
       2022-08-24 07:48:22 +08:00
    根本不需要, 让他们正常写就和投毒一样了
    mingl0280
        78
    mingl0280  
       2022-08-24 09:10:35 +08:00
    信任问题不要怪代码。
    钱和福利都不给够还要唧唧歪歪同事的敌意工作环境是非常容易催生极端思想的。
    woniuppp
        79
    woniuppp  
    OP
       2022-08-24 13:16:36 +08:00
    @set01 学习了
    ada87
        80
    ada87  
       2022-08-24 15:40:10 +08:00
    JavaScript 感觉没什么技术含量,不用三方自己都能投。

    在此请教下 Java 有无此类包,或者实现方法,比如改下 java.lang.String 里面的一些输出?
    realJamespond
        81
    realJamespond  
       2022-08-24 15:51:37 +08:00
    用微前端沙箱隔离, 有问题也只是他那块的问题不影响其他人的模块
    最简单的办法就是加工资~~
    woniuppp
        82
    woniuppp  
    OP
       2022-08-26 17:30:30 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:48 · PVG 04:48 · LAX 12:48 · JFK 15:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.