我的域名在GitHub Pages上被滥用了
摘要
一位开发者发现,他的通配符DNS配置允许任何人通过GitHub Pages在他的域名子域名上托管内容,这凸显了GitHub CNAME解析中一个常见的安全疏忽。
<p><a href="https://lobste.rs/s/zsjasr/my_domain_got_abused_on_github_pages">评论</a></p>
查看缓存全文
缓存时间: 2026/05/19 14:42
# 我的域名在 GitHub Pages 上被滥用了
来源:https://meertens.dev/blog/github-enables-domain-abuse/
过去几周我在非洲旅行,几乎没有网络。某天,我收到一封来自 Google Search Console 的邮件,通知域名 `https://kafka.immersivepoints.com/` 有了新所有者。
Google Search Console 邮件:“`https://kafka.immersivepoints.com/` 的新所有者”
奇怪……我的 `immersivepoints.com` 域名只用于一个托管在 GitHub Pages 上的网站。这个网站是我用来展示 3D 和 VR 点云可视化工具的,实际上就是一个简单的静态 HTML 页面。这里绝对没有涉及任何 Kafka,更不用说我知道这个子域名的新所有者了。
等我重新连上正常网速后,我开始调查。首先检查的是我的 DNS 记录,但一开始看起来没什么异常。我只是将域名转发到了 GitHub 的服务器,并设置了一个通配符来捕获所有子页面(比如 `www.immersivepoints.com`)。
immersivepoints.com 的 DNS 记录,包含通配符 `*.immersivepoints.com` 指向 GitHub Pages
不幸的是,问题就出在这里……
GitHub Pages 是 GitHub 的一个很棒的功能!它允许你为你的 GitHub 账号、仓库或者一个想展示的酷项目托管一个静态网页!我经常用它来托管自己的网站和博客(包括你现在读到的这篇),它能让你快速轻松地向朋友展示项目,而无需折腾单独的服务器(甚至不用为没人用的项目支付托管费用)。
设置 GitHub Pages 很简单:在 DNS 记录中,你将你想托管的域名指向 GitHub 托管你页面的 IP 地址。在你的 GitHub 仓库中,配置你网站的 URL(这会在你的仓库中生成一个 CNAME 文件)。通常,你将一个域名指向这些 GitHub 服务器,我以为只有一个 GitHub 用户能“拥有”一个域名。也就是说:我以为只有我才能为 `*.immersivepoints.com` 创建子页面。看来我错了。
看起来,只要有任何仓库包含这个 CNAME 文件,GitHub 就会尝试解析任何域名。在这个案例中,有人设置了 `kafka.immersivepoints.com`。他们甚至是用一个私有 GitHub 仓库做的,这意味着我甚至无法举报那个特定的仓库。因为我的 DNS 设置将这个域名的所有内容都转发到了 GitHub,任何人都可以使用或滥用我的域名。
这个问题并不新鲜,我已经找到了一些工具(讽刺的是,它们也托管在 GitHub 上),可以帮助你找到可以被“窃取”的域名!例如,这个:https://github.com/EdOverflow/can-i-take-over-xyz。在我的案例中,我不知道我的域名被这样滥用了多久,如果不是上个月我为自己设置了 Google Search Console,我可能永远不会注意到。最后,我发现了更多来自 Google Search Console 的邮件——因为过去几周我一直在更新博客,所以完全错过了它们!
Gmail 收件箱显示多封 Google Search Console 邮件,涉及 immersivepoints.com 的 kafka、grandbet 和 hd 子域名的新所有者
我希望没有人成为那些托管在我域名上的、无疑是垃圾的老虎机诈骗网站的受害者。鉴于 Google 已经难以索引我的博客和页面,我猜没有多少人会发现这些子域名。
在 Kagi 搜索 `hd.immersivepoints.com`,结果显示“HDJITU - Pusat Permainan Games Online Indonesia”排名高于我实际的 ImmersivePoints VR 网站
这让我思考“这到底是谁的错”。我想我应该更好地设置我的 DNS 记录,但我对 DNS 记录了解不够(现在也不太懂)。我个人认为,GitHub 方面应该对域名所有权进行更好的验证,或者明确哪些用户被允许在其子域名上构建。例如,如果有两个不同的用户想使用同一个顶级域名,让第一个用户验证另一个用户是否被允许在那里托管 GitHub Pages。另一个选择是在 DNS 端为每个允许使用你子域名的 GitHub 用户添加一个特定的 TXT 记录。我不知道这种诈骗有多普遍,但任何一点帮助都是好的!
最后,我向 GitHub 举报了这些页面,并希望托管它们的账号被封禁!不过目前还没有收到任何回复。
## 后记
写完这篇博客后,我重新调查了 GitHub 自定义域名。我发现你可以为你的用户站点验证域名:https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages。我之前没注意到这个功能,而且正确设置属于你的账户设置,而不是仓库设置。我认为 GitHub 如果在仓库设置页面上发现你未验证域名,或者认为你的 DNS 配置不正确,应该显示一个更大的闪烁警告。
相似文章
GitHub:内部仓库遭到未授权访问
GitHub 发生安全事件,导致内部仓库遭未授权访问。
GitHub 遭受入侵
GitHub 披露了一起安全事件,一名员工的设备因恶意 VS Code 扩展程序遭到入侵,导致内部仓库被未授权访问。该公司已移除该扩展程序并启动了应急响应。
全面披露:通过VSCode漏洞一键窃取GitHub令牌
一名安全研究人员披露了VSCode webview中的一个严重漏洞,攻击者可通过诱骗用户点击链接来窃取具有完全访问权限的GitHub OAuth令牌。该漏洞影响github.dev网页编辑器。
GitHub确认因恶意VSCode扩展导致3800个仓库遭入侵
GitHub确认,一名员工安装的恶意VS Code扩展导致约3800个内部仓库被入侵。攻击者组织TeamPCP声称对此负责,并试图出售窃取的数据。
Megalodon:通过CI工作流大规模后门GitHub仓库
一项安全研究揭示了一种名为Megalodon的技术,通过利用CI工作流大规模后门GitHub仓库。