Posts for: #Security

Brave Origin 盲签名方案

Brave 6 月上线了 Origin,59.99 美元买断。Leo、News、Rewards、VPN、Wallet、Talk、Tor、Speedreader、Web Discovery 全部从二进制里编译掉,只留 Shields 和 Chromium 内核。Linux 免费。

我买了一个。翻文档的时候看到激活这一步的做法:Brave 的服务器没办法知道是谁在用这份授权。

它用的是盲签名。

常规做法是查表

付费解锁都要回答一个问题:这台设备凭什么证明自己付过钱。

一般是账号体系。你登录,服务器查表,这个 user_id 买过,放行。表里就记着某某邮箱在用 Origin、今天启动了几次。

盲签名把这张表去掉了。名字里的「盲」就是服务器闭着眼睛签——它签的时候不知道自己在签什么,签完也认不出来。

用数字走一遍

服务器手里有个只有它知道的私章,就当它是「乘以 7」。

我在自己电脑上随手生成一个 token,是 3。我要拿到「服务器给 3 盖过章」的证据,又不想让它知道 3 是多少。

  • 我再挑一个随机数 5,把 3 乘上去:3 × 5 = 15。把 15 发过去
  • 服务器盖章:15 × 7 = 105。把 105 还给我
  • 我把 5 除掉:105 ÷ 5 = 21。21 正好是 3 × 7

现在我手上有一对数 (3, 21)。以后要用 premium 功能,把这两个数交出去,服务器算一下 3 × 7 是不是 21,对上了就放行。

[阅读全文]

顺着一封 DMARC 报告,学一下邮件认证三件套

slax.com 的客服邮箱每天会收到几封 DMARC Aggregate Report,发件人是 [email protected],附件是几百字节的 zip,里面是 XML。我之前从来不开。今天问了 Nix 一下这是什么,顺着学了一遍邮件认证三件套:SPF、DKIM、DMARC。

SPF

SPF(Sender Policy Framework)配在 DNS 里,告诉收件方"这些 IP 才允许替我发邮件"。比如域名用飞书邮箱,SPF 记录会写:

v=spf1 +include:_netblocks.m.feishu.cn -all

意思是飞书的发送服务器 IP 都允许,其他一律拒绝。

SPF 的弱点是不抗转发。客户把我的邮件转发到 Gmail 时,源 IP 变成转发服务器,原来的 SPF 检查就失败了。

DKIM

DKIM(DomainKeys Identified Mail)给每封外发邮件加密签名。私钥在邮件服务器那边,公钥发布在 DNS 里。收件方拿公钥验签,确认这封邮件是我发的、内容没被篡改。

签名跟着邮件走,被转发也不掉。所以 SPF 失败的转发场景,DKIM 还能过。

DKIM 的 selector 名因服务商而异,飞书是 feishu 加一串时间戳,比如 feishu2605101150._domainkey.yourdomain.com。要查 DKIM 是否配置,得知道精确的 selector 名。我一开始拿常见的 s1、default、larksuite 去 dig,全部空,以为是没配。后来登录飞书后台才看到真实的 selector,DKIM 其实早就启用了。

DMARC

DMARC(Domain-based Message Authentication, Reporting & Conformance)是上面两件的协调层。它告诉收件方"如果 SPF 和 DKIM 都对不上我可见的 From: 地址,按这个策略处理(none / quarantine / reject),并把每天的统计发到这里"。

[阅读全文]

一个 AMP 报警,挖出一个子域名接管

AMP(Accelerated Mobile Pages)是 Google 2015 年推的移动端加速网页框架,强制简化 HTML 和 JS、内容托管在 Google CDN,目的是让手机搜索结果秒开。后来普及度一般,2021 年 Google 把它从移动搜索排名加权里移除,现在基本是历史遗产,但 Search Console 还会扫描和报警。

今天收到 Google Search Console 的一封邮件:

AMP issues detected in wulujia.com

To the owner of wulujia.com:

Search Console has identified that your site is affected by 1 AMP issue(s). The following issues were found on your site.

Top non-critical issues

AMP page domain mismatch

Non-critical issues are suggestions for improvement, but don’t prevent the page or feature from appearing on Google. Some of these issues could be reclassified as critical in the future, and critical issues can affect your site’s appearance on Search.

[阅读全文]

Bitwarden CLI npm 包被投毒,AI 编码工具凭证成新目标

The Hacker News 报道了一起 npm 供应链攻击:Bitwarden CLI 的 npm 包(@bitwarden/cli)2026.4.0 版本被植入恶意代码,藏在包内的 bw1.js 文件里。

