探索Web应用程序开发工具与安全性的关系外文翻译资料

 2022-08-23 03:08

Exploring the Relationship Between Web Application
Development Tools and Security

Matthew Finifter
University of California, Berkeley
finifter@cs.berkeley.edu

David Wagner

University ofCalifornia, Berkeley
daw@cs.berkeley.edu

Abstract

How should software engineers choose which tools to use to develop secure web applications? Different developers have different opinions regarding which language, framework, or vulnerability-finding tool tends to yield more secure software than another; some believe that there is no difference at all between such tools. This paper adds quantitative data to the discussion and debate.

We use manual source code review and an automated black-box penetration testing tool to find security vulnerabilities in 9 implementations of the same web application in 3 different programming languages. We explore the relationship between programming languages and number of vulnerabilities, and between framework support for security concerns and the number of vulnerabilities. We also compare the vulnerabilities found by manual source code review and automated black-box penetration testing.

Our findings are: (1) we do not find a relationship between choice of programming language and application security, (2) automatic framework protection mechanisms, such as for CSRF and session management, appear to be effective at precluding vulnerabilities, while manual protection mechanisms provide little value, and (3) manual source code review is more effective than automated black-box testing, but testing is complementary.

  1. Introduction

The web has become the dominant platform for new software applications. As a result, new web applications are being developed all the time, causing the security of such applications to become increasingly important. Web applications manage users personal, confidential, and financial data. Vulnerabilities in web applications can prove costly for organizations; costs may include direct financial losses, increases in required technical support, and tarnished image and brand.

Security strategies of an organization often include developing processes and choosing tools that reduce the number of vulnerabilities present in live web applications. These software security measures are generally focused on some combination of (1) building secure software, and (2) finding and fixing security vulnerabilities in software after it has been built.

How should managers and developers in charge of these tasks decide which tools - languages, frameworks, debuggers, etc. - to use to accomplish these goals? What basis of comparison do they have for choosing one tool over another? Common considerations for choosing (e.g.,) one programming language over another include:

  • How familiar staff developers are with the language.
  • If new developers are going to be hired, the current state of the market for developers with knowledge of the language.
  • Interoperability with and re-usability of existing inhouse and externally-developed components.
  • Perceptions of security, scalability, reliability, and maintainability of applications developed using that language.

Similar considerations exist for deciding which web application development framework to use and which process to use for finding vulnerabilities.

This work begins an inquiry into how to improve one part of the last of these criteria: the basis for evaluating a tools inclination (or disinclination) to contribute to application security.

Past research and experience reveal that different tools can have different effects on application security. The software engineering and software development communities have seen that an effective way to preclude buffer overflow vulnerabilities when developing a new application is to simply use a language that offers automatic memory management. We have seen also that even if other requirements dictate that the C language must be used for development, using the safer strlcpy instead of strcpy can preclude the introduction of many buffer overflow vulnerabilities.

This research is an exploratory study into the security properties of some of the tools and processes that organizations might choose to use during and after they build their web applications. We seek to understand whether the choice of language, web application development framework, or vulnerability-finding process affects the security of the applications built using these tools.

We study the questions by analyzing 9 independent implementations of the same web application. We collect data on (1) the number of vulnerabilities found in these implementations using both a manual security review and an automatic black-box penetration testing tool, and (2) the level of security support offered by the frameworks. We look in these data sets for patterns that might indicate differences in application security between programming languages, frameworks, or processes for finding vulnerabilities. These patterns allow us to generate and test hypotheses regarding the security implications of the various tools we consider.

This papers main contributions are as follows:

剩余内容已隐藏,支付完成后下载完整资料


探索Web应用程序开发工具与安全性的关系

Matthew Finifter
University of California, Berkeley
finifter@cs.berkeley.edu

David Wagner

University ofCalifornia, Berkeley
daw@cs.berkeley.edu

摘要

软件工程师应该如何选择使用哪些工具来开发安全的Web应用程序?不同的devel操作工对哪种语言、框架或漏洞查找工具往往会产生比另一种更安全的软件有不同的看法;有些人认为这些工具之间根本没有区别。本文为讨论和辩论增加了定量数据。

我们使用手动源代码审查和自动黑匣子渗透测试工具,在3种不同编程语言的同一WebAP应用的9个实现中找到安全漏洞。我们详细阐述了编程语言与漏洞数量之间的关系,以及安全问题的框架支持与脆弱性数量之间的关系。我们还比较了手动源代码审查和自动黑匣子渗透测试发现的漏洞。

