This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "OWASP Code Review V2 Table of Contents"

From OWASP
Jump to: navigation, search
(360 Review: Coupling source code review and Testing / Hybrid Reviews)
m (Glenn 'devalias' Grant moved page OWASP Code review V2 Table of Contents to OWASP Code Review V2 Table of Contents: Correct capitalisation as used on category page)
 
(21 intermediate revisions by 7 users not shown)
Line 51: Line 51:
 
=Methodology=
 
=Methodology=
 
===The code review approach===
 
===The code review approach===
#Author -  Open
+
#Author -  Johanna Curiel
 
# [[CRV2_CodeReviewApproach|Put content here]]
 
# [[CRV2_CodeReviewApproach|Put content here]]
  
Line 67: Line 67:
 
#Author - Open
 
#Author - Open
 
# [[CRV2_CodeLayoutDesignArch|Put content here]]
 
# [[CRV2_CodeLayoutDesignArch|Put content here]]
 +
====Understanding Business Logic====
 +
#[[CRV2_BusinessLogic|Put content here]]
  
 
===SDLC Integration===
 
===SDLC Integration===
#Author - Open
+
#Author - Larry Conklin
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Security_Code_Review_in_the_SDLC]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Security_Code_Review_in_the_SDLC]]
 
# [[CRV2_SDLCInt|Put content here]]
 
# [[CRV2_SDLCInt|Put content here]]
Line 75: Line 77:
 
====Deployment Models====
 
====Deployment Models====
 
=====Secure deployment configurations=====
 
=====Secure deployment configurations=====
#Author - Open
+
#Author -  
 
# [[CRV2_SecDepConfig|Put content here]]
 
# [[CRV2_SecDepConfig|Put content here]]
  
 
# New Section
 
# New Section
 
=====Metrics and code review=====
 
=====Metrics and code review=====
#Author - Open
+
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Metrics]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Metrics]]
 
# [[CRV2_MetricsCodeRev|Put content here]]
 
# [[CRV2_MetricsCodeRev|Put content here]]
Line 103: Line 105:
  
 
=====A Risk based approach to code review=====
 
=====A Risk based approach to code review=====
#Author - Open
+
#Author - Gary David Robinson
 
#New Section
 
#New Section
 
*"Doing things right or doing the right things..."
 
*"Doing things right or doing the right things..."
Line 120: Line 122:
 
**Spring
 
**Spring
 
**.NET MVC
 
**.NET MVC
**Structs
+
**Struts
 
**Zend
 
**Zend
 
#New Section
 
#New Section
Line 135: Line 137:
 
=Reviewing by Technical Control=
 
=Reviewing by Technical Control=
 
===Reviewing code for Authentication controls===
 
===Reviewing code for Authentication controls===
#Author - Open
+
#Author - Gary Robinson
 
# [[CRV2_AuthControls|Put content here]]
 
# [[CRV2_AuthControls|Put content here]]
  
Line 141: Line 143:
 
#Author Abbas Naderi, Larry Conklin
 
#Author Abbas Naderi, Larry Conklin
 
# [[CRV2_ForgotPassword|Put content here]]
 
# [[CRV2_ForgotPassword|Put content here]]
 
====Authentication====
 
#Author - Open
 
# [[CRV2_Authentication|Put content here]]
 
  
 
====CAPTCHA====
 
====CAPTCHA====
Line 151: Line 149:
  
 
====Out of Band considerations====
 
====Out of Band considerations====
#Author - Open
+
#Author - Gary Robinson
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authentication]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authentication]]
 
# [[CRV2_OutofBand|Put content here]]
 
# [[CRV2_OutofBand|Put content here]]
Line 164: Line 162:
  
 
====Reducing the attack surface====
 
====Reducing the attack surface====
#Author Open
+
#Author Gary Robinson
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authorization]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authorization]]
 
# [[CRV2_ReducingAttSurf|Put content here]]
 
# [[CRV2_ReducingAttSurf|Put content here]]
Line 201: Line 199:
 