感染窗口从 4 月 22 日 ET 时间下午 5:57 到 7:30,约 1.5 小时,估计 334 次下载。被怀疑是更大规模 Checkmarx 供应链攻击的一部分,归因到 “Shai-Hulud: The Third Coming” 这一波。

攻击路径

攻击者拿下了 Bitwarden CI/CD 流水线里一个被入侵的 GitHub Action(checkmarx/ast-github-action),通过 preinstall 钩子在用户 npm install 时执行恶意代码。

据安全研究员 Adnan Khan 说,这可能是首次使用 npm Trusted Publishing 的包遭到入侵。

恶意代码偷什么

  • 本地开发凭证:GitHub / npm tokens、.ssh 密钥、.env 文件、shell 历史
  • 云端密钥:GitHub Actions 环境变量、CI/CD secrets、多云凭证
  • AI 编码工具配置:Claude、Kiro、Cursor、Codex CLI、Aider 的认证配置
  • 自传播:偷到 GitHub token 后注入恶意 Actions workflow,用偷到的 npm 凭证向下游包发布恶意版本,蠕虫式扩散
  • 数据外泄走 AES-256-GCM 加密发到伪装域名 audit.checkmarx[.]cx,失败后以 GitHub commit 作为 fallback

有一个细节:如果系统 locale 是俄罗斯,恶意代码自动退出。这一行为与原始 Checkmarx 攻击不一致。

[阅读全文]

普通

最近聊天时,一位出色的年轻人说:我觉得我很普通。Ta 有点难过。Ta 的理由是:身边的朋友都很厉害。Ta 总能看到自己不够好的地方,所以虽然常有人夸,自己并不信。


道理我不太会讲,就先讲自己的事。

多年前,我去安全公司绿盟上班,技术分享氛围很好。研究部的行家们比如 yuange、w3、小四等人经常将他们的心得详细写下,发到邮件列表。文科出身的我,此前因为兴趣,认真啃了一段时间的文章和书籍,学了些脚本小子的入门手法,一开始还自以为是有些天赋的,后来发现,糟糕,小四爱记录,写了好多东西,可是他写的东西,我看着云里雾里的。

再然后,听说了个故事(没跟当事人确认过,发完再确认哈哈),故事里,在例会的时候,w3 会跟研究部的几位同仁交代:yuange 说的,你帮着记一记,等下开完会,大家再对一下。

原因是:yuange 有时候说的,往往有些“言外之意“,几个人凑一起理解,有可能才能搞清楚。

想想我就沮丧了—我这天赋,也太普通了。

再说个昨天书上看到抄下的故事:

杰夫是怀揣着研究物理的目标进入普林斯顿大学的。

一天,他和室友不管多么努力都无法解决一个棘手的偏微分方程,两人来到另一位同学的宿舍求助。这个同学盯着方程看了一会儿,然后把答案给了他们。这个要用三页代数详细阐释的问题,他竟然用心算解决了。

那一刻他意识到,自己永远不会成为伟大的理论物理学家。

这位资质普通的家伙,是 amazon 的创始人。

很多人都觉得自己普通,但这不重要。

我觉得重要的是:做自己喜欢的事。如果一直喜欢,就一直做。长期做一件事,十年二十年后,自然能超过 99% 的人。不是因为天赋,是因为大部分人坚持不了那么久。

黑客思维

许多创业者在决定创业的那一刻,第一个问题往往是:无论什么领域,无论自己想做什么产品,前方路上,好像都挡着强大的竞争对手。

所有的大公司,好像都践行着“走自己的路,让别人无路可走”,并没有留出多少空间给创业者。

看起来,确实如此。但如果问:50 年后,是否会有新的、以我们意想不到的姿态突破的公司,出现甚至取代目前的巨无霸?多数人的回答都会是肯定的。那么,未来的大公司,将从哪里长出来?

分形效应

Paul graham 在 How to do great work 里写:

Once you’ve found something you’re excessively interested in, the next step is to learn enough about it to get you to one of the frontiers of knowledge. Knowledge expands fractally, and from a distance its edges look smooth, but once you learn enough to get close to one, they turn out to be full of gaps.

[阅读全文]

你的个人信息可能已经泄露了,国家级身份认证能解决这个问题吗?

前几天,公安部和国家互联网信息办公室联合发布了《国家网络身份认证公共服务管理办法(征求意见稿)》。

