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

唉,研发密钥泄露,导致整个私有 gitlab 被拖。。。

  •  
  •   hackroad · 25 天前 · 12008 次点击
    内网其他部门电脑中毒再扫描整个公司相关系统弱密码。。还真有人 gitlab 弱密码被拖库,代码被拖走多少不知道,但是线上私钥全部泄露,运维、公有云 AK SK 泄露,全部要更换。。。
    加班 2 天了,下一周工作量爆炸。。
    52 条回复    2025-04-22 15:25:14 +08:00
    renfei
        1
    renfei  
       25 天前   ❤️ 1
    管理不规范吧,线上私钥不能提交到 Repo ,生产环境应该用环境变量读取这些敏感凭证
    hackroad
        2
    hackroad  
    OP
       25 天前
    @renfei #1 弱密码的这个人权限很大,私钥并不在线上库,但是他有权限。
    jianghuan2
        3
    jianghuan2  
       25 天前
    我想起我刚工作的第二月,用组内生产 aliyun 的 AK 和 SK 写测试代码并在下班前推送到 GitHub 。结果 aliyun 第二天就邮件发到老大那里了,最后全组更换 AK 、SK 。并让我在开会时自行检讨......
    AmaQuinton
        4
    AmaQuinton  
       25 天前
    曾经搞过,把公网的测试服务器密钥文件提交到 GitHub 了,收到了 GitHub 官方的警告邮件,然后去更新密钥,同时把 GitHub 文件和 commit 都删除了,挺吓人的
    dford
        5
    dford  
       25 天前
    但凡加一步合并前代码审核,就不容易出现这种大坑
    wtfwc
        6
    wtfwc  
       25 天前
    昨天才听一个朋友说他组内一个成员将国企内网的电脑接到公网上去了,然后公网和内网同时报警,从首都直接层层报警到终端单位......最终这哥儿 19 年工龄没了,净身去职。
    laminux29
        7
    laminux29  
       25 天前   ❤️ 1
    @wtfwc 盲猜是涉密单位或涉密岗位 + 单位已经提前警告不能这样做 + 哥们就是莽就是要上公网,只是被辞退,没被起诉坐牢已经是好结局了。
    cookii
        8
    cookii  
       25 天前 via Android
    一般密码密钥大家都存在哪里?
    NathanInMac
        9
    NathanInMac  
       25 天前
    @jianghuan2 胆子是真大。不过说起来为什么新人就能拿到 prod 的 key 也说明了平时没管过这个问题
    xmumiffy
        10
    xmumiffy  
       25 天前 via Android
    见过不少网站能访问 .git 文件夹的 ,里面有 git 地址和访问凭证可以直接登上去😂
    wunonglin
        11
    wunonglin  
       25 天前   ❤️ 2
    @cookii #8 k8s secrets 里,或者第三方配置中心,consul 之类的。反正总之线上的任何 tk 、key 都不可能给开发的。只会提供额外的开发环境
    sampeng
        12
    sampeng  
       25 天前 via iPhone
    没明白,你在内网啊…提交也是内网 gitlab 。核心问题是你内网被攻克了啊。锅肯定在 IT 身上,没 IT ?就算中毒了,谁知道你 gitlab 在哪…你杞人忧天了。其实没啥事…代码没啥了不起的。云密钥泄露也没事,你看操作记录就是了。大概率是自己吓自己了。当然,这是安全风险,吃一堑长一智。我以前碰太多把密钥提公开的 github 上的了,也没啥事…
    guanzhangzhang
        13
    guanzhangzhang  
       25 天前
    it 增加安全,避免内网任何机器尝试扫描其他机器和设备
    gitlab 增加二次认证
    核心环境上堡垒机,并增加二次认证
    iorilu
        14
    iorilu  
       25 天前
    @wtfwc 怎么接得, 除非他自己就是管理网络得, 否则随便谁能在内外开通外网访问?
    dadachen1997
        15
    dadachen1997  
       25 天前
    我们已经不给用 api key 方式做认证了,去年全部迁移到用 Managed Identity 来搞。
    xingxing09
        16
    xingxing09  
       25 天前
    @iorilu 热点啊
    sampeng
        17
    sampeng  
       25 天前 via iPhone
    我们 gitlab 我直接设置最小 255 位密码。平常用 sso 登陆网页。
    guoooo00oohao
        18
    guoooo00oohao  
       25 天前
    @cookii 使用 secret manager , 使用类似 vault 。测试和生产各一套 vault ,当需要使用的是 ExternalSecret 这样的工具从拉值创建最新的。

    上线操作都是使用额外的密码生成工具,都是一次性密码
    lcy630409
        19
    lcy630409  
       25 天前
    op 说的这种 无解,只能后面公司内部规范,没有必要的权限不要给

    就相当于 总经理拥有的账号能查看所有信息,虽然他不会看你一个技术/运维提交的东西,但是他的账号能访问到,一旦总经理的密码被攻破或者弱密码 就等于 所有人的密码泄露
    whileFalse
        20
    whileFalse  
       25 天前
    应用在公有云中运行,访问云本身的资源用 Role 授权不用 Key 。然后其他三方服务的 Key 全部放在 SecretsManager 中,使用 Role 在运行时获取,这样就可以做到不明文存储任何 Key

    对于需要访问生产公有云账户的运维人员,登录开双因素认证
    pydiff
        21
    pydiff  
       25 天前
    请教下,怎么扫描整个公司相关系统弱密码,用什么自动化工具呀,还是人工一个一个来搞
    7gugu
        22
    7gugu  
       25 天前
    外网是怎么访问到内网的?还是说这个内网只是一个概念,并不是真正意义上的隔离😂
    guoooo00oohao
        23
    guoooo00oohao  
       24 天前
    @pydiff 很麻烦,正常用户内部系统统一 SSO 登录就行了;管理员账号仅限于 VPN 或者内网登录。
    pydiff
        24
    pydiff  
       24 天前
    @guoooo00oohao 哦哦,就是搞个类似 ldap 的东西是吧
    levelworm
        25
    levelworm  
       24 天前 via Android
    正常,这种事情我们也干过,token 直接放代码里,省事嘛!不用写代码从 secret manager 里取了。。。

    哈哈哈。。。嗝
    iugo
        26
    iugo  
       24 天前
    强制要求团队成员开启 2FA, 并且 2FA 要有两种方式. 同时再建议开启 Passkey 在日常中节约时间.
    levelworm
        27
    levelworm  
       24 天前 via Android
    @iugo #26
    作为开发,我真的非常反感 2FA ,但是不能不用,唉。不过这个 passkey 看来能解决我的痛点,不用每天登陆两次了。
    PatchouliTC
        28
    PatchouliTC  
       24 天前
    答案是公司内做一个 vault 统一管服务端机密,那玩意开源自托管,就是上手有点难
    uncat
        29
    uncat  
       24 天前   ❤️ 5
    你们的 GitLab 是公网可达的吧?

    分享我们思路:

    我们从基建最初便落地了基于 WireGuard 的 VPN 网络,入职时签发配置,离职时注销,每个设备一份不可复用,只影响 172.31.0.0/16 这一个网段(避免路由冲突),加入 VPN 网络的人才能访问公司内部服务。

    这里有很多好处,比如:

    1. 有效的内部服务隔离。解决人员流动问题,降低内部服务因为人为疏忽暴露的风险(相对于公网可达而言)。
    2. 每个设备一个独立的 VPN 证书,解决远程办公的联调问题。
    3. VPN 网络还能打通 K8s 集群,满足直连 Pod IP ,Service IP 的需求。

    FYI
    uncat
        30
    uncat  
       24 天前   ❤️ 1
    纠正:每个设备一个独立的 VPN 证书 -> 每个设备一个独立的 VPN IP
    NGGTI
        31
    NGGTI  
       24 天前
    被黑客攻击进入内网了。建议找乙方安全公司做红队演练、渗透测试吧。
    jenson47
        32
    jenson47  
       24 天前
    几个问题整改,
    1. 内网网络隔离或者说内网网段隔离(交换机设置或者搞个防火墙)
    2. 密码策略,尽量使用统一密码认证,然后密码要求强密码
    3. 电脑权限管理,非必须情况下,不授予管理员权限(其实就是最小权限原则)
    4. 电脑系统尽量不要用 win10 以下,以及用自带的防病毒
    5. 给他们一个错觉,公司有网络安全监控知道他们在电脑做的任何事(让他们悠着点)

    最后建议找个安全公司,给你们公司员工做下安全培训。
    Felldeadbird
        33
    Felldeadbird  
       24 天前
    这种内网爆破无解吧。总有一个人弱口令。

    当然了,库中就不应该添加 敏感的 key 。
    yjxjn
        34
    yjxjn  
       24 天前
    @jianghuan2 #3 密钥配置这类的不都变量么,写入系统变量去配置,最后即使 ush 了也没啥事
    jianghuan2
        35
    jianghuan2  
       24 天前
    @yjxjn #34 当时刚毕业菜,而且是测试 demo 学习用的,我就直接写在配置文件 push 了。因为邮件是先发到我这里,然后我立马找组长、老大交代情况,后面检讨一下也就过去了。
    wu67
        36
    wu67  
       24 天前
    我只知道曾经呆过的团队, 有人把代码贴公网了, 然后不知道他贴的源头在哪, 最要命的, 被 csdn 农场型博客给爬了, 好了, 全网搜关键字都能搜出来, 听说被项目被扣分....
    jciba5n4y6u
        37
    jciba5n4y6u  
       24 天前
    @Felldeadbird 能说出口令这个词,同行。

    现在搞安全的,脚本小子太多,基础太不扎实了
    daxin945
        38
    daxin945  
       24 天前
    既然能够爆破成功,说明肯定不是最近几天才黑进去的,因为爆破可能是漏洞攻击不奏效之后的手段了。
    建议整体排查一下受害范围内的主机,如检查一下 ssh-key 、/tmp 目录下的可以文件等,别被留下后门了
    daxin945
        39
    daxin945  
       24 天前
    @daxin945 可以文件->可疑文件
    yuchen198
        40
    yuchen198  
       24 天前
    还有一个事,公司的所有网站密码都不要保存到 Chrome 浏览器,要是不小心安装了个什么软件的婆姐版,其实是个病毒,人家可以直接盗走 Chrome 保存的密码和 cookie
    dododada
        41
    dododada  
       24 天前
    sso+双因子认证呗,当然你要是搞了一些独立系统,或者双因子认证算法被人破了,那就没辙了;

    你这个应该是供应链攻击了,估计还要去看看有没有把你们用的什么云平台的账号数据和资产搞掉;
    wangyzj
        42
    wangyzj  
       24 天前
    不是内网吗?
    另外代码中藏密码这事情,几乎没有完美方案,CI 过滤然后人工看,也不敢完全保证
    yph007595
        43
    yph007595  
       24 天前
    @jianghuan2 #3 为什么要推倒 github
    cyspy
        44
    cyspy  
       24 天前
    通用做法例如 github secrets 是只能替换不能读写,actions 里面输出会被屏蔽
    Meld
        45
    Meld  
       24 天前
    @wtfwc

    说个八卦,现在暗网那么多身份信息资料库,其中有一份就是当时社保局有个傻逼开发硬把内网环境接到公网导致的
    jimrok
        46
    jimrok  
       24 天前
    为什么开发要掌握私钥,开发的私钥不是只有开发环境的吗?生产环境都是运维负责管理。
    hanyuwei70
        47
    hanyuwei70  
       24 天前
    给 op 一些建议
    1. gitlab 2FA 登录,现在 yubikey 也不贵了,还是觉得贵可以用 canokey
    2. 线上私钥、云平台 AK 、SK 为什么会放在 gitlab 里?首先应该用一个专门的东西管理这些密钥,其次你都已经是云平台了,尽量减少静态 AKSK 的使用。
    WispZhan
        48
    WispZhan  
       24 天前
    我们直接 gitlab 纯内网,外部访问只能用 VPN 。 省一大堆事情。

    泄露也行,反正至少还要一个 VPN ,VPN 一人一账号,谁出问题谁负责。
    ---
    中木马了当我没说
    demonzoo
        49
    demonzoo  
       23 天前
    2FA 可以解决这种问题吧?强制所有人开启两步验证
    xw340721
        50
    xw340721  
       23 天前
    push 时候在 ci 中加入检测这类的代码,一搜一大把
    v2wp
        51
    v2wp  
       23 天前
    内网办公电脑中毒这个事情不得不说,办公电脑安全基线必须有墙和 edr 可以保证 445,139,135 之类的危险端口访问拦截。一般像利用永恒之蓝漏洞的挖矿、勒索病毒都是靠 rce 直接溢出植入的,然后再提取本机密码在内网横向撞口令或者自带弱口令去爆破内网终端,自动化感染其他机器。所以企业内网非常有必要做安全基线配置。
    franswish
        52
    franswish  
       23 天前
    @wtfwc 19 年工龄还干这种事真得怀疑是不是故意的,不是说是间谍,而是有没可能和单位有仇。出这种事单位可能比个人还惨(尤其是如果不是机关而是国企,要盈利那种,出了泄密事故取消保密资格认证可能三年都接不了正常业务)。毕竟国密的电脑连入职一个月的新人都知道不能连入公网
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3899 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:17 · PVG 18:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.