GitHub 的惊天秘密

本贴最后更新于 238 天前,其中的信息可能已经时异事殊

米小饭一脸焦虑地冲进了步子哥的办公室,手里紧紧攥着一张皱巴巴的纸条。

"步子哥,出大事了!"米小饭上气不接下气地说道。

步子哥慢悠悠地放下手中的咖啡杯,挑了挑眉毛:"怎么了?又有黑客入侵我们的系统了?"

米小饭摇了摇头:"比那更严重!我刚刚发现,我们在 GitHub 上删除的代码居然还能被别人访问到!这可是我们的商业机密啊!"

步子哥眉头一皱,立马坐直了身子:"什么?这怎么可能?详细说说。"

米小饭深吸一口气,开始解释:"是这样的,上周我在 GitHub 上 fork 了一个公共仓库,然后提交了一些我们公司的私密代码。后来觉得不妥,就把整个 fork 仓库删除了。但是今天,我无意中发现,那些我以为已经删除的代码,居然还能被别人访问到!"

步子哥的表情变得严肃起来:"你确定吗?这可是个严重的安全问题。"

米小饭点点头:"我反复确认过了,绝对没错。而且,我还发现不只是删除的内容,就连我们的私有仓库里的一些数据,也可能被别人看到!"

步子哥站起身来,在办公室里来回踱步:"这事非同小可。如果属实,那么我们所有在 GitHub 上的操作都可能存在安全隐患。我们得好好调查一下。"

米小饭急切地问:"那我们该怎么办?要不要立即把所有代码从 GitHub 上撤下来?"

步子哥摆了摆手:"先别急。贸然行动可能会引起不必要的恐慌。我们得先弄清楚这到底是怎么回事。来,我们一起查一查。"

两人坐到电脑前,开始深入研究这个问题。步子哥熟练地在键盘上敲击着,打开了几个技术论坛和安全博客。

"有意思,"步子哥若有所思地说,"看来这个问题不是个例。这里有一篇 Truffle Security 的博客,详细描述了这个现象。他们称之为 CFOR 漏洞,全称是 Cross Fork Object Reference。"

米小饭凑近屏幕:"CFOR?那是什么意思?"

步子哥解释道:"简单来说,就是一个 fork 仓库可以访问另一个 fork 中的敏感数据,包括来自私有和已删除 fork 的数据。这个问题比我们想象的还要严重。"

米小饭倒吸一口凉气:"天哪,那岂不是说我们的所有代码都有可能被泄露?"

步子哥点点头:"确实如此。根据这篇博客,他们调查了一家大型 AI 公司的 3 个常被 fork 的公共仓库,轻松找到了 40 个有效的 API 密钥。这些密钥来自已经删除的 fork 仓库。"

米小饭惊讶地说:"这么容易就能找到敏感信息?那我们之前删除的那些代码..."

步子哥接着说:"很可能还存在于 GitHub 的某个角落。看来,GitHub 的存储机制比我们想象的要复杂得多。"

两人继续深入研究,发现问题远不止于此。步子哥解释道:"GitHub 将仓库和 fork 仓库储存在一个叫'仓库网络'的结构中。即使你删除了原始仓库,只要还有一个 fork 存在,那些数据就还在那里,而且可以被访问到。"

米小饭瞪大了眼睛:"这简直是噩梦啊!那我们之前做的那些私有开发..."

步子哥点点头:"是的,如果我们先在私有仓库中开发,然后将其公开,那么在私有阶段的所有提交记录都可能被公众看到。这正是很多公司和开发者常用的工作流程。"

米小饭急得直挠头:"那我们该怎么办?难道就没有办法保护我们的代码吗?"

步子哥沉思片刻,说道:"事实上,根据这篇博客,GitHub 官方回应说这是'故意设计的'。他们甚至提供了相关的说明文档。"

米小饭惊讶地说:"什么?他们承认了?那为什么不告诉用户呢?"

步子哥苦笑了一下:"这就是问题所在。大多数用户,包括我们在内,都认为私有和公共仓库是完全分离的,私有数据不会被公开访问。但实际情况并非如此。"

