其他推荐
代码访问安全性策略自 .NET Framework 最早的版本以来即可用。通过定义授权的权限集,然后定义允许的访问,这些策略决定了应用程序能(或不能)完成的任务。这些策略主要存在于以下四种级别中:企业级、机器级、用户级和 appdomain。最后实施的策略是部分级别策略的交集。因此,应用程序拥有的最高权限是这些单独级别之一。管理员因此可以使用企业级策略,从而强制使用 Express 版本创建的代码使用一个非常严格的权限集来执行。
利用 .NET Framework 2.0,现在还可以进行预编译,以及强命名编译 ASP.NET 2.0 程序集。源文件(如 .aspx 文件)不再需要部署到 Web 服务器。作为该预编译过程的一部分,还可以通过使用强命名来加密保护程序集。通过使用如上所述的强命名和策略,可以在企业策略级别限制应用程序。例如,一种可能性是利用组策略(或下面参考文章中所述的软件限制策略)只允许为由 IT 部门“签名”或源自许可的服务器的应用程序提升权限。其他由组织内部用户使用开发人员工具(如 Express 版本)创建的应用程序将不进行签名,并因此不能得到默认的升级权限集。该机制使用加密方法来区分完全信任的桌面应用程序和非受信、潜在的恶意应用程序,以及由开发新手编写的代码。进行该操作的过程相当简单。管理员将创建一个基于指定公钥或强名称的自定义代码组。然后,管理员可以使用 .NET 配置工具,根据一个现有或自定义的权限集将权限分配给该代码组。
如果需要,组织还可以为开发新手建立一个过程,使他们的应用程序得到签名。该过程必须包含一个完整的危险建模过程,以及批准应用程序之前的代码检查。对于让开发新手了解安全的软件工程实践(本文稍后进行说明)而言,这也许是个很好的机会。
IT 管理员还应该使用配置管理机制来保护底层主机和其他应用程序免受可疑应用程序中潜在的恶意攻击。这可以通过诸如 URL 授权这样的机制完成,以阻止应用程序在不具有特定角色和权限的情况下访问文件系统的组件。同样,跨应用程序重定向可用于阻止应用程序以恶意方式相互交互。利用诸如 Form 身份验证这样的标记可做到这一点。选择禁用跨应用程序重定向现在是 .NET Framework 本身可用的功能,并通过 .config 文件进行配置。例如,对于一个 ASP.NET 2.0 Web 应用程序而言,可使用 Web.config 文件完成。同样,所有组织内关键的资源必须进行严格的访问控制。例如,没有理由将包含客户社会安全号码和信用卡信息的数据库公开给一个仅对程序有所了解的开发新手。通过对这种资源的访问控制,管理员能够确保轻松地避免无意的危害和恶意行为。可以使用的其他机制包括,具有在适当位置进行适当的变更管理过程,加强的身份验证以及维护所有发生的以允许非拒绝的事件的审核跟踪。
最后,许多安全性都由下面三个主要因素实现:人员、过程和技术。在上述大部分的讨论中,我们主要着重于技术层面。对于在适当位置具有正确策略而言这也很重要,对于增强这些策略的过程亦是如此。例如,开发新手必须得到技术方面的培训,如威胁建模和代码检查。对于教授开发人员编写安全的代码而言,这是个不错的时机,然后他们可以首先用学到的知识编写代码。必须教授学生和开发新手最基本的软件安全性,包括诸如加密、身份验证和授权这样的基础概念。同时,必须开发并增强一些策略,例如编码标准、安全性部署标准、信息安全策略、数据分类指南以及对执行威胁建模和代码检查的指南。同样,管理团队可以与开发人员共同贯彻应用程序的内部证书计划,该计划包括对应用程序执行威胁建模,然后执行安全代码检查。
通过对人员和过程的投入,组织可以更好地保护其环境的安全性,而不仅仅依赖于最佳的技术。
小结
开发新手、学生以及新接触 Windows 平台和 .NET Framework 编程的人员尚未拥有一个相对简单但功能丰富的环境,可以让他们在其中创建应用程序,以了解甚至有可能简化他们以及其他人的工作。Visual Studio 2005 Express Editions 正好解决了这个问题。然而,它们也随之给组织带来了一些问题 — 非专业开发人员创建的应用程序(包括网络中运行的应用程序)对安全性的威胁。糟糕的应用程序可能导致应用程序的安全性受到威胁,底层主机以及其他运行于同一主机上的应用程序的安全性也会受到威胁,甚至暴露敏感数据(如,客户的个人身份信息、知识产权和商业机密)。本文旨在提供大量的关键功能(在 .NET Framework 2.0 和 Visual Studio 2005 中实现安全的应用程序开发),从而减轻开发人员的这些忧虑。这些产品中的优秀技术可在相当长的一段时间内防止攻击。组织还必须将重点放到人员本身和过程上面。但是,通过下面的指导,组织甚至允许其非专业开发人员群体来生成很棒的应用程序,从而最终帮助他们更有效的工作。
参考资料
• .NET Framework Developer's Guide: Code Access Security
• How To: Use Code Access Security in ASP.NET 2.0
• .NET Framework Developer's Guide: ClickOnce Deployment for Windows Forms Applications
• .NET Framework Assemblies and the AllowPartiallyTrustedCallers Attribute
• Using Software Restriction Policies to Protect Against Unauthorized Software
作者简介
Rudolph Araujo 是一位资深的软件安全顾问,同时他还是 Foundstone 的培训教师。在 Foundstone,Rudolph 负责创建并提供威胁建模以及安全代码检查服务业务。Rudolph 还负责 Foundstone 的 Building Secure Software and Writing Secure Code—ASP.NET 课程内容编写与培训。
Rudolph 具备扎实的计算机基础知识,以及多年在 UNIX 和 Windows 环境中软件开发的经验。加入 Foundstone 之前,Rudolph 曾带领过 BindView bv-Control for Internet Security(安全漏洞评估产品)审核开发团队。作为软件开发人员,他还曾就职于 Morgan Stanley。最近以来,Rudolph 作为研究人员在卡内基•梅隆大学的 CYLAB 工作,研究病毒和蠕虫的威胁(特别针对于对等网络)。他关注的研究内容还涉及到 Web 服务安全性和可靠性领域。
Rudolph 拥有卡内基•梅隆大学的硕士学位(主攻专业为信息安全),以及印度果阿大学的计算机工程学士学位。他是一个有着 C/C++ 和 C#/.NET Framework 丰富经验的开发人员,是 Foundstone 的 .NET Security Toolkit、SSLDigger、和 Hacme Bank 工具的创始人。Rudolph 还是 MSDN Webcast 系列讲座的常客。Rudolph 曾获得 Microsoft Visual Developer Security MVP Award,他对应用程序安全性和开发人员社区的先导思想和贡献备受推崇。Rudolph 还是多家在线和出版物期刊(例如 Software Magazine,其中他有一个关于“编写安全代码”的专栏)的撰稿人。
关于 Foundstone Professional Services
Foundstone Professional Services 是 McAfee 的一个部门,它提供服务同时也提供培训,以帮助组织持续不断、适度地保护最重要的资源免受最严重的威胁。通过安全策略、Foundstone 识别、推荐并实施恰当的技术、人员和过程的平衡,可以管理数字化风险并更有效地平衡利用安全投资。
Foundstone's Secure Software Security Initiative (S3i®) 服务帮助组织设计、生成安全的软件。通过在整个软件开发生命周期内构建的安全性,组织能够显著降低其受到恶意攻击的危险,同时尽量降低将为补救措施而付出的高昂的代价最小化。服务包括:
• 源代码审核
• 软件设计与体系结构审阅检查
• 危险建模
• Web 应用程序深度测试
• 软件安全性标准化与度量
有关 Foundstone S3i 服务的详细信息,请访问 www.foundstone.com/s3i。
Foundstone S3i 培训旨在教授编程人员以及应用程序开发人员如何生成安全的软件并编写安全的代码。课程包括:
• Writing Secure Code – ASP.NET (C#)
• Building Secure Software
• Writing Secure Code – Java (J2EE)
• Ultimate Web Hacking
有关最新的课程安排,请访问 www.foundstone.com/education。
