在GitHub上公开秘密:泄露凭证和API密钥后该怎么办

2024-01-05 07:50

本文主要是介绍在GitHub上公开秘密:泄露凭证和API密钥后该怎么办,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为开发人员,如果发现刚刚将敏感文件或机密公开给公共git存储库,则需要执行一些非常重要的步骤。

什么是秘密? 在本文档中,当我们使用“机密”一词时,我们指的是用于身份验证或授权的任何内容,最常见的是API密钥,数据库凭据或安全证书。

第一步,呼吸:在大多数情况下,如果您认真遵循本指南,则只需几分钟即可消除大部分潜在损害。 这篇文章将介绍消除风险并确保将来不会发生这种风险所需的四个步骤。

  1. 撤销机密或凭据
  2. (可选)永久删除泄漏的所有证据
  3. 检查入侵者的访问日志
  4. 实施未来的工具和最佳实践

如果删除文件或存储库,那么我安全吗?

抱歉不行。 如果将存储库设为私有或删除文件,则可以降低新发现有人泄漏的风险,但现实情况是,对于那些知道在哪里查找的人来说,您的文件很可能仍然存在。 Git会保留您所做的所有操作的历史记录,因此即使删除该文件,该文件仍将存在于git历史记录中。 即使将存储库设为私有,删除您的历史记录或什至删除整个存储库,您的秘密仍然会受到威胁。

有很容易的方法来监视公共git存储库,例如,GitHub有一个公共API,您可以在其中监视每个进行的git提交。 这意味着任何人都可以(并且确实可以)监视此API,以在存储库中查找凭据和敏感信息。 出于这个原因,最好假设如果您泄露了一个秘密,它将永远被泄露。

将机密泄漏到GitHub上然后将其删除,就像不小心发布了一个令人尴尬的推文,将其删除,只是希望没人能看到它或截屏。

步骤1.撤销秘密并消除风险

我们需要做的第一件事是确保您公开的秘密不再有效,因此没有人可以利用它。

如果您需要有关如何撤消密钥的具体建议,请参阅我们的API最佳做法中的说明 。

如果此密钥属于您工作的组织,那么与组织的高级开发人员进行交流非常重要。 让您的公司知道您泄露了敏感信息可能会很可怕,尤其是如果这些信息发生在个人存储库中。 但是诚实是最好的方法,公司很可能已经发现了漏洞,如果问题得到解决并且您真诚地关心,则可以原谅错误。

不要希望问题会消失-错误会发生,最好是诚实坦率。

你知道吗?

松弛键是稀有的API令牌之一,它们能够自动撤消! 就像使用auth.revoke端点一样简单!

第2步。(可选)摆脱证据

一旦秘密被撤消,就不能再使用了。 但是,拥有任何凭证,甚至是过期的凭证,可能看起来都不专业,并引起关注。 此外,还有一些无法撤销的秘密(例如数据库记录),或者没有人可以保证的凭证被正确地撤销(例如,可以在许多不同地方使用的SSH密钥)。 因此,我们将逐步介绍如何删除其历史记录,请注意,这不是一项琐碎的任务,建议您寻求高级开发人员的指导。

一个。 删除您的存储库或将其设为私有

通常,先花点时间买个好主意:导航到GitHub存储库,然后单击“ 设置 ”。

然后,一直到“危险区域”,然后单击“ 设为私有 ”以对公众隐藏存储库。

注意:如果您希望进行备份,请单击“删除此存储库”。 您稍后将其推回。

您可以稍后将存储库推回。

b。 重写git历史

Warning️警告在进入之前,应注意重写.git历史记录不是一件容易的事,尤其是在有很多开发人员为您的存储库做贡献的情况下。 您将不得不完全删除存储库,然后将清理后的版本推回,或者git push --force到您的初始存储库。 在这两种情况下,您都将完全中断其他贡献者的工作流程。

我们将使用著名的BFG Repo-Cleaner 。

BFG是git-filter-branch的更简单,更快(10-720x更快)的替代品,用于清除Git存储库中的不良数据

假设您提交了一个敏感文件config.py ,其中包含一个秘密密钥。

一世。 确保已安装Java。

ii。 克隆您的存储库

git clone https: //github.com/YOUR-USER-NAME/YOUR-REPOSITORY.git

iii。 删除敏感文件

当前分支上的最新提交受BFG保护,因此您必须确保它是干净的。 删除“ config.py”并提交更改

与当前分支不同的分支不受保护,因此,如果在其他分支上可以找到“ config.py”,BFG将清除该分支。

git commit -m "clean commit"

iv。 运行BFG

从他们的网站下载最新版本的BFG,将Java文件移到您的存储库中并运行以下命令

注意:将bfg-VERSION替换为最新版本(bfg-1.13.0)

java -jar bfg-VERSION .jar YOUR-REPOSITORY/ .git --delete-files "config.py"

vi。 查看您的历史记录

您可以使用log-p命令显示每次提交中引入的差异(称为“补丁”)。 如果浏览不同的分支,应该会看到一切都很好。

git log - p 

七。 向后推存储库

创建一个新的存储库并将其推回。 确保每个人都删除了旧克隆并正在使用您的新版本。

你知道吗?

即使git通过拒绝非快进推送请求阻止您覆盖中央存储库的历史记录,您仍然可以使用--force标志来推送更改。 这将迫使您的远程分支与您的本地分支相匹配。 但是请小心,这是一个危险的命令!

3.检查您的访问日志!

这非常重要,具体取决于泄漏的密钥。 有时,一个访问密钥泄漏会产生多米诺骨牌效应,并导致暴露新的机密。 例如,对Slack的访问密钥可能会给演员带来不好的访问权限,使他们无法访问包含新凭据和访问代码的消息,因此对于确保没有可疑数据非常重要!

检查访问日志确实取决于泄漏的凭据的类型。 例如,AWS日志有时会集中到Cloudwatch中。 Slack具有专用的API端点,该端点允许访问审核日志。 这可能是您与SRE或Application Security团队保持紧密联系以确保一切正常的好时机!

现在怎么办?

因此,该凭证已被撤消,存储库历史记录已被清除。 我现在该怎么办? 现在您已经感到恐惧,现在是开始实施一些良好做法的好时机。

1.获得GitGuardian的保护

GitGuardian是一个好人服务,可实时扫描公共存储库中的每个GitHub提交以查找泄漏。

注册GitGuardian

2.查看API最佳做法

为了将来更好地保护您的秘密,我们建议您阅读我们的API最佳做法指南 。 它提供了许多有用的提示,以确保您将来不会意外泄露机密。

作者注意:这篇文章最初写在 GitGuardian的博客上

From: https://hackernoon.com/exposing-secrets-on-github-what-to-do-after-leaking-credentials-and-api-keys-58dy3yqp

这篇关于在GitHub上公开秘密:泄露凭证和API密钥后该怎么办的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572169

相关文章

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Github连接方式

打开Linux中git的配置文件: /home/username/git/MyRepository/.git/config [core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true[remote "origin"]fetch = +refs/heads/*:refs/remot

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

GitHub每周最火火火项目(9.2-9.8)

项目名称:polarsource / polar 项目介绍:polar 是一个开源项目,它是 Lemon Squeezy 的替代方案,并且具有更具优势的价格。该项目的目标是为开发者提供一种更好的选择,让他们能够在追求自己的热情和兴趣的同时,通过编码获得相应的报酬。通过使用 polar,开发者可以享受到更实惠的价格,同时也能够更自由地发挥自己的创造力和技能。 项目地址:https://github.

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止