米小饭沮丧地说:"那我们岂不是束手无策了?"

步子哥摇摇头:"也不尽然。虽然这个问题很棘手,但我们还是有一些应对措施的。首先,我们要更加谨慎地管理我们的代码和敏感信息。其次,对于已经可能泄露的密钥和敏感数据,我们需要立即进行轮换。"

米小饭若有所思:"那我们是不是应该考虑使用其他的代码托管平台?"

步子哥说:"这是一个选择,但不是唯一的解决方案。更重要的是,我们需要提高整个团队的安全意识。从现在开始,我们要制定更严格的代码管理政策,仔细考虑每一次提交和每一个仓库的可见性设置。"

米小饭点点头:"明白了。那我们要不要向其他团队和公司发出警告?"

步子哥思考了一会儿:"好主意。我们可以写一篇技术博客,分享我们的发现和应对措施。这不仅能帮助其他开发者,也能提高我们在技术社区的影响力。"

就在这时,办公室的门被敲响了。是公司的 CTO。

"我听说你们发现了一个重大的安全问题?"CTO 一脸严肃地走了进来。

步子哥站起身来:"是的,我们刚刚发现 GitHub 上存在一个严重的安全隐患。"

接下来的一个小时里,步子哥和米小饭向 CTO 详细汇报了他们的发现。CTO 听完后,脸色变得凝重起来。

"这确实是个严重的问题,"CTO 说道,"我们需要立即采取行动。步子哥,我希望你能领导一个特别小组,专门处理这个问题。米小饭,你负责协助他。"

步子哥点点头:"没问题,我们会尽快制定一个全面的应对计划。"

米小饭也表示同意:"我们一定会尽快解决这个问题,保护公司的利益。"

CTO 满意地点点头:"很好。记住,在这个过程中,要保持冷静和理性。这不仅是一个挑战,也是一个机会,让我们能够提升公司的安全水平。"

送走 CTO 后,步子哥和米小饭相视一笑。

"看来我们有的忙了,"步子哥说。

米小饭笑着说:"是啊,不过我觉得这会是一次很棒的学习经历。"

步子哥拍了拍米小饭的肩膀:"没错,困难和机遇总是并存的。来吧,让我们开始工作吧。"

就这样,步子哥和米小饭开始了他们的新任务。在接下来的几周里,他们深入研究了 GitHub 的安全机制,制定了详细的代码管理策略,并向整个公司推广了新的安全最佳实践。

他们的努力不仅保护了公司的利益,还在技术社区引起了广泛的讨论。步子哥写的那篇技术博客被广泛转载,帮助许多其他公司和开发者提高了安全意识。

这个经历让步子哥和米小饭深刻认识到,在快速发展的技术世界中,安全问题往往隐藏在意想不到的地方。只有保持警惕,不断学习和适应,才能在这个充满挑战的环境中保护好自己和公司的利益。

最后,步子哥总结道:"记住,在软件开发中,没有什么是绝对安全的。我们能做的就是不断提高警惕,采取最佳实践,并随时准备应对新的挑战。这就是技术的魅力所在,也是我们作为开发者的责任所在。"

米小饭若有所思地点点头:"没错,这次经历让我明白了,安全不是一个人的事,而是整个团队,整个行业的共同责任。我们每个人都要为此付出努力。"

步子哥笑着说:"说得好。现在,让我们继续努力,为构建一个更安全的数字世界贡献我们的一份力量吧。"

就这样,步子哥和米小饭继续他们的工作,时刻警惕着潜在的安全威胁,同时也为能够为技术社区做出贡献而感到自豪。这次 GitHub 安全事件不仅让他们学到了宝贵的经验,也让他们更加坚定了追求技术创新和安全的决心。

(故事完)

  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 179 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 22 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 135 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1794 回帖 • 2 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 1 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 27 回帖 • 1 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 389 关注
  • 倾城之链
    23 引用 • 66 回帖 • 161 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 8 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    289 引用 • 4492 回帖 • 652 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 533 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    161 引用 • 306 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    183 引用 • 1011 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 350 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 809 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    170 引用 • 1529 回帖
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 166 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