【发布时间】:2009-12-23 00:37:45
【问题描述】:
我正在使用一组延迟签名的程序集,我可以在跳过验证后从 GAC 安装和加载它们 (sn -Vr * ...
由于延迟签名作为一个过程只需要公钥文件
- sn -k keys.snk(公钥和私钥)
- sn -p keys.snk pkey.snk(仅公钥)
- 将 pkey.snk 添加到项目属性并选中“仅延迟符号”
- sn -v(显示组件是延迟签名的)
- sn -e(提取 pkey)
- fc(未找到差异)
我发现第一个160 bytes of the SNK file is the PKey... 后面的436个字节代表私钥。
虽然出于开发目的 sn-Vr 或 sn -R keys.snk(用于替换延迟签名的新公钥/私钥对)就足够了,但我很想知道是否从程序集中提取公钥并将其与您自己的私钥配对即可...
这可能是一个潜在的安全漏洞(因为使用公钥令牌查找程序集)...难怪 .Net 框架/SDK 中没有内置工具允许这样做。
是否有记录整个 SNK 文件结构(文件格式)的地方?一般来说,这种方法可以奏效吗?你怎么看?
【问题讨论】:
-
安全漏洞到底是什么?您的描述不清楚。
-
我说的是“潜在的”......不是专家......我的头脑:你可以假装别人的公钥是你的......你的公钥令牌会匹配......如果我根据公钥令牌分配了安全权限/跳过了验证,您可能会利用...