• 请不要在回答技术问题时复制粘贴 AI 生成的内容
woniuppp
V2EX  ›  程序员

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

  •  
  •   woniuppp ·
    shengxinjing · Aug 23, 2022 · 14032 views
    This topic created in 1535 days ago, the information mentioned may be changed or developed.

    怎么防止同事用 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 的代码投毒-完整代码

    Supplement 1  ·  Aug 23, 2022
    这个包投毒水平很差,审核的话还好,lodash-utils 是正常的包, 依赖 a 包,a 依赖 b,b 里面是你的权限
    GopherDaily
    GopherDaily
    Aug 23, 2022❤️9
    1
    刑事诉讼
    Shorekeeper
    Shorekeeper
    Aug 23, 2022❤️1
    2
    看起来是只针对这个 Evil.js 项目的解决方法,不具有普适性?下次出现个 Evil.js-1 怎么办?

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

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

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

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

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

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

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

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

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

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

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

    let subtotal;

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

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

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

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

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

    在此请教下 Java 有无此类包,或者实现方法,比如改下 java.lang.String 里面的一些输出?
    realJamespond
    realJamespond
    Aug 24, 2022
    81
    用微前端沙箱隔离, 有问题也只是他那块的问题不影响其他人的模块
    最简单的办法就是加工资~~
    woniuppp
    woniuppp
    OP
    Aug 26, 2022
    82
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5653 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 205ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    ♥ Do have faith in what you're doing.