可视化工具安全注意事项

编写可视化工具涉及可能的安全威胁。 这些潜在威胁目前不存在已知的攻击,但开发人员应注意这些威胁,并采取适当的安全预防措施,如此处所述,以防范未来的攻击。

调试器可视化工具需要的权限高于部分信任应用程序允许的权限。 在具有部分信任的代码中停止时,可视化工具将不会加载。 若要使用可视化工具进行调试,必须以完全信任的方式运行代码。

注释

代码访问安全性(CAS)已在 .NET Framework 和 .NET 的所有版本中弃用。 使用与 CAS 相关的 API 时,最新版本的 .NET 不遵循 CAS 注释并生成错误。 开发人员应寻求完成安全任务的替代方法。

可能的恶意调试组件

可视化工具至少包含两个类:一个在调试器端,另一个在调试对象端。 可视化工具通常部署在特殊目录中的单独程序集中,但也可以从调试对象中加载它们。 发生这种情况时,调试器会从调试对象中提取代码,并在一个完全信任的环境下运行于调试器中。

当被调试程序不完全受信任时,运行具有完全信任的被调试端代码将引发问题。 如果可视化工具尝试将部分信任程序集从调试对象加载到调试器中,Visual Studio 将终止可视化工具。

但是,仍存在一个小漏洞。 被调试端可以与从其他来源加载的调试端相关联(而非被调试端本身)。 然后,调试对象端可以告知受信任的调试器端代表其执行操作。 例如,如果受信任的调试器端类公开“删除此文件”机制,则当用户调用其可视化工具时,部分信任调试对象可以调用该机制。

若要缓解此漏洞,请注意可视化工具公开的接口。