记一次发现小宇宙 iOS 版的跳转注入漏洞

漏洞风险:可以在其他应用借助小宇宙端内跳转任何网页。

此文章发布前,小宇宙已经修复了这个问题,所以你们可能不能复现这个问题了。

先看漏洞效果,这个漏洞的问题是你可以在小宇宙里跳转到任何网站,甚至是 PornHub。不过这个 Bug 不重要,重要的是发现 Bug 的过程

漏洞效果

0. 背景

在一天晚上,我在和朋友聊小宇宙的 URL Scheme,想要做个功能,可以实现一键打开小宇宙的节目页面。但卡在我面前的是,我不知道小宇宙的 URL Scheme 到底是什么。于是便开始了我的 Hack 之旅,也就找到了小宇宙的这个安全漏洞。

1. 找到小宇宙的 URL Scheme

由于 Scheme 是在 App 中定义的,所以当我想到要找 Scheme 之后,第一反应的是去拿 iOS App 的 Info.plist(因为 iOS 是将 Scheme 定义在 info.plist 当中)。

过去需要通过 IPA 备份、越狱等方式来获取到这个文件,不过得益于 M 系列支持在 macOS 上运行的原因,现在 IPA 的获得变得非常的简单。 先在 App Store 安装小宇宙,并在「应用程序」中找到小宇宙。

image

然后右键点击小宇宙,点击「显示包内容」

image

然后看到这样的内容,WrappedBundle 是一个假的应用程序,所以继续点击 Wrapper 往里跳转。

image

然后会发现里面还有一个 Podcast 应用,这个才是真正的小宇宙的 IPA 包。然后继续点击「显示包内容」

image

在包内容当中可以看到 info.plist 文件,使用 Xcode 或者 VSCode 打开 info.plist 文件。

image

info.plist 文件中,搜索 CFBundleURLSchemes ,找到了小宇宙的 URL Scheme(里面有很多个,但很多都是其他应用的,试一下就可以发现):cosmos://

image

2. 找到 URL Scheme 能够打开的页面

找到了 URL Scheme,只能通过 cosmos:// 打开应用首页,无法满足我的需求,于是开始继续寻找可能的 URL Scheme 。一般来说,这个时候就只能继续反编译 IPA 包或者 APK 包了。不过对于我来说,这些不是一个好的选项(成本太高)。

然后想到,小宇宙的网页似乎是提供了打开客户端的能力,所以可以从网页版找到突破口。通过简单的搜索,果然让我在网页前端找到了突破口。找到了 7 个 Scheme 。

image

当然,中间存在一些重复的 Scheme。所以最终梳理出来的 Scheme URL:

  • cosmos://page.cos/discover:打开发现页
  • cosmos://page.cos/shownotes/EPISODE_ID:打开节目的 Shownote 页面
  • cosmos://page.cos/episode/EPISODE_ID:打开节目的详情页
  • cosmos://page.cos/webView?url=:意义不明,看起来像是打开一个特定的 URL
  • cosmos://page.cos/web?url=:意义不明,看起来像是打开一个特定的 URL

3. 发现问题 URL Scheme

前面的三个很正常,但后面的两个带 URL 的引起我的注意 —— as a Hacker,你知道的,任何一个可能的输入框都可能成为我们的注入点,于是乎,我就构建了一个链接,来打开我的 Blog

cosmos://page.cos/web?url=https%3A%2F%2Fwww.ixiqin.com
Code language: JavaScript (javascript)

将这个链接使用 Safari 打开,就会自动唤起小宇宙,并打开我的播客。

至此,我发现了小宇宙这个跳转注入漏洞,并快速将其反馈给小宇宙官方同学。

复盘:如何规避这样的问题

在这个 Case 当中,小宇宙因为没有设置 URL 跳转的白名单,导致实际上出现了跳转恶意网站的风险。理论上,作为应用提供商,出于安全合规的视角,最好是控制 URL 跳转的域名和空间,避免被恶意滥用。

或者也可以参考我们现在见到的很多网站,在外部跳转时加一个风险提醒

如果在这个 Case 当中,小宇宙在一开始就限制了可以打开有限域名,那也不会出现如今我这次的漏洞问题。

这个问题风险大么?

取决于如何定义和如何使用。如果只是跳转一些常规网站,自然是风险不大的。但如果不受限制的,比如跳转到一些诈骗网站,可能风险就是大的。

white and brown book on brown woven surface

看不同的种类的小说,理解不同的人生

作为一个网文爱好者,近些年来,我看了不少的小说,最近在看一本医生为主人公和一本刑警为主人公的小说。

写这篇文章的意图是希望鼓励我的博客的读者们,试着去读一读小说(网文是其中的一种),通过小说,来感知不同的人的不同生活,从而收获对于世界的新的理解。


作为一个爱读书的人,我每年看的书都在 10 本以上,其中一小部分是各项工具书,因为工作 / 业务需要读的书,而更多的则是我看的小说。