# [[CRV2_ClientSideCodeHTML5|Put content here]]
 
# [[CRV2_ClientSideCodeHTML5|Put content here]]
  
=====Browser Defenses policy=====
+
=====Browser Defenses=====
 
#Author - Open
 
#Author - Open
 
# [[CRV2_ClientSideCodeBrowserDefPol|Put content here]]
 
# [[CRV2_ClientSideCodeBrowserDefPol|Put content here]]
Line 221: Line 219:
 
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]
 
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]
 
# [[CRV2_InputValESAPI|Put content here]]
 
# [[CRV2_InputValESAPI|Put content here]]
 +
 +
=====Microsoft Web Protection Library=====
 +
#Author - Michael Hidalgo
 +
#New Section
 +
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]
 +
# [[CRV2_InputValMicrosoftWebProtectionLibrary|Put content here]]
  
 
====Reviewing code for contextual encoding====
 
====Reviewing code for contextual encoding====
Line 253: Line 257:
  
 
====Reviewing Logging code - Detective Security====
 
====Reviewing Logging code - Detective Security====
#Author - Open
+
#Author - Gary Robinson
 
* Where to Log
 
* Where to Log
 
* What to log
 
* What to log
Line 267: Line 271:
  
 
====Reviewing Security alerts====
 
====Reviewing Security alerts====
#Author - Open
+
#Author - Gary Robinson
 
# [[CRV2_SecurityAlerts|Put content here]]
 
# [[CRV2_SecurityAlerts|Put content here]]
  
Line 280: Line 284:
  
 
====Hashing & Salting - When, How and Where====
 
====Hashing & Salting - When, How and Where====
=====Encrpyption=====
+
=====Encryption=====
 
======.NET======
 
======.NET======
 
#Author Larry Conklin, Joan Renchie
 
#Author Larry Conklin, Joan Renchie
Line 311: Line 315:
  
 
====Ruby====
 
====Ruby====
#Author OPen
+
#Author Open
 
# [[CRV2_RevCodePersistentAntiPatternRuby|Put content here]]
 
# [[CRV2_RevCodePersistentAntiPatternRuby|Put content here]]
  
Line 334: Line 338:
  
 
===Stored - The Anti pattern===
 
===Stored - The Anti pattern===
# Author - Open
+
# Author - Johanna Curiel
 
# [[CRV2_RevCodeStoredAntiPatternIntro|Put content here]]
 
# [[CRV2_RevCodeStoredAntiPatternIntro|Put content here]]
  
Line 346: Line 350:
  
 
====PHP====
 
====PHP====
#Author Abbas Naderi
+
#Author Johanna Curiel
 
# [[CRV2_RevCodeStoredAntiPatternPHP|Put content here]]
 
# [[CRV2_RevCodeStoredAntiPatternPHP|Put content here]]
  
 
====Ruby====
 
====Ruby====
#Author - Open
+
#Author - Johanna Curiel
 
# [[CRV2_RevCodeStoredAntiPatternRuby|Put content here]]
 
# [[CRV2_RevCodeStoredAntiPatternRuby|Put content here]]
  
Line 362: Line 366:
  
 
===Reviewing code for SQL Injection===
 
===Reviewing code for SQL Injection===
#Author Open
+
#Author Gary Robinson
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection]]
 
# [[CRV2_RevCodeSQLInjection|Put content here]]
 
# [[CRV2_RevCodeSQLInjection|Put content here]]
Line 410: Line 414:
 
#Author Abbas Naderi
 
#Author Abbas Naderi
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Request_Forgery]]
 
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Request_Forgery]]
# [[CRV2_CSRFIssues|Put content here]]
+
# This page needs to be deleted. [[CRV2_CSRFIssues|Put content here]]
  
===Transactional logic / Non idempotent functions / State Changing Functions===
+
===(This task has been deleted) Transactional logic / Non idempotent functions / State Changing Functions===
#Author Abbas Naderi
 
 
# [[CRV2_TransLogic|Put content here]]
 