由这个设计,我想到了口碑还不错的 Singpass。

Singpass 是新加坡居民的数字身份,可以让用户方便、安全地在线上线下使用政府和私营部门的服务。

例如,可以用来登录新加坡所有政府网站的个人服务,如查询CPF账户余额、缴纳个人所得税、申请PR、担保签证等,还具备电子签名、人脸识别认证、接收政府通知等功能。

且私营企业也可以通过 Singpass API 将 Singpass 的身份认证功能集成到自己的系统中。用户通过 Singpass 验证后,可以无缝访问企业在线服务、验证用户真实身份、无纸化电子签名等,还可以在征得用户同意后,调取政府数据库中的个人信息,简化在线交易流程。

–

我举一个企业实际遇到的困境,来说明国家网络身份认证公共服务的价值。

  1. 根据法律,中国居民上网需要实名制。因此提供网络服务的企业,必须采集用户的实名信息。

  2. 根据法律,企业不能侵犯用户隐私。因此采集的实名信息,必须妥善保存。如果泄漏——可能是黑客攻击,可能是内控不当,当然也可能是企业自己利欲熏心利用这些信息牟利,需要承担法律责任。

在我们做移动互联网的初期,想法很朴素:

我们只做工具,因此用户就通过微信登录就好,我们不需要任何资料——连密码都不用。不存密码、身份证、手机号等一切信息,没有就是最安全的。

但很快就被现实教育了,于是只能在法律框架下尽可能最小化地索取数据和权限。然后战战兢兢地运营着——毕竟怀璧其罪,系统里存着一些用户信息,即便是加密的,也不敢出问题。

目前的现状是,随便一个犄角旮旯的小网站,只要想用,我就得提供身份证和手机。

如果对方是大企业,说不定还得手持身份证,并且配合着张嘴闭眼。

几年下来,其实有大量网站拥有了我的个人信息。这些网站背后的公司,当然会有倒闭的、被卖的。那么,我的个人信息就有可能被“再利用”。

现在 AI 的图片、语音、视频生成能力都颇强了,说不定什么时候,我的 AI 分身就被上线运营了。

顺便说一句,这个标题是 Claude 取的。

蹭 Wi-Fi 会不会导致银行密码被盗

有篇文章,对大众科普“只要使用银行和支付宝官方 App,即使使用公共 Wi-Fi 也是安全的”。这两天,有两位技术大牛针对“蹭 WiFi 会不会导致银行密码被盗”起了争执。

袁哥认为那篇科普很糟糕,他的观点是:不安全的 Wi-Fi 环境下,例如你登录的是黑客设置的 Wi-Fi,上网过程中,有很多方法能不知不觉地劫持、攻击你,导致严重后果。

云风则认为那篇科普很好,质疑袁哥:在银行系统没有安全漏洞时,虚假 Wi-Fi 如何窃取用户密码?如果想科普蹭免费 wifi 增加了设备植入后门的风险,尽可以举个简单的例子说明如何办到的。某个特定系统有怎样一个漏洞,这个漏洞如何让攻击者植入的后门,怎样的设备会没有修补这个漏洞。

我技术不好,而且这二十年来的兴趣都在产品上,对技术本没有发言权,但好在这是科普,作为被科普的对象,还是可以说几句的。

