<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>SD Elements: A Tool for Secure Application Development Management</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Golnaz Elahi</string-name>
          <email>gelahi@cs.toronto.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tom Aratyn</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ramanan Sivaranjan</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rohit Sethi</string-name>
          <email>Rohit@sdelements.com</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eric Yu</string-name>
          <email>eric.yu@utoronto.ca</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of Toronto</institution>
          ,
          <country country="CA">Canada</country>
          ,
          <addr-line>M5S 1A4</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Faculty of Information, University of Toronto</institution>
          ,
          <country country="CA">Canada</country>
          ,
          <addr-line>M5S 3G6</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>SD Elements</institution>
          ,
          <addr-line>Toronto</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <fpage>81</fpage>
      <lpage>88</lpage>
      <abstract>
        <p>A major problem in achieving security goals in application development is the overwhelming amount of security-related information, variety of tools, and numerous security risks and vulnerabilities. Software analysts, developers, and testers are not often able to identify relevant security knowledge. Many security tools focus only on detecting vulnerabilities, but the embedded available security guidelines are usually not directly auditable. To fill these gaps, we introduce a new tool, called SD Elements, which focuses on prevention of vulnerabilities as opposed to detection. SD Elements is a centralized security knowledge base that covers different development life cycle phases, so security is built into the application from the early phases of the life cycle. Users are able to specify technologies, platforms, requirements, and programming languages, and SD Elements tailor security guidelines for different projects according to the user specifications. It enables businesses to provide tangible security audit evidence and trace compliance with security standards. The tool is currently being beta tested in varieties of firms, by different roles, and in different development phases.</p>
      </abstract>
      <kwd-group>
        <kwd>Application security</kwd>
        <kwd>security requirements</kwd>
        <kwd>development guidelines</kwd>
        <kwd>security knowledge</kwd>
        <kwd>test case</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The software engineering community is slowly beginning to realize that
