记一次 github 泄漏 accessKey - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
AoEiuV020

记一次 github 泄漏 accessKey

  •  
  •   AoEiuV020
    AoEiuV020 2021 年 4 月 19 日 6423 次点击
    这是一个创建于 1833 天前的主题,其中的信息可能已经有所发展或是发生改变。

    突然看到阿里云的 accessKey 泄漏邮件才发现自己不小心把 key 传到 github 上了,

    赶紧从床上爬起来开电脑准备删文件,第一反应就是用 filter-branch 彻底删除历史中的这个文件,强制推送覆盖 github 上的版本,

    命令随便就能搜到,

    git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ --prune-empty --tag-name-filter cat -- --all 

    但是,但是从阿里云给的泄漏地址打开居然还能打开泄漏 key 的文件,

    仔细一看阿里云打开的是特定版本的文件,哪怕这个版本已经不在最终仓库里了,github 还是能打开的,

    也就是说光自己删除数据是没用的,这看起来是 github 缓存已经删除了的 commit,

    肯定要想办法删除这些缓存才行,

    于是找到 github 官方文档,

    https://docs.github.com/cn/github/authenticating-to-github/removing-sensitive-data-from-a-repository

    其中第 8 点明确说了要联系 GitHub 支持删除缓存之类,

    赶紧设置成 private 仓库,然后睡觉去了,

    第二天起来发支持工单,让 github 帮忙删除,

    04.18 11:39

    标题:

    Removing sensitive data from a repository

    内容:

    I submitted sensitive data to these two commits,

    https://github.com/AoEiuV020/LetsEncryptManualHook/tree/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx https://github.com/AoEiuV020/LetsEncryptManualHook/tree/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    I found that I cannot delete them completely,I have used filter-branch to completely delete sensitive data and force push, But these two commits can still be accessed, Please help me to delete these two commits completely,

    04.18 22:19

    收到工单回复,说缓存清除了,

    Hi 啊 o 额 iu 鱼, Thank you for contacting GitHub Support! I have gone ahead and cleared the cache for you. Please let me know what else I can assist with! Cheers, J.J. 

    至此才完成彻底删除 github 上的敏感数据,光等工单就等了十个半小时,

    大家要是有删除过 github 上的却没有发工单的可以试一下删除了的 commit 还能不能打开的,

    notion

    30 条回复    2021-04-20 12:11:37 +08:00
    learningman
        1
    learningman  
       2021 年 4 月 19 日   18
    你知道有多少 bot 在扫 GitHub 吗。。。
    正确做法是销毁对应的 key 吧,你把 git 历史删了不是掩耳盗铃
    yanqiyu
        2
    yanqiyu  
       2021 年 4 月 19 日
    accessKey 一旦泄露就应该吊销,因为泄露的范围不可预知
    AoEiuV020
        3
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @learningman 因为我看阿里云 accessKey 泄漏点处理推荐做法就是手动删除泄露代码,其次才是重置 key, 我就信了,
    而且同时泄露的不只阿里云一个 key,感觉不是很必要全部重置,
    我想着就算有 bot 扫到,也不会知道我这 key 是啥吧,而且应该也不至于有 bot 把 github 上所有项目所有 commit 包括已经删除了的都缓存起来分析,
    Rheinmetal
        4
    Rheinmetal  
       2021 年 4 月 19 日
    警告:将提交推送到 GitHub 后,应考虑其包含的任何数据都将受到影响。如果您提交了密码,请更改密码! 如果您提交了密钥,请生成新密钥。

    为什么不能修改 或者再生成 还是生成过了 但是还是洁癖?
    AoEiuV020
        5
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @Rheinmetal 也有道理,我还是去重置一下吧,主要是泄露了不只一个 key,所以第一个想法是删除泄露代码而不是重置,
    AoEiuV020
        6
    AoEiuV020  
    OP
       2021 年 4 月 19 日   1
    好了,全部重置了,确实放心一些,就是有些麻烦,尤其国内的平台,动 key 都要额外的验证,
    yiXu
        7
    yiXu  
       2021 年 4 月 19 日
    @AoEiuV020 我最近有使用 GitHub action 然后,不小心把 GitHub 的 token 传到了仓库中,在上传通过后,GitHub 直接邮件告知我该 token 被吊销。应该是 GitHub 自动检测到了自家生成的 token 。感觉这种直接吊销才更好点。
    AoEiuV020
        8
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @yiXu 阿里云的 key 检测甚至有白名单功能,可以把泄露的 key 添加到白名单就不会检测了,不知道什么场景会用到这个白名单,但既然做了,应该有人需要吧,公开后继续生效的情况,
    mogita
        9
    mogita  
       2021 年 4 月 19 日
    最近不小心在 GitHub 提交历史里泄了个废弃很久了的 ssh key,于是我把那台主机删掉了(
    AoEiuV020
        10
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    特地建了个没权限的 key 故意泄露一次再看看,果然阿里云这里是有手动删除建议,单选的,
    虽然已经重置了,但我确实也觉得马上彻底删除了应该就可以了的,
    laoyur
        11
    laoyur  
       2021 年 4 月 19 日 via Android
    Hi 啊 o 额 iu 鱼

    笑出声
    konnnnn
        12
    konnnnn  
       2021 年 4 月 19 日
    “啊 o 额 iu 鱼”这个 id,c4driod 吧?
    AoEiuV020
        13
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @konnnnn 哇,居然还有人记得,好多年了,现在我贴吧基本只逛游戏吧了,
    WishMeLz
        14
    WishMeLz  
       2021 年 4 月 19 日
    直接私有最简单
    whileFalse
        15
    whileFalse  
       2021 年 4 月 19 日   1
    @AoEiuV020 你根本想不到国内用户会提出什么样的需求……
    而国内厂商也很难站着把钱挣了。
    q197
        16
    q197  
       2021 年 4 月 19 日
    感觉 GitHub 网页版功能太少了,删除 commit,删除敏感信息泄露都只能用 git 操作,一看教程那么复杂,只好删库重开或者改私有库了。
    seki
        17
    seki  
       2021 年 4 月 19 日
    @AoEiuV020 有时候还是会用到的。比如你写了一个脚本用来检测代码里面是否有 token 泄露,然后写测试的时候就需要有一个泄漏了 token 的样例代码文件
    Felldeadbird
        18
    Felldeadbird  
       2021 年 4 月 19 日
    上次我推送就把 小程序的 key 丢上去了。github 马上就提示我泄露信息了。 我第一时间是去小程序后台 修改了 key 。然后强推版本。

    不过我发现貌似强推后,只要有之前的值,还是可以查到历史的 commit 信息。
    AoEiuV020
        19
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @Felldeadbird 是的,我说的就是这个问题,要彻底删除只能工单联系 github 的人,等他们处理,
    cco
        20
    cco  
       2021 年 4 月 19 日
    建议重写生成吧。
    Lemeng
        21
    Lemeng  
       2021 年 4 月 19 日
    重置了事
    slert
        22
    slert  
       2021 年 4 月 19 日
    所以阿里云怎么知道你泄漏了?
    AoEiuV020
        23
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @slert 肯定是有机器人 24 小时不断扫描 github 上所有新提交吧,上传私钥几秒内就收到邮件提醒泄露了,
    learningman
        24
    learningman  
       2021 年 4 月 19 日 via Android
    @AoEiuV020 你去找一个 gitmemory 的网站。。。为啥你会觉得没人全量扫 GitHub
    AoEiuV020
        25
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @learningman 看了下 gitmemory 也都是爬最新数据做分析的吧,并没有保存已经删除了的数据,甚至我项目改名他就搜不到老名字了,
    sudoy
        26
    sudoy  
       2021 年 4 月 19 日   1
    对于公开的仓库我坚持使用.env 文件保存敏感信息,然后加到 gitignore
    learningman
        27
    learningman  
       2021 年 4 月 19 日 via Android
    @AoEiuV020 这只是一个例子,你想想,阿里云能扫,别人也能扫
    AoEiuV020
        28
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @sudoy 我一般也会记得把项目要用的私密文件添加 ignore,这次泄露是搞了个临时文件写着把私密文件内容存在一个变量里,以便复制到服务器上跑测试个脚本用,然后一不小心就忘记删除和其他修改一起上传了,
    文件大概长这样,
    key='secret=xxxx'
    显然不是正常会用到的,也就没想着 ignore 什么的,
    AoEiuV020
        29
    AoEiuV020  
    OP
       2021 年 4 月 19 日
    @learningman 这个我是知道的,我想说的是,大家只会扫最新的内容,分析之后保存自己想要数据,secret 也只是个 base64,正常扫到不会认出这是什么,应该不至于有第三方把 github 泄露过的所有东西全部保存起来需要时再都调出来查,
    liangch
        30
    liangch  
       2021 年 4 月 20 日
    重置 key 多简单。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2953 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 100ms UTC 12:54 PVG 20:54 LAX 05:54 JFK 08:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86