#30216·fastlane

[测试] 规范套件将凭据写入开发者的真实登录密钥链

作者: lacostej创建于 2026年9月12日更新于 2026年9月12日

发生了什么事?

运行 spec 套接字写入开发商真正的登录密钥链,然后将东西放在那里. 这不是将测试数据泄露到抓取位置;它是开发者保存自己证书的同一条键链。

普通套房运行后在机器上验证 :

$ 安全搜索-Internet-password - s"match https://GitHub.com/fastlane/fastlane/tree/master/certificates" (中文(简体) ).
0x00000007 <blob>=}' match https://GitHub.com/fastlane/fastlane/tree/master/certificates" (中文(简体) ).
"cdat" <时间date *..." "20260912101127Z\000"

那个时标是套房跑来,不是用快车的 还有三份证书,都来自`相配/相配/相配/相配/相配/相配/相配/相配/相配/相配':

iPhone发行:菲利克斯·克劳斯(439 BBM9367)
苹果 iPhone OS 提供配置文件签名
测试效果

为什么它到达真正的键链

二道相别.

** Passwords.** ' match/ spec/change password spec.rb:7' 运行了"Match:ChangePassword.update"的存储被假造但"被复制:OpenSSL"离开真实. `Match/lib/match/change password.rb:34-35'然后打电话给:

鲁比 加密。 clear password 加密. store password(新接字)


达到“匹配/lib/匹配/加密/opensl.rb:70,75”:

鲁比
安全性: InternetPassword.add(server name(self.keychain name),","密码)
安全性: InternetPassword. delete( 服务器: 服务器 name( self. keychain name)) 安全性:

安全'宝石使用安全加网-密码.'和安全去除-网络-密码.',其中没有键链参数**(安全-0.1.5/lib/security/password.rb:99,107'),因此,无论`键链-名'怎么说,两者都对会议“默认”键链采取行动。

** 证书。 ** " fastlane-core/lib/fastlane-core/keychain-importer.rb:24 " 运行 " 安全进口 " , " fastlane-core/lib/fastlane-core/profile.rb:117,119 " 运行 " 安全cms-D-k " 。 两者都使用裸体回击来代替Actions.sh',因此Helper.sh uniled? ' 使大多数外壳在试验中惰性的大门不适用。 由要求-安全:真实'的例子驱动,见match/ spec/runner-spec.rb'和`match/ spec/importer-spec.rb'。

完整运行的子进程跟踪器记录了39个不同指令/例对的 ' 安全 ' 实际执行

为什么没有隔离杠杆

HOME ' 没有任何帮助。 没有-k'的安全网间附加-密码'通过会议而不是通过路径解决缺省键链问题,因此指向其他地方的HOME'并不改变方向。 rake test-同化'种子是被丢弃的HOME'下的一个键链,它包括`-k'取走路径,但不包括密码路径。

MATCH-KEYCHAIN NAME'是存在的,默认为login.keychain',但上面的口令从未将其传递给`安全'。

因此,这与资源类别中的系统剪贴板(# 30210) 完全没有隔离杠杆 : 每个登录会话有一个默认的密钥链, 唯一的修补就是光谱停止到达它 。

在平行分割下

两名工人持有匹配的相接相接 . . . . . . .

内容来源: fastlane/fastlane