jagomart
digital resources
picture1_Software Coding Pdf 190077 | Secure Coding Guidelines


 150x       Filetype PDF       File size 0.17 MB       Source: www.atsec.cn


File: Software Coding Pdf 190077 | Secure Coding Guidelines
atsec information security corporation 9130 jollyville road suite 260 austin tx 78759 tel 512 615 7300 fax 512 615 7301 www atsec com guidelines for secure coding by trupti shiralkar ...

icon picture PDF Filetype PDF | Posted on 03 Feb 2023 | 2 years ago
Partial capture of text on file.
                                                     atsec information security corporation 
                                                         9130 Jollyville Road, Suite 260 
                                                         Austin, TX 78759 
                                                                Tel: 512-615-7300 
                                                                Fax: 512-615-7301 
                                                                  www.atsec.com 
                      Guidelines for Secure Coding  
             
                          by Trupti Shiralkar and Brenda Grove 
                                     January 2009 
             
             
             
             
        y    
             
        rit  
        cu   
             
             
             
        n se 
        io   
        t    
             
        rma  
        fo   
        n                                                     
        i    
        c 
        atse
         
                    Guidelines for Secure Coding  
                     
                    Writing secure code is an essential part of secure software development. Generally speaking, the main 
                    objective of a developer is to write code that will work. Unfortunately, neither a novice nor an experienced 
                    programmer necessarily knows how to write code securely. A developer’s unintentional ignorance of 
                    known vulnerabilities and insecure coding practices can generate a security flaw in a program. Such a 
                    flaw could be responsible for crashing a program or enabling a denial of service attack. In any case, an 
                    effective approach must be adopted to detect and eliminate such flaws.  
                    Practicing secure coding techniques helps avoid most of the software defects responsible for causing 
                    vulnerabilities and improves the quality of the software.  
                    Programming languages such as C and C++ were designed for building both low- and high-level 
                    applications in the early 1970s. These languages were intended for high performance and ease of use; 
                    security was not a concern at that time. However, the growing number of published vulnerabilities and 
                    history of attacks points out various security flaws in C/C++ applications. Therefore, the main purpose of 
                    this paper is to provide a practical and effective set of secure coding guidelines.  
                    Java was developed 1995 and is believed to be more secure than C/C++. Unfortunately, by practicing 
                    insecure coding constructs, a Java developer can still introduce security flaws in a program. Hence, this 
                    paper also covers secure coding guidelines for Java.. 
                    In order to develop a secure application, practicing secure coding techniques alone is not sufficient. 
                    Security should be incorporated into every phase of the software development life cycle. Therefore, this 
                                                                                                               1
                    paper also provides an overview of a secure software development life cycle (secure SDLC).   
                    The intended audience for this paper is security professionals, as well as developers who are keen to 
                    understand various security aspects of code development.  
                    Impact of vulnerabilities and associated cost 
                    According to the National Institute of Standard and Technology (NIST), more than 15,000 vulnerabilities 
                    have been reported and added to the Common Vulnerabilities and Exposures (CVE) database to date. 
                    The growing number of reported vulnerabilities is causing increasing concern.  
                    Poor development practice is significantly responsible for causing defects and creating vulnerabilities. 
                    Many times, the programmer fails to detect these vulnerabilities at an early stage in the development 
                    cycle. When the product is launched into the market, such vulnerabilities are discovered and reported by 
                    researchers. Vulnerabilities that are discovered and exploited by hackers/attackers can remain unnoticed 
                    until a considerable amount of damage has been caused. It then takes time to develop and release a 
                    patch to address a vulnerability. Once a patch is available, it must be configured on existing 
                    systems/applications to fix the security problem. However, this type of patch management system is not 
                    very effective for several reasons. First, it is a time-consuming process to develop and release the patch. 
                    Second, there is a possibility that a patch will not be compatible with an existing application/system and, 
                    hence, it cannot be deployed in a specific environment without testing. Failure to configure the new patch 
                    correctly can cause a critical security-related issue.   
                    Overall, the impact of vulnerability and patch management includes the costs of: 
                        •    evaluation of the vulnerability 
                        • patch development 
                        •    patch retrieval, assembly, and testing 
                        • patch notification 
                        •    support for patch management issues 
                        •    downtime while applying the patch 
                                                                          
                    1 Note that atsec does not advocate the specific secure SDLC methodology described. 
                                                       © 2009 atsec information security corporation                       2 
                          Guidelines for Secure Coding  
                           
                          In fact, when all factors are considered, the cost to resolve a security issue by development and 
                          application of a patch is approximately 60 times the cost of fixing the security bug in an early stage of the 
                          SDLC [01].  
                          There is an additional potential cost to a company that releases software containing security 
                          vulnerabilities. A pattern of such activity can result in damage to the company’s reputation, to the 
                          detriment of the company’s stock price and other measures of its value. 
                                                                     © 2009 atsec information security corporation                                           3 
                          Guidelines for Secure Coding  
                           
                          Known Vulnerabilities Introduced By Coding 
                          In computer security, the term ‘vulnerability’ implies a weakness or a fault in design, development, or 
                          configuration which, upon exploitation, can violate an organization’s security policy and allow 
                          unauthorized access to the attacker. 
                          It is a good idea to have a working knowledge of software vulnerabilities which have caused significant 
                          damage in the last decade. This approach helps programmers to pinpoint vulnerabilities in existing code. 
                          The following is a brief overview of some common vulnerabilities. 
                          Buffer overflow 
                          A buffer overflow occurs when a program allows input to write data beyond allocated memory. The 
                          attacker can gain control over an entire application or crash a program by exploitation via buffer overflow. 
                          The most commonly-affected languages are C and C++. Some languages, like Java, C#, and Visual 
                          Basic, have an array bound checking mechanism and native string types, which generally prohibit direct 
                          memory access. Hence, these languages are less prone to buffer overflows. 
                          /** Example of Buffer Overflow  **/ 
                           
                          int main (int argc, char const *argv[]) 
                              { 
                                  char buffer1[5] = "VXYZ"; 
                                  char buffer2[5] = "PQRS"; 
                                  strcpy(buffer2, argv[1]); 
                                  printf("buffer1: %s, bufffer2: %s\n", buffer1, buffer2); 
                                  return 0; 
                              } 
                           
                          In the example, the argument is copied into buffer 2 without checking its size. This flaw introduces a 
                          buffer overflow vulnerability. 
                          Integer overflow 
                          An integer overflow takes place when the integer variable tries to store a larger value than the valid range 
                          as a result of an arithmetic operation [02]. C and C ++ are unsafe languages and are likely to turn an 
                          integer overflow into a buffer overflow. Some languages, such as Java and Ada, implement a range-
                          check integer type, which significantly reduces the danger. 
                          /** Example of Integer Overflow  **/ 
                           
                          short int number = 0; 
                          char buffer[large_value]; 
                            
                          while (number < MAX_NUM)  
                            { 
                                number += getInput(buffer+number);  
                            } 
                           
                          In the example, the integer variable ‘number’ may continuously create smaller values than MAX_NUM 
                          and would result in an integer overflow. This scenario will also overwrite MAX_Num-1 bytes of buffer. 
                                                                     © 2009 atsec information security corporation                                           4 
The words contained in this file might help you see if this file matches what you are looking for:

...Atsec information security corporation jollyville road suite austin tx tel fax www com guidelines for secure coding by trupti shiralkar and brenda grove january y rit cu n se io t rma fo i c atse writing code is an essential part of software development generally speaking the main objective a developer to write that will work unfortunately neither novice nor experienced programmer necessarily knows how securely s unintentional ignorance known vulnerabilities insecure practices can generate flaw in program such could be responsible crashing or enabling denial service attack any case effective approach must adopted detect eliminate flaws practicing techniques helps avoid most defects causing improves quality programming languages as were designed building both low high level applications early these intended performance ease use was not concern at time however growing number published history attacks points out various therefore purpose this paper provide practical set java developed bel...

no reviews yet
Please Login to review.