先说几个事实:

  1. 类似 wifi-pineapple 这样的设备(https://shop.hak5.org/products/wifi-pineapple)很容易获取和部署。其核心功能是中间人攻击(Man-in-the-Middle, MitM),通过模拟信号强的无线接入点诱使附近的无线设备连接。

  2. 我草草搜了一下,NSA 在 2021 年发布的公共场所无线设备保护指南(https://t.co/n4w6u7KxuO)里提到“通过公共 Wi-Fi 发送的数据——尤其是不需要密码即可访问的开放公共 Wi-Fi——容易被盗取或操纵。即使公共 Wi-Fi 网络需要密码,它也可能不对经过的流量进行加密。如果 Wi-Fi 网络确实对数据进行了加密,恶意行为者如果知道预共享密钥,也能够解密(在不安全的网络通信中窃听)。恶意行为者有时还可以迫使网络使用不安全的协议或过时的加密算法(降级到不安全的协议)。此外,恶意行为者还可以设置一个假的接入点,模仿附近预期的公共 Wi-Fi,这导致该行为者能够访问通过该网络发送的所有数据。未加密的网络流量或容易被解密的流量可以使用开源工具捕获,暴露敏感数据。这包括但不限于个人和公司的登录凭证(网络嗅探),这可能直接导致更多的安全问题。”

再说一下部分观察:

  1. 我见过很多本应安全的设计,配合上或者错误的配置,或者弱智的操作者,或者滞后的运维,或者无知的用户,进而导致的安全事件。有些人见过一两家银行的专业,就误以为所有银行系统固若金汤、运维人员专业不出错、软硬件供应商服务完美到位、用户聪明机警。这很理想但不可能。因此,一个人现在使用一家银行安全,不代表全部人全部银行,全部时候安全。

  2. 我见过的安全设计、系统管理,都秉持最小化原则。比如:不需要的服务与端口不开。

最后说我的观点:

  1. 蹭 WiFi 有更大概率扩大被攻击面。一位专家,写科普文章告诉大家“只要使用银行和支付宝官方 App,即使使用公共 Wi-Fi 也是安全的”,不是负责任的行为。

  2. 现在的移动流量普遍是充足的,价格也算平易近人,普通老百姓,没啥必要非得连公共 Wi-Fi。

所以,我自己的使用习惯是:一般情况下,哪怕出差、住酒店,我用电脑,上网也是连自己的手机热点。因为我不太愿意无谓地增加被入侵的机率。最小化,最安全。

–

关于 xz backdoor 的观点

一位自称 Jia Tan 的开发者,花了三年时间,取得开源软件 xz 社区信任,谨慎地植入了一个后门,可以让攻击者无需账号也能通过 sshd 进入系统。如果成功,大多数 Linux 系统(也就是大多数公司的服务器使用的操作系统)都会受到影响。

最后功亏一篑——因为程序没写好,系统资源占用过高,被一位认真的工程师分析并发现。

这几天网上有很多技术分析(我看不懂)和讨论,说说我的观点。

  1. 这次事件,其实正好证明了开源界常说的:只要有足够的眼睛关注,任何漏洞都无处藏身。

  2. 任何软件,而不仅仅是开源软件,会受到这样的攻击。商业产品中被发现后门的事件,历史上发生过不止一次。

  3. 未来的 AI 或许有机会帮助检查出类似构造巧妙的后门和漏洞。

  4. 开发者们可能会面临一小波信任危机——要取得社区的信任,以后或许会更加艰难一些。而中国开发者(虽然 Jia Tan 未必——甚至大概率不来自中国,但这个 ID 的设计,就会带来不好的影响)会面临更多挑战。

  5. 对于信任问题,或许一个解决办法是付费。具体实现是:要提交代码,先做一笔小额支付验证身份,认证完成后可以立即返还。后续代码质量高,项目方甚至可以将收到的捐赠款项分配给贡献者。在知识星球里,通过付费,我们减少了数据量、噪音,提高了服务质量。在开源领域,或许有机会通过付费,借助真实世界里对金融领域的严谨认证来保障信任。

  6. 对这类攻击,普通用户其实没什么好应对的,要我说,“用小众产品”就能避开很多攻击。

  7. 要是真的很在意,那我有些朋友有些古怪习惯,比如:只在虚拟机里访问网络。比如:用极“老旧”但是稳定的系统和版本。

–

旅行到不安全地区时的电子数据保护

和朋友吃饭聊天时,谈起了新闻里看到的一些事,如:电脑和手机被扣押并分析内容、疑似被拷问虚拟货币的存储信息等等。记录下聊天的部分内容,供在意隐私的人参考。

大家其实普遍的想法很简单:手机、iCloud 里有越来越多私密照片和视频、工作文件。甚至浏览器、1Password 等产品里,还存储了我们在互联网上的密码。

而这一切,通过指纹、面部识别,就能完整获取。

细思恐极……我们吃喝聊过程中的总结,其实也很简单:

1、使用苹果设备(Mac、iPhone、iPad)。

2、在旅行时,关闭 Face ID、Touch ID 等生物识别登录设备的权限——也就是说,不要通过指纹、面部识别登录设备。因为你需要假定,偷、抢你设备的人,可能会“软硬兼施”地通过生物识别,登录你的设备。

3、如果可以,避免携带存储敏感内容的设备出行。比如:有个“旅行 Apple ID”,出行前,切换登录到该 Apple ID——这样 iCloud 里存储的内容也都换了——等旅行之后,再做数据导出、同步。比如:准备一台 iPad 或者 Linux,用于出差使用。

当然,最后就是:隐私嘛,在人身安全受到威胁时,该给就给(以及,平时就少点秘密,或许也就……随他去了……)。

–