看这些小说算是我工作之余的放松途径,在写了一天代码之后,我会开始看小说来放松。同时,看网文这种相对简单粗暴、挑逗人的多巴胺的小说,可以让我不用太烧脑(看推理小说,感觉自己脑子要烧了)。

不同的小说因为其作者的背景,或多或少会带上一些职业的特性,对于我这样的局外人,已经足够管中窥豹了。

如果你对于别人的生活感兴趣,那么我也推荐你试着去通过看小说来理解别人的生活。

当然,其实不只是小说,电影也是一样的。本质上是这些内容当中充满了故事。

举个例子,我看《银河写手》,知道了编剧的生活和日常,也知道了《救猫咪》和《节拍器》。

终我一生,我可能无法去体验所有的职业,通过这些片段,也能让我掀开其他职业的帘子,去尝试了解不同人的人生。

如何从工商银行银行个人网银下载借记卡交易记录

首先,你需要开通你的工商银行网上银行,如果没有开通,则需要前往线下网点开通后,再来阅读本文。

具体操作如下:

  1. 访问工商银行网上银行,使用密码登录或者扫码登录
  2. 登录后,访问 — 首页 — 我的账户,进入到账户详情页面,并选择要查询的账户
  3. 在明细页跳转至账单查询,查询数据并下载

1. 登录工商银行网上银行

访问 工商银行网上银行, 登录,并进入其中。

2. 找到账户

点击首页 — 我的账户 — 卡包,找到你的账户,并点击明细按钮,跳转到明细页面。

r9b5r2

604aes

3. 选择账户和对应的月份,下载明细

在明细页面,可以选择时间范围,并选择下方的下载数据明细的格式,就可以点击下载,来完成数据下载的动作。

j8g0ca

black and white penguin toy

Github Stars 没啥用,但也不是没啥用

我之前曾经在 Twitter 上说过,开源的本质是一个 Reputation(声誉)的游戏,你拥有越多的声誉,在和开源社区的协作就会越容易,大家就会愈发的相信你,与你共同协作。

而这个 Reputation 的一个具象的表现 ,便是你在 Github 上拿到的 Star 或 Follower。我们普遍会认为,Star 更多的人、Follow 更多的人,是更有价值的 —— 你的 Follower / Star 更多,至少证明了你在开源这个领域的成绩。

1743138443 image
我的 Github Profile 页面

坦诚的讲,我很以自己的 Star 为荣,超过 1W Star 和 1.4k 的 Follower,至少证明了我在开源上曾经做过一些事情。这些 Star & Project 可以证明我的能力,证明我能够做一些事情。这些信息帮助我更好的求职。

但另一方面,我也认为,star 本身的意义并没有那么大 —— 特别是你把它当成 KPI 之后。Star 多只是看起来很唬人,但可能一个项目已经运行了 10 年,只要这个项目还在持续更新,持续迭代,持续有人用,拿到一个高 Star 是一个很正常的事情,一切都是时间的力量。

作为一个开源人,我认为大家应该努力的追求 Star / Follow, 但也请记得,这些都是你评估自己的工具,请不要本末倒置,把 Star 当成目标,你的目标是获得更多社区/同行的认可,而不是获得一个虚拟的数字,单纯的数字并不能给你带来认可

美国之旅:算账

终于,到了最后一篇 —— 鸽了这么久,我终于有空来梳理这些账目了。

首先,这 15 天,我总共开支花了 77615.22 元(含机票),平均下来每天 740 刀;

不过,如果下钻下来看,我的开支大头出现在交通运输(机票 & 租车)和娱乐上。

image

交通大类

交通大类中,我们两个人的机票花了 17000 元左右,平均下来单人往返机票 8500;

image

然后租车也花了不少的成本,花了 7000 + ,也接近于单程的机票。不过我觉得不后悔,在美国开车还是体验了很多坐车、打车无法体验到的东西。

娱乐大类

娱乐大类里,因为包含了酒店的住宿,所以也不少,花费了 16000 元,平均下来每天 150 刀左右;还行,处在我能接受的范围内。

image

其他当中,迪士尼、环球影城的票,就花了接近 5000 元;还有一些零零散散的门票,加起来一共近 8000 元。

餐饮

餐饮方面也是我们有比较大的开支的。不过这部分因为「来都来了」,我们在吃上也没有太省钱,该怎么吃就怎么吃了,还好。符合预期。

image

总结

总的来说 —— 一下花了好多好多钱。。。肉疼。。。天津 4 平米房子了。。。不过,如果让我选,我还是选择 —— 总是要出去见一下真实的世界的。

关于投资的一些迷思

曾经的我,热衷于买「小票」:那些价格不贵的资产。比如 ETH 和 BTC ,我会选择买 ETH,而非 BTC,原因就是 ETH 的价格更低,我同样的资金投入,可以持有更多的「小票」。

我天真的以为,小票增长更多,我持有的更多,所以也可以获得更多的增值。

但随着我投资的深入,我会意识到,上面的想法是错的。