# [[CRV2_TransLogic|Put content here]]
  
Line 430: Line 433:
  
 
====HTTP Headers====
 
====HTTP Headers====
#Author Open
+
#Author Gary Robinson
 
# [[CRV2_SecCommsHTTPHdrs|Put content here]]
 
# [[CRV2_SecCommsHTTPHdrs|Put content here]]
 
=====CSP=====
 
#Author Open
 
# [[CRV2_SecCommsHTTPHdrsCSP|Put content here]]
 
 
=====HSTS=====
 
#Author Open
 
# [[CRV2_SecCommsHTTPHSTS|Put content here]]
 
  
 
===Tech-Stack pitfalls===
 
===Tech-Stack pitfalls===
Line 450: Line 445:
 
# [[CRV2_FrameworkSpecIssuesSpring|Put content here]]
 
# [[CRV2_FrameworkSpecIssuesSpring|Put content here]]
  
====Structs====
+
====Struts====
 
#Author - Open
 
#Author - Open
# [[CRV2_FrameworkSpecIssuesStructs|Put content here]]
+
# [[CRV2_FrameworkSpecIssuesStruts|Put content here]]
  
 
====Drupal====
 
====Drupal====
 
#Author Open
 
#Author Open
# [[CRV2_FrameworkSpecIssuesDurpal|Put content here]]
+
# [[CRV2_FrameworkSpecIssuesDrupal|Put content here]]
  
 
====Ruby on Rails====
 
====Ruby on Rails====
Line 548: Line 543:
 
# [[CRV2_CodeReviewAgile|Put content here]]
 
# [[CRV2_CodeReviewAgile|Put content here]]
  
 +
=Code Review for Backdoors=
 +
#Author Yiannis Pavlosoglou
 +
The review of a piece of source code for backdoors has one excruciating difference to a traditional source code review: The fact that someone with 'commit' or 'write' access to the source code repository has malicious intentions spanning well beyond their current developer remit. Because of this difference, a code review for backdoors is often seen as a very specialised review and can sometimes be considered not a code review per say.
 +
 +
A traditional code review has the objective of determining if a vulnerability is present within the code, further to this if the vulnerability is exploitable and under what conditions. A code review for backdoors has the objective to determine if a certain portion of the codebase is carrying code that is unnecessary for the logic and implementation of the use cases it serves.
 +
 +
Further to this, the reviewer, looks for the trigger points of that logic. Typical examples include a branch statement going off to a part of assembly or obfuscated code. The reviewer is looking for patterns of abnormality in terms of code segments that would not be expected to be present under normal conditions.
 +
 +
