Posts for: #Security

顺着一封 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 名。我一开始拿常见的 s1defaultlarksuite 去 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.

[阅读全文]