你的资产涨多少,和选择「大票」还是「小票」其实没有什么太大的关系,重要的不是票的价格,而是票的涨幅。同样的价格,只要可以买入,那么选择应该是成长性更强的票 —— 即使这个票你只能买一张,但依然是划得来的。

(比如我只买了一股巴菲特老爷子的 BRK.B,但就是这一张票,就涨了 60%,反倒是我投资声网的,没有涨这么多。)

你买小票时,只有一个原因 —— 你手上的钱不足以买入哪怕一张成长性更好的大票。所以不得已,只能选择更小的票,来确保你至少买入,而不是持有现金。

从这个视角来看, BTC/ETH 就好于美股 好于 A 股。

  • BTC 支持小数点后八位
  • 美股支持买入 1 股或碎股(通过盈透证券)
  • A 股必须买入一手(100 股)

这是一个自学最好的时代

最近我在研究保险业和保险学,所以在找各种各样的资料来看,学习保险,在这个过程中,我发现了大量的学习资料,而这些资料,足以让我成为一个超出平均水平的保险行业从业者。

接下来来看看我找到的学习资料:

问 AI

得益于 LLM 技术的快速发展,现在任何问题你都可以问一嘴 AI,并基于 AI 给出的结果,穿针引线, 找到自己想要学习的东西。

image

大学专业设计

在进入一个新的领域时,容易走错的是在你脑海中还没有这件事的大体概况的基础上,就大力出奇迹,投入大量的时间和精力去做学习。因此,大学的专业设计和其说明的主要课程,可以成为你构建自己学习路径的重要参考。

image

看 B 站

之前大家常调侃,上的「B 站大学」,对于已经离开学校的人来说,从 B 站上找到你感兴趣的课程概率极高,因此你可以非常方便的在上面学习相关的知识。

image

看慕课

中国大学慕课是网易有道与高教社推出的在线课程平台,里面有大量的大学课程,当你想要学习的时候,你可以方便的从中找到合适的内容, 从而来学习需要的内容。

image

学堂在线则是清华大学发起的在线慕课平台,也可以方便你去获得优质的教育资源。

image

当然,还有提供海外课程内容的网易公开课。

image

总结

实际上,作为一个上过大学的人,我知道大部分大学生在大学期间的学习状态,而对于我们每个人来说,如果你真的想要去学习一些东西,那么目前互联网上提供的资源是绰绰有余的。

剩下唯一的问题就是 —— 你到底想学习什么?

美国之旅:在加州穿什么?

我是在 2025 年 1 月末前往加州的,此时正是加州的冬季(雨季),也是旅游的淡季。不过,也提供一些信息给大家作为参考。如果你未来要在冬季前往加州,可以考虑参考这个穿衣的建议。

由于加州范围整体较大,而我去的主要是旧金山、硅谷、一号公路沿线、洛杉矶,所以如果你去这些地方,可以参考。

气温 & 降水

整个加州的气候主要都是地中海气候,其特色是夏季干燥炎热,冬季温和多雨。但整体的气温不会特别的低 —— 你也看到硅谷、洛杉矶、旧金山并没有平均气温低于 0 度的。这样对于我们旅行的人来说是个好消息 —— 可以不同带特别厚的衣服,往往你只需要一到两件外套 + 一些内衬就可以度过一个愉快的假期了

当然,如果你是冬季前往,可能需要考虑的还有,记得带伞,因为可能会遇到下雨的情况,如果你要逛一些景点,带一把伞会让你更加的自如游览清单。

image
旧金山一年温度 & 降雨量
image
硅谷一年温度 & 降雨量
image
洛杉矶一年温度 & 降雨量

服装选择

虽然温度整体可控,但也需要考虑到,加州的温度低温还是比较低的,在早晚可能会偏冷,所以需要有一个相对偏厚的外套。

冬季可以选择薄羽绒服;夏季可能是大卫衣;

内衬则可以选择 T-Shirt,这样当你热了的时候,可以快速更换一套比较凉爽的服饰。

鞋子方面,如果你要去海边游玩,则需要带一些可以下水的拖鞋,同时在车上备水,以便于从海边出来时,可以冲一下脚就前往下一个地方。

习得送礼的技能

我小时候生活的环境当中,并没有太多的送礼环节,所以我并没有习得送礼 & 收礼的技能(这里的送礼和收礼指的是朋友之间的礼物)。

随着我的堂姐、表姐们开始有了孩子,我开始慢慢习得了给孩子们送礼品的技能,送一些我自己未来会给我的孩子买的产品,帮助他们开拓眼界。

在这次结婚时,因为和同龄的朋友们也有一些互动,所以他们开始给我送礼,也间接让我开始学习关于「送礼、收礼」的处理方式,比如你拿到礼物时应该拆开,并对朋友送的礼物表达赞赏,从而让对方感受到自己被重视。

当然,我觉得这里我做的还不够好,我还在笨拙的学习如何送礼、如何收礼,但,慢慢来,都会变好的。如果你收到了我的礼物,可以放心的收下,并教会我更多关于礼物的礼仪!