An excellent introduction into how to look for rootkits in the Java programming language can be found [https://www.blackhat.com/presentations/bh-usa-09/WILLIAMS/BHUSA09-Williams-EnterpriseJavaRootkits-PAPER.pdf  here]. In this paper J. Williams covers a variety of backdoor examples including file system access through a web server, as well as time based attacks involving a key aspect of malicious functionality been made available after a certain amount of time. Such examples form the foundation of what any reviewer for back doors should try to automate, regardless of the language in which the review is taking place.
 +
 
=Code Review Tools=
 
=Code Review Tools=
 
https://www.owasp.org/index.php/CRV2_CodeReviewTools
 
https://www.owasp.org/index.php/CRV2_CodeReviewTools

Latest revision as of 01:27, 8 January 2016

OWASP Code Review Guide v2.0:

Forward

  1. Author - Eoin Keary
  2. Previous version to be updated:[[1]]

Content here

Code Review Guide Introduction

  1. Author - Eoin Keary
  2. Previous version to be updated:[[2]]

Content here

What is source code review and Static Analysis

What is Code Review

  1. Author - Zyad Mghazli, Eoin Keary
  2. New Section

Content here

Manual Review - Pros and Cons

  1. Author - Zyad Mghazli, Eoin Keary,Gary David Robinson
  2. New Section
  3. Suggestion: Benchmark of different Stataic Analysis Tools Zyad Mghazli
  4. Put content here

Advantages of Code Review to Development Practices

  1. Author - Gary David Robinson
  2. New Section
  3. Put content here

Why code review

Scope and Objective of secure code review

  1. Author - Ashish Rao
  2. Put content here

We can't hack ourselves secure

  1. Author - Eoin Keary
  2. New Section
  3. Put content here

360 Review: Coupling source code review and Testing / Hybrid Reviews

  1. Author - eoin Keary
  2. New Section
  3. Put content here

Can static code analyzers do it all?

  1. Author - Ashish Rao
  2. New Section
  3. Put content here

Methodology

The code review approach

  1. Author - Johanna Curiel
  2. Put content here

Preparation and context

  1. Author - Gary David Robinson
  2. Previous version to be updated: [[3]]
  3. Put content here

Application Threat Modeling

  1. Author - Larry Conklin
  2. Previous version to be updated: [[4]]
  3. Put content here

Understanding Code layout/Design/Architecture

  1. Author - Open
  2. Put content here

Understanding Business Logic

  1. Put content here

SDLC Integration

  1. Author - Larry Conklin
  2. Previous version to be updated: [[5]]
  3. Put content here

Deployment Models

Secure deployment configurations
  1. Author -
  2. Put content here
  1. New Section
Metrics and code review
  1. Author [email protected]
  2. Previous version to be updated: [[6]]
  3. Put content here
Source and sink reviews
  1. Author - Open
  2. New Section
  3. Put content here
Code review Coverage
  1. Author - Open
  2. Previous version to be updated: [[7]]
  3. Put content here
Design Reviews
  1. Author - Ashish Rao
  • Why to review design?
    • Building security in design - secure by design principle
    • Design Areas to be reviewed
    • Common Design Flaws
  1. Put content here
A Risk based approach to code review
  1. Author - Gary David Robinson
  2. New Section
  • "Doing things right or doing the right things..."
    • "Not all bugs are equal
  1. Put content here

Crawling code

  1. Author - Open
  2. Previous version to be updated: [[8]]
  • API of Interest:
    • Java
    • .NET
    • PHP
    • RUBY
  • Frameworks:
    • Spring
    • .NET MVC
    • Struts
    • Zend
  1. New Section
  • Searching for code in C/C++
  1. Author - Gary David Robinson
  1. Put content here

Code reviews and Compliance

  1. Author -Open
  2. Previous version to be updated: [[9]]
  3. Put content here

Reviewing by Technical Control

Reviewing code for Authentication controls

  1. Author - Gary Robinson
  2. Put content here

Forgot password

  1. Author Abbas Naderi, Larry Conklin
  2. Put content here

CAPTCHA

  1. Author Larry Conklin, Joan Renchie

Content here

Out of Band considerations

  1. Author - Gary Robinson
  2. Previous version to be updated: [[10]]
  3. Put content here

Reviewing code Authorization weakness

  1. Author Eoin Keary .NET MVC added
  2. Put content here

Checking authz upon every request

  1. Author - Abbas Naderi
  2. Put content here

Reducing the attack surface

  1. Author Gary Robinson
  2. Previous version to be updated: [[11]]
  3. Put content here

SSL/TLS Implementations

  1. Author - Eoin Keary
  2. Put content here

Reviewing code for Session handling

  1. Author - Abbas Naderi
  2. Previous version to be updated: [[12]]
  3. Put content here

Reviewing client side code

  1. New Section
  2. Put content here
Javascript
  1. Author - Abbas Naderi
  2. Put content here
JSON
  1. Author - Open
  2. Put content here
Content Security Policy
  1. Author - Open
  2. Put content here
"Jacking"/Framing
  1. Author - Eoin Keary
  2. Put content here
HTML 5?
  1. Author - Open
  2. Put content here
Browser Defenses
  1. Author - Open
  2. Put content here
etc...

Review code for input validation

  1. Author - Open
  2. Put content here
Regex Gotchas
  1. Author - Open
  2. New Section
  3. Put content here
ESAPI
  1. Author - Open
  2. New Section
  3. Internal Link: [[13]]
  4. Put content here
Microsoft Web Protection Library
  1. Author - Michael Hidalgo
  2. New Section
  3. Internal Link: [[14]]
  4. Put content here

Reviewing code for contextual encoding

Overall approach to content encoding and anti XSS

HTML Attribute
  1. Author - Eoin Keary
  2. Put content here
HTML Entity
  1. Author - Eoin Keary
  2. Put content here
Javascript Parameters
  1. Author - Eoin Keary
  2. Put content here
JQuery
  1. Author - Open
  2. Put content here

Reviewing file and resource handling code

  1. Author - Open
  2. Put content here

Resource Exhaustion - error handling

  1. Author - Open
  2. Put content here
native calls
  1. Author Open
  2. Put content here

Reviewing Logging code - Detective Security

  1. Author - Gary Robinson
  • Where to Log
  • What to log
  • What not to log
  • How to log
  1. Internal link: [[15]]
  2. Put content here

Reviewing Error handling and Error messages

  1. Author - Gary David Robinson
  2. Previous version to be updated: [[16]]
  3. Put content here

Reviewing Security alerts

  1. Author - Gary Robinson
  2. Put content here

Review for active defense

  1. Author - Colin Watson
  2. Put content here

Reviewing Secure Storage

  1. Author - Open source
  2. New Section
  3. Put content here

Hashing & Salting - When, How and Where

Encryption
.NET
  1. Author Larry Conklin, Joan Renchie
  2. Previous version to be updated: [[17]]
  • Can we talk about key storage as well i.e. key management for encryption techniques used in the application? - Ashish Rao

Content here

Reviewing by Vulnerability

Review Code for XSS

  1. Author Examples added by Eoin Keary
  2. Previous version to be updated: [[18]]
  3. In reviewing code for XSS - we can give more patterns on "source to sink" patterns for ASP.NET wrf to difference versions and mechanisms to display data in a page - Ashish Rao
  4. Put content here

Persistent - The Anti pattern

  1. Author
  2. Put content here

.NET

  1. Author Johanna Curiel, Eoin Keary
  2. Put content here

.Java

  1. Author Johanna Curiel
  2. Put content here

PHP

  1. Author Abbas Naderi
  2. Put content here

Ruby

  1. Author Open
  2. Put content here

Reflected - The Anti pattern

  1. Put content here

.NET

  1. Author Johanna Curiel
  2. Put content here

.Java

  1. Author Johanna Curiel
  2. Put content here

PHP

  1. Author Abbas Naderi
  2. Put content here

Ruby

  1. Author - Open
  2. Put content here

Stored - The Anti pattern

  1. Author - Johanna Curiel
  2. Put content here

.NET

  1. Author Johanna Curiel
  2. Put content here

.Java

  1. Author Johanna Curiel
  2. Put content here

PHP

  1. Author Johanna Curiel
  2. Put content here

Ruby

  1. Author - Johanna Curiel
  2. Put content here

DOM XSS

  1. Author Larry Conklin
  2. Put content here

JQuery mistakes

  1. Author
  2. Put content here

Reviewing code for SQL Injection

  1. Author Gary Robinson
  2. Previous version to be updated: [[19]]
  3. Put content here

PHP

  1. Author - Mennouchi Islam Azeddine
  2. Put content here

Java

  1. Author - Johanna Curiel
  2. Put content here

.NET

  1. Author - Open
  2. Put content here

HQL

  1. Author - Open
  2. Put content here

The Anti pattern

  1. Author Larry Conklin
  2. Content here

https://www.owasp.org/index.php/CRV2_AntiPattern

PHP

  1. Author -
  2. Put content here

Java

  1. Author -
  2. => Searching for traditional SQL,JPA,JPSQL,Criteria,...
  3. Put content here

.NET

  1. Author Open
  2. Put content here

Ruby

  1. Author - Open
  2. Put content here

Cold Fusion

  1. Author - Open
  2. Put content here

Reviewing code for CSRF Issues

  1. Author Abbas Naderi
  2. Previous version to be updated: [[20]]
  3. This page needs to be deleted. Put content here

(This task has been deleted) Transactional logic / Non idempotent functions / State Changing Functions

  1. Put content here

Reviewing code for poor logic /Business logic/Complex authorization

  1. Author - Open
  2. Put content here

Reviewing Secure Communications

.NET Config

  1. Author Johanna Curiel, Renchie Joan
  2. Put content here

Spring Config

  1. Author - Open
  2. Put content here

HTTP Headers

  1. Author Gary Robinson
  2. Put content here

Tech-Stack pitfalls

  1. Author Open
  2. Put content here

Framework specific Issues

Spring

  1. Author - Open
  2. Put content here

Struts

  1. Author - Open
  2. Put content here

Drupal

  1. Author Open
  2. Put content here

Ruby on Rails

  1. Author - Open
  2. Put content here

Django

  1. Author Open
  2. Put content here

.NET Security / MVC

  1. Author Johanna Curiel, Eoin Keary
  2. Put content here

Security in ASP.NET applications

  1. Author Johanna Curiel
  2. Put content here
Strongly Named Assemblies
  1. Author Johanna Curiel, Larry Conklin
  2. Put content here
Round Tripping
  1. Author - Open
  2. Put content here
How to prevent Round tripping
  1. Author - Open
  2. Author Johanna Curiel
  3. Put content here
Setting the right Configurations
  1. Author Johanna Curiel
  2. Put content here
Authentication Options
  1. Author Johanna Curiel
  2. Put content here
Code Review for Managed Code - .Net 1.0 and up
  1. Author Johanna Curiel
  2. Put content here
Using OWASP Top 10 as your guideline
  1. Author Johanna Curiel
  2. Put content here
Code review for Unsafe Code (C#)
  1. Author Johanna Curiel
  2. Put content here

PHP Specific Issues

  1. Author Open
  2. Put content here

Classic ASP

  1. Author Johanna Curiel
  2. Put content here

C#

  1. Author Open
  2. Put content here

C/C++

  1. Author Open
  2. Put content here

Objective C

  1. Author Open
  2. Put content here

Java

  1. Author Open
  2. Put content here

Android

  1. Author Open
  2. Put content here

Coldfusion

  1. Author Open
  2. Put content here

CodeIgniter

  1. Author Open
  2. Put content here

Security code review for Agile development

  1. Author Carlos Pantelides
  2. Put content here

Code Review for Backdoors

  1. Author Yiannis Pavlosoglou

The review of a piece of source code for backdoors has one excruciating difference to a traditional source code review: The fact that someone with 'commit' or 'write' access to the source code repository has malicious intentions spanning well beyond their current developer remit. Because of this difference, a code review for backdoors is often seen as a very specialised review and can sometimes be considered not a code review per say.

A traditional code review has the objective of determining if a vulnerability is present within the code, further to this if the vulnerability is exploitable and under what conditions. A code review for backdoors has the objective to determine if a certain portion of the codebase is carrying code that is unnecessary for the logic and implementation of the use cases it serves.

Further to this, the reviewer, looks for the trigger points of that logic. Typical examples include a branch statement going off to a part of assembly or obfuscated code. The reviewer is looking for patterns of abnormality in terms of code segments that would not be expected to be present under normal conditions.

An excellent introduction into how to look for rootkits in the Java programming language can be found here. In this paper J. Williams covers a variety of backdoor examples including file system access through a web server, as well as time based attacks involving a key aspect of malicious functionality been made available after a certain amount of time. Such examples form the foundation of what any reviewer for back doors should try to automate, regardless of the language in which the review is taking place.

Code Review Tools

https://www.owasp.org/index.php/CRV2_CodeReviewTools