我们的研究结果是:(1)我们没有发现编程语言和应用安全的选择之间的关系,(2)自动框架保护机制,如CSRF和会话管理,似乎是在阻止漏洞的有效的,而人工保护机制提供很少的值,和(3)手动源代码评审比自动黑箱测试更有效,但测试是互补的。

网络已经成为新软件应用的主要平台。因此,一直在开发新的Web应用程序,使此类应用程序的安全性变得越来越重要。Web应用程序管理用户的个人、机密和财务数据。网络应用程序的脆弱性可能会给组织带来昂贵的代价;成本可能包括直接的财务损失,所需的技术支持端口的增加,以及有损形象和品牌。

一个组织的安全策略往往包括开发过程和选择工具,以减少实时Web应用程序中存在的漏洞数量。这些软件安全措施通常集中于(1)构建安全软软件的某种组合,(2)构建完成后发现和修复软件中的安全漏洞。

负责这些任务的经理和开发人员应该如何决定哪些工具-语言、框架、调试器等。-用来实现这些目标?他们有什么比较的基础来选择一个工具而不是另一个工具?选择一种编程语言而不是另一种编程语言的共同考虑因素包括:

在决定使用何种WebAP应用开发框架和使用何种程序查找漏洞时,也存在类似的考虑。

这项工作开始了一项关于如何改进这些标准的最后一部分的研究:评估工具的倾向(或不倾向)以促进AP应用安全的基础。

过去的研究和经验表明,不同的工具可以对应用程序安全产生不同的影响。软件工程和软件开发委员会已经看到,在开发一个新的应用程序时,防止缓冲区溢出漏洞的有效方法是简单地使用一种提供自动内存管理的语言。我们还看到,即使其他需求规定必须使用C语言进行开发,使用更安全的strlcpy而不是strcpy也可以排除引入许多缓冲区溢出漏洞。

这项研究是对一些工具和过程的安全性的探索性研究,这些工具和过程是organizations在构建Web应用程序期间和之后可能选择使用的。我们试图了解语言的选择、Web应用程序开发框架或漏洞查找过程是否影响使用这些工具构建的应用程序的安全性。

我们通过分析同一个Web应用程序的9个独立实现来研究这些问题。我们收集了以下数据:(1)使用手动安全重新视图和自动黑匣子渗透测试工具在这些实现中发现的漏洞数;(2)框架工程提供的安全支持水平。我们在这些数据集中查找可能表明用于查找漏洞的progmaming语言、框架或进程之间应用程序安全性差异的模式。这些模式允许我们生成和检验关于我们考虑的各种工具的安全影响的假设。

本文的主要内容如下:

编程语言。 我们希望衡量编程语言的选择对使用该语言开发的软件的安全性的影响。如果存在这种影响,软件工程师(或他们的经理)可以在计划为给定的工作使用哪种语言时考虑到它。这种信息可以帮助降低风险,更适当地分配资源。

我们有许多理由相信,编程语言的特性可能会导致使用该语言开发的应用程序的安全性的差异。例如,研究表明,类型系统可以静态地找到(并因此排除,通过停止合并)某些类型的漏洞[21,20]。在general中,静态类型可以找到在动态类型语言中开发之前可能没有找到的bug(其中任何一个可能是一个漏洞)。

此外,一种语言的标准库可能比另一种语言的库更可用,因此不太容易出错。一种现代的异常处理机制可能有助于开发人员识别和从危险场景中恢复。

但是编程语言在很多方面是不同的,语言本身也是不同的。每种语言都有自己的共同体,而且它们的哲学和价值观往往是不同的。例如,Perl社区value TMTOWT DI(“有不止一种方法来做这件事”)[4],但Python[16]的禅宗说,“这里应该有一种-最好是只有一种-显而易见的方法来做这件事。”清晰的文档也可以发挥作用。

因此,我们想测试lan guage的选择是否能显著影响整体应用安全..如果是这样的话,了解一种语言对于任何特定类别的Vulner能力是否比另一种语言更好将是有用的。如果是这样的话,开发人员可以把他们的ef要塞集中在他们的语言缺乏良好支持的类上,而不用太担心那些数据显示他们的语言强大的类。

Web应用程序开发框架。 Web应用程序开发框架为执行Web应用程序开发中常见的任务提供了一组libraries和工具。我们想评估它们在开发安全软件中所起的作用。这可以帮助开发人员在选择使用哪些技术时做出更明智的决定。