information security is also important for software whose primary function is not
related to security [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Since prevention is often more economical than
remediation, empirical security knowledge such as common attacks and vulnerabilities
are made public and available for practitioners through web-based portals such
as NVD [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], CWE [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], OWASP [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Security standards, such as PCI DSS [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] or
ISO [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] provide high level guidelines and impose several compliance requirements
to application developers.
      </p>
      <p>In reality, software analysts, developers, and testers are overwhelmed with
the amount of available information and variety of tools they can employ.
Analysts are given massive lists of security requirements, guidelines, and standards,
and they need to provide tangible and audit-able evidence that the products
comply with security guidelines. Employing tools can help application testers.
However, security testing tools are usually intimidating and their adoption rate
is low, specially because application developers and testers are not often
security experts. Testers also need to tailor the testing scripts for the platforms and
technologies that they use.</p>
      <p>The bottom line for practitioners is finding the relevant body of information
to their projects. However, there is a significant gap between the existing body
of empirical knowledge collected in (web-based) knowledge portals and actual
development demands.</p>
    </sec>
    <sec id="sec-2">
      <title>1.1 Contributions</title>
      <p>To fill the current gaps, we introduce a secure application development
management tool, called SD Elements, which provides a set of core values to application
developers, system analysts, and quality assurance teams.</p>
      <p>SD Elements is a web-based knowledge repository of security guidelines,
empowered by a retrieval tool. SD Elements surveys users to learn about the nature
of the project, platform, language, and technologies, and then it tailors security
knowledge:
– Generates relevant security requirements.
– Provides tailored guidelines on secure architecture design.
– Provides reusable development standards for different development platforms
and technologies.
– Provides sample tested code for implementing the standards.
– Creates a list of security test cases (and check lists) to enable non-expert
developers systematically test security requirements.
– Integrates into application life cycle management and bug tracking tools such
as Quality Center and trac.
– Ranks the risks related to standards which helps with prioritization of
development guidelines and security requirements.</p>
      <p>SD Elements focuses on vulnerability prevention instead of detection. It
integrates security knowledge into the development life cycle, thus, security is built
into the application from the early phases. SD Elements provides a compliance
mechanism, i.e., users can trace which guidelines are employed, implemented,
and tested. This provides businesses with tangible and traceable evidence for
audit purposes. Finally, it provides requirements, implementation, and testing
guidelines, in situations that compliance with PCI DSS and HIPPA is needed.
2</p>
      <sec id="sec-2-1">
        <title>SD Elements Architecture</title>
        <p>SD Elements users will be software developers such as requirements analysts,
programmers, testers, project leaders, and security analysts. For each project,
SD Elements surveys the developers about the nature of the project, security
features and users of the application, types information being handled by the
application, business drivers and policies, platforms, technologies, programming
languages, and application interfaces. By collecting these information about the
project, SD Elements retrieves a customized set of guidelines and requirements,
appropriate for specific projects.</p>
        <p>For example, application general questions (Figure 1) uncover the type of
application, type of web server, programming languages, platforms, third party
technologies and libraries. The survey also enables users to provide more
details about the features and functions of the project. For example, developers
can specify whether the application being developed involves interactions with
operating system, file-upload function, authentication of end users, etc.</p>
        <p>The answer to the questions enable the tool to refine the rest of questions as
well as retrieve relevant security guidelines and requirements. These guidelines
in the SD elements knowledge base are developed according to:
– Current vulnerabilities for different technologies, platforms, and languages.</p>
        <p>
          Each guideline or requirement corresponds to a vulnerability in Common
Weakness Enumeration list of vulnerabilities [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
– Best practices and existing standards such as OWASP [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], WASC threat
classification [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]; empirical data about commonly-exploitable applications in
web applications based on years of penetration testing; threat models, and
source code review; and regulatory compliance including PCI DSS, HIPPA
HITECH, GLBA, NERC CIP, and international privacy laws.
2.1
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Knowledge Retrieval Engine</title>
      <p>SD Elements’ knowledge storage and retrieval is based on Boolean logic. The
knowledge retrieval engine provides security guidelines, based on what users
has specified. For example, if users select a J2EE project, then SD Elements
concludes the user will be developing a web application that is probably
multitiered, etc. Thus it does not require overwhelming efforts for users and project
owners to describe the nature of project for receiving useful information. Project
managers can get security guidelines as well, without knowing much of technical
details.
2.2</p>
    </sec>
    <sec id="sec-4">
      <title>SD Elements Knowledge Base Architecture</title>
      <sec id="sec-4-1">
        <title>Integration with Software Development Life Cycle</title>
        <p>SD Elements helps in management of secure application development. It
facilitates building security into the application, from the early requirements stage,
and considering security in mind at the design and implementation activities.
Finally, it provides step-by-step test cases to help non-security experts test relevant
cases to their application.
3.1</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Requirements Generation</title>
      <p>SD Elements supports application security requirements analysis:
– Surveys analysts about the project settings.
– Generates a list of relevant security requirements (in different categories)
which are tailored with respect to the project settings.
– Links generated requirements to relevant vulnerabilities.
– Links the generated requirements to a design/implementation guidelines and
test cases.
– Lists the requirements criteria of acceptance. These criteria are actually the
test cases. Thus, analysts will know from the early stages, how the
requirements will be tested.</p>
    </sec>
    <sec id="sec-6">
      <title>3.2 Design and Development Guidelines</title>
      <p>SD Elements provides project-specific implementation guidelines. Suggested
guidelines correspond to the list of security requirements and settings of the project.
Sample (and tested) code, whenever applicable, is provided as part of the
content. For example, for the HTML encoding for JSPs, SD Elements provide a
sample code as depicted in Figure 3. Figure 4 shows an example list of
development guidelines in the authentication category.</p>
    </sec>
    <sec id="sec-7">
      <title>3.3 Application Testing</title>
      <p>SD Elements generates step by step test cases, that include failure conditions,
sample scripts (if needed), guidelines about testing tools, and guiding videos. By
the time the users get to the testing phase, SD Elements has provided proper
security requirements and implementation guidelines. Thus, although test cases
are provided, the emphasis is on preventing vulnerabilities instead of detection.
Test cases are linked to security requirements, and user can specify a test is
passed. Then, the requirements status is changed (to satisfied) as well. Figure 5
shows a screen shot of a sample test case.</p>
      <p>Incremental survey: The survey section of the tool can be answered gradually
and incrementally, i.e., the more questions answered by the user, the more specific
and accurate guidelines are retrieved by SD Elements.</p>
      <p>A Traceability System: Users can trace which guidelines they have applied,
which ones are not applicable, and which guidelines are outstanding. Applicable
guidelines and implementation standards can be added to bug tracking systems
and generated requirements can be imported to general requirements documents
such as PDF and doc files.
4</p>
      <sec id="sec-7-1">
        <title>Beta Test Plan</title>
        <p>SD Elements will be in beta test in a variety of sectors, such as energy,
independent software vendors, healthcare, and financial services. It will be mostly
championed by application security managers and development team leaders.
The beta tests will help us investigate various aspects of real world application
of SD Elements. By the end of the beta test phase, we will have concrete data
to evaluate usefulness and usability of SD Elements in real world practice.
1. How and in what logical path users browse the standards.
2. How the standards and requirements are applied in different phases of
development and by what roles.
3. Whether users treat guidelines only as an after the fact check list or
developers use guidelines in daily development tasks.
4. Whether SD Elements help developers actually prevent the introduction of
potential vulnerabilities into the code.
5. Whether users find SD Elements intuitive and usable.
6. Whether users need additional security knowledge sources in addition to SD</p>
        <p>Elements.
5</p>
      </sec>
      <sec id="sec-7-2">
        <title>Related Work</title>
        <p>
          Various web-based software vulnerability knowledge bases provide a shared and
standard way for identifying, specifying, and measuring software weaknesses and
vulnerabilities. Common Weakness Enumeration (CWE) [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] provides a unified,
measurable set of software weaknesses for enabling effective discussion,
description, selection, and use of software security tools and services that can find
these weaknesses in source code and operational systems. National Vulnerability
Database (NVD) portal provides a search engine over the Common
Vulnerability and Exposure (CVE) and Common Configuration Enumeration (CCE)
databases. However, these knowledge portals usually lack specific guidelines to
prevent the introduction of vulnerabilities. The burden of identifying relevant
vulnerabilities in the massive lists of these portals is on developers. SD Elements
solves these issues by providing customized guidelines for preventing CWE
vulnerabilities.
        </p>
        <p>
          The need for security guideline customization has been addressed in another
tool called TeamMentor [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. TeamMentor only provides two layers of guidelines
filtering: 1) technology and 2) role of the user. Thus, still a massive list of
guidelines without specific categorization is provided to the user. A link between
the suggested guidelines for different phases of life cycle is not considered, thus
traceability is not possible. Project specific features and functionalities are not
used to generate the list of guidelines, and still software developers can become
overwhelmed with the large list of guidelines.
6
        </p>
      </sec>
      <sec id="sec-7-3">
        <title>Conclusions and Future Work</title>
        <p>SD Elements is a web-based security knowledge base that provides security
guidelines for different development life cycle phases. The main goals of SD
Elements is to build security into the application, from the early phases of the life
cycle. The outstanding contribution of SD Elements is tailoring the guidelines
according to project description. SD Elements helps businesses provide tangible
security audit evidence and trace compliance with security standards.</p>
        <p>The results of the beta tests will help us investigate whether by applying
SD Elements, more vulnerabilities are actually prevented. In future releases, SD
Elements will be customizable to different domains and businesses. End user
administrators will be able to add their own questions, answers, and content
items so that they can support any technology stack. Also, we will continuously
add more content, thus SD Elements will work as a subscription service rather
than a single tool.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>I. A.</given-names>
            <surname>Tondel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. G.</given-names>
            <surname>Jaatun</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P. H.</given-names>
            <surname>Meland</surname>
          </string-name>
          , “
          <article-title>Security requirements for the rest of us: A survey,” IEEE Software</article-title>
          , vol.
          <volume>25</volume>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>27</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>National</given-names>
            <surname>Vulnerability</surname>
          </string-name>
          <article-title>Database</article-title>
          . http://nvd.nist.gov/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>3. Common Weakness Enumeration. http://cwe.mitre.org/.</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>4. OWASP. http://www.owasp.org/.</mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>PCI</given-names>
            <surname>Secutity Standard</surname>
          </string-name>
          <string-name>
            <surname>Council</surname>
          </string-name>
          ,
          <article-title>Data Security Standards (PCI DSS)</article-title>
          . https://www.pcisecuritystandards.org/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>M. J. Kenning</surname>
          </string-name>
          , “
          <article-title>Security management standard - iso 17799/bs 7799,” BT Technology Journal</article-title>
          , vol.
          <volume>19</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>132</fpage>
          -
          <lpage>136</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <source>Web Application Security Consortuim Threat Classification v2.0</source>
          . http://projects.webappsec.org.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Secure</given-names>
            <surname>Development</surname>
          </string-name>
          <article-title>Standards</article-title>
          . http://securityinnovation.com/products/teammentor/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>