我们注意到,在某台开发机器上,C# 解决方案的 Visual Studio(2015 更新 3)调试版本会在每个构建的 DLL 旁边生成一个 $RANDOM_SEED$ 文件。
文件的内容只是一个数字,例如
1443972318
删除文件然后重建导致文件被重新生成,但编号不同。
在解决方案中重建单个项目(仅具有标准 C# 项目引用/依赖项 + System.Management 的项目)时,也观察到此行为。
请注意,运行命令行构建例如
msbuild <sln-file>
不会重新生成文件(用于构建完整的解决方案或单个项目)。
重新启动 VS 后,不再重新生成文件。
据我们所知,我们的任何源代码、构建后步骤或内部依赖项中都没有使用此文件名。.NET 框架类有很多依赖项,包括 Random 和 RNGCryptoServiceProvider,还有外部依赖项。我们没有所有这些的完整源代码,因此无法彻底检查是否有任何依赖关系负责。
这有点像在黑暗中拍摄,但问题是有人见过类似的东西吗?
编辑 我对这被否决并不感到惊讶 - 我很欣赏它是开放式的,但由于我目前无法重现这一点,并且它可能会产生潜在的严重后果(随机数生成器攻击?)无论如何我已经发布了. 如果我能够复制,我当然会在这里更新。