最近,我们看到了框架随着时间的推移而添加安全特性的趋势。许多现代框架负责创建安全会话标识符(例如Zend、Rubyon Rails),一些框架还增加了对自动避免跨站点脚本(XSS)或跨站点请求伪造(CS RF)漏洞(例如Django、Codeigniter)的支持。很自然地想知道在开发安全特性方面是否具有主动性的帧工作产生了具有明显更好安全性的软件,但到目前为止,我们还没有数据显示这是否是这样。

漏洞调查工具。 许多组织通过在部署或交付软件之前评估软件的安全性来应对安全风险。对于Web应用程序,这样做的两个突出方法是:(1)使用为此目的设计的自动化工具进行黑盒渗透测试;(2)由一位分析师进行的手动源代码分析,该分析师对安全风险和常见的Vulnerabili领带进行了分析。前者的优点是大多是伪造和便宜;后者有一个美誉:

Team Number

Language

Frameworks used

1

Perl

DBIx::DataModel, Catalyst, Template Toolkit

2

Perl

Mason, DBI

5

Perl

Gantry, Bigtop, DBIx::Class

3

Java

abaXX, JBoss, Hibernate

4

Java

Spring, Spring Web Flow, Hibernate, Acegi Security

9

Java

Equinox, Jetty, RAP

6

PHP

Zend Framework, OXID framework

7

PHP

proprietary framework

8

PHP

Zend Framework

表格1: 每个小组使用的一组框架

更全面但更昂贵。然而,我们不知道定量数据来衡量它们的有效性。我们致力于解决这个问题,通过比较手动审查的有效性和自动黑盒渗透测试的有效性。关于这个问题的可靠数据可能有助于组织在这些评估方法之间做出形成的选择。

为了解决这些问题,我们分析了同一个Web应用程序规范的几个独立实现,使用不同的编程语言和不同的框架编写。我们在这些应用程序中找到了使用手动源代码审查和自动黑盒渗透测试的Vulnerabilities,并且我们确定了框架支持的级别,每个implement都可以用来帮助它对抗各种类型的漏洞。我们寻找:(1)编程语言和漏洞数量,(2)框架支持和漏洞数量,(3)通过手动源代码分析和自动黑盒渗透测试发现的漏洞数量。

我们分析了先前一项名为Plat_Forms[19]的研究中收集的数据。在这项工作中,研究人员设计并执行了一项控制实验,为9个专业编程团队提供了相同的编程任务。其中三个团队使用Perl,三个团队使用PHP,其余三个团队使用Java。

比赛规则规定,每个团队有30小时的时间来执行一个名为PeopleByTermament的Web应用程序的规范[18]。每个团队选择要使用的框架。使用相同编程语言的团队使用的一组框架几乎没有重叠。表1列出了每个团队使用的框架集。

研究人员收集了这9个程序,并分析了它们的特性。虽然他们主要关注性能、完整性、大小和可用性等指标,但我们重新分析了他们的数据,以评估这9个程序的安全性。

每个团队提交一个完整的源代码包和一个虚拟机映像。VM映像运行一个Web服务器,该服务器通过Temperament承载它们对People的实现。对源代码包进行了修剪,以删除任何未专门为竞赛开发的代码,这些修剪后的源代码包在开源许可证下发布。[1]

在我们的研究中,我们使用了虚拟机图像集和经过裁剪的源代码包。Plat_Forms研究收集了许多其他数据(例如,sam ples在每个开发人员当前行动的定期间隔中),这是我们本研究不需要的。我们研究的数据在网上公开。[2]

  • We develop a methodology for studying differences in the effect on application security that different web application development tools may have. The tools we consider are programming languages, web application development frameworks, and processes for finding vulnerabilities.
    1. 介绍
    • 开发人员对语言有多熟悉。
    • 如果要雇用新的开发人员,了解语言的开发人员目前的市场状况。
    • 与内部和外部开发部件的互操作性和可再利用性。
    • 对使用该语言开发的应用程序的安全性、可伸缩性、可靠性和可维护性的看法。
    • 我们开发了一种方法来研究不同的Web应用程序开发工具对应用程序安全性的影响的差异。我们考虑的工具是编程语言、Web应用程序开发框架和用于查找漏洞的辅助工具。
    • 我们产生并检验关于这些工具的安全影响的假设。
    • 我们开发的,从总的范围上没有框架的支持框架支持框架级防御的分类法。
    • 我们开发了一个框架级防御的分类法,范围从始终在框架sup端口到没有框架支持。
    • 我们发现证据表明,自动框架级防御很好地保护Web应用程序,但即使是最好的手动防御也可能无法达到他们的目标。
    • 我们发现证据表明,自动框架级防御很好地保护Web应用程序,但即使是最好的手动防御也可能无法达到他们的目标。
    1. 目标
    1. 方法
原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。