Static Analysis In Software Security

Size: px
Start display at page:

Download "Static Analysis In Software Security"

Transcription

1 Static Analysis In Software Security Project Report For Summer Project At Institute for Development and Research in Banking Technology May 1- June 30, 2013 By: Krishnendu Saha Indian Institute of Technology, Kharagpur Guide: Dr. V.Radha Institute for Development and Research in Banking Technology, Hyderabad 1

2 CERTIFICATE OF COMPLETION This is to certify that Mr Krishnendu Saha has successfully completed Summer Project on Static Analysis in Software Security" under the guidance of Dr. V.Radha, IDRBT. The Duration of this Project was from May 1, 2013 to June 30, Dr. V.Radha Institute for Development and Research in Banking Technology (Guide) 2

3 Abstract Security is sometimes considered as perimeter security i.e. restricting attackers from reaching deep inside our enterprise. But to be totally secure, software must be without any weakness that may go wrong even under some internal causes. So security should be concerned through out al the process of software development. That is where the utility of static analysis tools come.they can find out vulnerability just by looking at the source code at the time of coding itself thus saving software testing time as much less vulnerable code. In this project I have built some code checker that works as plugins of Eclipse IDE for C/C++ language. Though C is a highly used language many of its library functions are vulnerable. 3

4 CONTENTS Topics Page 1. Introduction: Static Analysis In context of Software Security Static Analysis Definition Working Procedure Build Model Perform Analysis Present Results Ways of Implementing Static Analysis Tools My Static Analysis Tool Implementation Implementation Tools Hardware Details Software Details Eclipse IDE Codan PDE Implemention And Results Future Work Scope Limitations Conclusions References

5 1.Introduction: In this digital age we use software to in every phase of our life whether it be our day to day articles or satellites in outer space. Softwares automate totally or partially the things we use. So a small mistake may lead to a huge apocalypse. Hence softwares should be reliable for our own safety. Also there are bunch of people ( hackers) who tries to jeopardize the system. Cyber threat is a matter of huge concern these days. Software security is the practice of building software to be secure and function properly under malicious attack. The traditional way of making software less vulnerable is to test it with different sets of inputs thus finding out areas of weaknesses.but if we can apply our knowledge about common vulnerabilities at the time of building it then the huge cost, effort and time can be saved. And here comes the importance the importance of static analysis. After all an attacker becomes successful if there is weakness in code. If the vulnerable points are reduced then we may demand our software to be much more fail proof. 5

6 1.1. Static Analysis In context of Software Security : Software security means working of software correctly (giving correct outputs) under all possible situations even under malicious attacks (i.e. intentionally trying to find software weaknesses and exploit them ). Software Security is sometimes thought as security features cryptographic ciphers, passwords, and access control mechanisms. But For a program to be secure, all portions of the program must be secure, not just the bits that explicitly address security. In many cases, security failings are not related to security features at all. In conventional and mostly used way software security is considered in test and field phases of software building. But those are actually effort to make up coding malpractices. Dynamic Analysis,Firewall Virus Scanner, Penetration Detection, Intrusion Detection The root to security issues lies in coding malpractices and using vulnerable Library functions and API s. So security issues must be considered during coding with faulty library functions and in the early stages of software development. 6

7 The root to security issues lies in coding malpractices and using vulnerable Library functions and API s. So security issues must be considered during coding with faulty library functions and in the early stages of software development. Static Analysis Architectural risk Analysis Security requirements It is easier to fix the problems in the development stages as they are simple. But in testing phase if some bugs appears then it may require to recheck the whole programme again. 7

8 2.Static Analysis: 2.1. Definition : Static analysis is analysing the source code of software without executing it Working Procedure : It is divided in four steps. 1.Build Model 2. Perform Analysis: Performing analysis needs another basic step of gathering security knowledge. 2.1Security Knowledge 3.Present Results 8

9 1)Lexical analysis 2)Parse Tree and AST Analysis 3) Control Flow Graph Analysis 4)Data Flow Diagram Analysis 5)Taint Analysis 6)Value Range Propagation 1)error (severe threat), 2)warning (may or may not be a security bug but obeying it is good practice), 3)info(good coding practice but no threat 1)Lexed Tokens 2)Parse Tree 3)Abstract Syntax Tree 4)Control Flow Graph 5)Data Flow Diagram 1) Common Weakness Enumeration (CWE) ( 2) OWASP Honeycomb Project ( ycomb_project) 3) SAMATE group at NIST ( ) 9

10 Build model : In analysis to understand the code by analysis tools it needs to be represented by data structures that most nearly represents the property to be analysed. Those basic data structures are actually build by compilers and static analysis tools borrow them and. Those data-structures are lexer tokens,parse tree,abstract syntax tree (AST), control flow graph(cfg), dataflow diagram(dfd).this models are build by compilers or static analysis tools or by both. Models Used in Analysis: Lexed Tokens The source code converted into a token stream discarding unimportant whitespaces and comments. E.g..: Source Code: if (ret) mat[x][y] = END_VAL; This code produces the following sequence of tokens: Lexer Output: IF LPAREN ID(ret) RPAREN ID(mat) LBRACKET ID(x) RBRACKET LBRACKET ID(y) RBRACKET EQUAL ID(END_VAL) SEMI Some of the token needs extra one property like name for identifier(id). These token stream is subsequently used in making parse tree. Parse Tree : A language parser uses a context-free grammar (CFG) to match the token stream. The grammar consists of a set of productions that describe the symbols (elements) in the language. The parser performs a derivation by matching the token stream against the production rules. If each symbol is connected to the symbol from which it was derived, a parse tree is formed. 10

11 Parser Output: Parse Tree Control Flow Graph: It is the graphical way of representing all possible way the flow of programme may occur. Each node in CFG represents a basic block that has no branching or looping. CFG gives the idea of Cyclomatic complexity that directly shows the no. of possibility of errors. During dynamic analysis it also helps us to get exhaustive sets of test cases. Source Code : if (a > b) { nconsec = 0; } else { s1 = gethexchar(1); s2 = gethexchar(2); } return nconsec; 11

12 CFG Builder output: If(a>b) nconsec=0; s1 = gethexchar(); s2= gethexchar(); return nconsec; Data Flow Diagram: Data Flow Diagram shows all the possible path of data in put and output and data transfer between different entities within the software thus giving us the points where data should be validated and setting up trust boundaries. 12

13 Perform Analysis :Analysis is performed on the tokens or nodes of tree or graphs. Lexical analysis : Simplest of all analysis techniques helps in checking syntactical errors and it uses in most cases regular pattern matching. Not much useful than detecting wrong identifier names or function names. Tools using lexical analysis techniques are ITS4, RATS, and Flawfinder. Parse Tree and AST Analysis : These representations helps us understanding of semantics of the program. So helps us in finding deviation of rules of grammar and security rules like a if block should start and end with curly bracket. Most modern compilers does these kind of checking and violation comes as a parse error. Codan the code analysis platform in CDT(C/C+ Development Tools,eclipse plugin ) uses AST to built checkers. Similar Platform PMD,Crystal (eclipse plugins) uses AST for detecting errors in Java. Control Flow Graph Analysis: AST and parse trees though appear useful enough in detecting most of rule violations they fail in case of rules that apply for branching in code.as example we may take that opened file or database should be closed once and only once in a flow control of a programme. CFG is analysed in a number of stages starting from basic block, and then a procedure( method or function) and then to a bigger module like class. Fortify Source Code Analyser, Klockwork. Data Flow Diagram Analysis: A Data Flow Diagram (DFD) with security-specific annotations is used to describe how data enters, leaves and traverses the system: it shows data sources and destinations, relevant processes that data goes through and trust boundaries in the system. A DFD has a fixed set of component types: Process, HighLevelProcess, Data Store and External Interactor. A process is concern of DFD diagram. A High Level program is represented by hierarchical multistage DFDs.A datastore may be a database, a file, or the Registry. An ExternalInteractor represents an entity that exists outside the system being modelled and which interacts with the system at an entry point, typically a human. The data flows are represented by arrows. A DFD used in threat modelling often separates elements that have different privilege levels using a Boundary to describe locations where a privilege impersonation on the part of an adversary could occur, a machine or process boundary may be crossed, etc. 13

14 Taint Analysis:The concept of tainting refers to marking data coming from an untrusted source as tainted and propagating its status to all locations where the data is used. A security policy specifies what uses of untrusted data are allowed or restricted. An attempt to use tainted data is a violation of this policy is an indication of a vulnerability. Tainted data should not be used in any function which modifies files, directories and processes, or executes external programs. If the rule is violated then the program should be aborted. 1. Initialize all variables as NOT TAINTED. 2. Find all calls to functions that read data from an untrusted source. Mark the values returned by these functions as TAINTED. 3. Propagate the tainted values through the program. If a tainted value is used in an expression, mark the result of the expression as TAINTED. 4. Repeat step 3 until a fixed point is reached. 5. Find all calls to potentially vulnerable functions. If one of their arguments is tainted, report this as a vulnerability. 1 unsigned int n; 2 char src[10], dst[10]; 3 n = read_int (); 4 if (n <= sizeof (dst)) 5 memcpy (src, dst, n); /* n is < sizeof (dst) */ 6 else 7 memcpy (src, dst, n); /* n is > sizeof (dst) */ Using Taint analysis memcpy() of both line no. 5 and 7 will be marked as vulnerability where as in actual case 5 is a false positive. So, taint analysis has a high possibility of giving false positive. Value Range Propagation: In this case the tainted variables should also carry a range of its possible values. If some vulnerable function uses that variable then it may be checked that the value range of that variable still makes the function vulnerable or not. Thus we may avoid some false positives. 14

15 1 unsigned int n; 2 char src[10], dst[10]; 3 n = read_int (); 4 if (n <= sizeof (dst)) 5 memcpy (src, dst, n); /* n is < sizeof (dst) */ 6 else 7 memcpy (src, dst, n); /* n is > sizeof (dst) */ Security Knowledge: The main logic behind these tools is to learn from our past mistakes and attack due to weaknesses in code and prevent them from happening again. There are many such collections of common mistakes done by programmers 1) Common Weakness Enumeration (CWE) ( 2) OWASP Honeycomb project( 3) SAMATE group at NIST ( In these collection of numerous errors there are patterns and repetitive errors and so the most generic problems may be categorized. 15

16 2.2.3.Presenting And Processing Results: The security vulnerabilities are reviewed manually and those are fixed.in some cases the analysers itself give some solution for the problem. The problems are given in different categories like error (severe threat), warning (may or may not be a security bug but obeying it is good practice), info(good coding practice but no threat ). 3.Ways of Implementing Static Analysis Tools: Application of Static Analysis Tools in Practical World: I. Integration with compilers: Static analysis tools are part and parcel of modern compilers. They does all the basic checking like type checking,style checking, parse errors, identifiers never used many others.but it needs compilation of whole programme. E.g..- gcc compiler (c language) II. Integration with IDEs: IDEs (Integrated Development Environment ) use vulnerability checkers as add-ons or plugins to show the errors in coding in the editors while writing.this is the most useful form of static analysis tools as it not only shows error but also gives quick fixes. Eg.- Eclipse,Netbeans III. Stand Alone Platforms: This kind of tools are generally the most sophisticated ones and detects most complicated problems.they are exclusively built for detecting software weaknesses. Eg.- Fortify Source code Analyser,Klockwork,Ounce My Static analysis Tools implementation : I have built static analysis tools for an IDE (Integrated Development Environment). The IDE chosen is Eclipse,one of the most used platform by software developers. This tools are integrated as plugins to eclipse and runs in the back end to find error in code 16

17 4.Implementation Tools : 4.1 Hardware Details: Model : Dell PC Processor : Intel(R) Core 2 Duo CPU Installed memory (RAM) : 4GB System type : 64-bit OS 4.2 Software Details: Operating System : Windows 7 Basic Softwares Used : Jdk 1.6, Mingw compiler, Eclipse IDE Eclipse IDE : Eclipse is one of the most used IDE for java. But it also gives tools to build software in other languages. As here I have used CDT (C/C++ Development Tools ) which comes as plugin to the eclipse Codan(Code Analysis): Codan which is a lightweight static analysis framework in CDT ( CDT is Eclipse's C/C++ Development Tools) which would perform real time analysis on the code to find common defects, violation of policies, etc. Framework contains common components and APIs that is shared between static analysis tools for C/C++, such as: Profile Editor (Problem Preferences) We can enable or disable our checker Severity of the Problem is specified. We can change the severity of the problem When we keep cursor on the checker the description about the checker is displayed. 17

18 How to build an AST of a C/C++ source : Windows >Show view > Others >C/C++>DOM AST How to get CDT: Help> Install New Software>Add the Url: And then select CDT PDE (Plugin Development Environment): To develop eclipse plugins there is a plugin development platform. The ways of building plugins may be seen from reference 4. The Basic steps of Plugin Development are: 1.First Go to File> New project > Plugin project 2. Then the MANIFEST.MF in META-INF is edited Add Dependencies (i.e. The plugins that are needed to run this checker plugin) ADD Runtime ADD Extensions (e.g. These checkers need a point of extension org.eclipse.cdt.codan.core.checkers) Add checker by right click>new>checker.give class name as name of its source code. Under checker Add problem by right click>new>problem. And there message that should be shown when error occurs and default enable etc. On the Overview page in the Exporting part click on Organize Manifests Wizard >finish, Externalize Strings Wizard >finish At last in the Export Wizard portion Archive file give the name of your plugin. Now this.zip folder may be included in eclipse plugins folder to make it permanent in codan. 3.To test the plugin run it and then another eclipse window opens.right faulty code that your checker is supposed to catch. You can see error and messages in the editor. 18

19 5.Implementation and Results: C language(so also in C++) has a lots of vulnerable library function which may be used to crash a program if the arguments are unchecked and unsanitized. So we may use some checker to make the programmer aware about such vulnerable functions or whether the values of arguments taken have no potential threat. Codan Plugins developed: I. For C function int strncpy(char * dst, const char* src,size_t n) : It is erroneous to give value of n greater than or equal to size of destination (dst) allocated. So it must be checked when this vulnerable function is used. It is an example of buffer overflow. Algorithm Used : 1) First find a call to function strncpy() by viewing all call to ICPPASTFunctionCallExpression and then checking whether first IASTNode is string strncpy. If it is true then get the String value of the next three nodes. The first string is the name of destination and third String is string form of value of n. 2) Now we need to get the space allocated for destination character pointer. For that we may visit all the IASTDeclarationStatements made and find out the declaration of the destination character pointer and the space allocated. 3) Last step is to compare the allocated space of destination character pointer and the value of n. 19

20 Source Code : AST: 20

21 Limitations And Inefficiency of the checker: 1)In the 2 nd step of the algorithm the size of the allocated space of destination is determined by accessing the nodes to proper position. But this method is inappropriate as space allocation may be done in two different ways.so the solution to these may be maintaining a symbol table during static analysis as done during compilation. II. For C function fopen(stream, r ) and fopen( stream, w ) : When a file is opened in r mode then the file should already be present in the given stream and if the file is opened in write mode then we should warn the programmer about being the file overwritten. There should be a block before every fopen() function with r or w mode to check those above conditions. Algorithm Used : 1)First check all the ICPPASTFunctionDeclarations for fopen( ) function calls and accessing all its nodes get the name of stream and mode of opening. 2)Then search all ICPPASTIfStatements to see if there is a desired function to check the given conditions above i.e. in this case(read ) access() function which should be in a IASTUnaryExpression (negation ) and there should be a return statement inside the block. But in case of write case there should be access() function with appropriate return statement. 21

22 22

23 III. For C function printf() and its friends [fprintf(),sprintf(),sprintf(), vprintf()] as well as scanf() and its friends sscanf(), fscanf(), vscanf(): All these function takes a format string and all the arguments needed mentioned in format string. Error here may occur in two cases. 1) If number of format specifiers in the format string is not equal to arguments present. 2) If there is no format string. 3) If format specifier and the corresponding argument indicates two different type. Algorithm: 1) Inside a function get account of all the IASTDeclarations and the type of variables. And at the same time see the IASTFunctionCallExpression.If a function declaration is printf or scanf that may be known from its first node, then see the total number of nodes of it ( let be x). 2)The 2 nd node is the format string. A regular expression analysis is done on this node (the string form of this node excluding the first and last character ) and number of substring with java.regex.pattern ( %[-+#0]?[(0-9)*]?[.(0-9)*]?[hlL]?[cdie EfgGosuxXp]) is noted and if it is equal to (x-2) then it is okay otherwise it is an error. 3) To check the third one we will have to check all the format specifier and the corresponding variable type. 23

24 24

25 25

26 6.Future Work Scope : 1)Maintaining a symbol table for all the variables (i.e. type, allocated space, name for easy access of them while needed.this may help in many problems. e.g.- To check all the values possible in the switch argument variable are covered by the cases. 2) Building checkers for other problems. E.g.- i) using some variable without initialization. ii)using some variable after freeing the space. 3) Building static analysis checkers for other languages. 7. Limitation of the Project: 1) To build static analysers there needs to be a platform or otherwise static analysis tool builders will have to build their own suitable compiler. 2) A checker platform by which we may visit all the nodes of CFG and analyse them individually, so that we may be able to solve problems that involves understanding of CFG. e.g.- A file or database that is opened should be closed once and only once in a flow path of CFG from start to end. 26

27 8.Conclusion: Alan Turing, as part of his conception of a general purpose computing machine, showed that algorithms cannot be used to solve all problems. In particular, Turing posed the halting problem, the problem of determining whether a given algorithm terminates (reaches a final state). The proof that the halting problem is undecidable boils down to the fact that the only way to know for sure what an algorithm will do is to carry it out.so that means that a static analysis tool is not enough to find out if an algorithm can successfully handle a problem.the only way to do this is dynamic analysis. 9.References: 1. Secure programming with Static Analysis(By Brian Chess, Jacob West Addison Wesley) 2. Compilers (By Aho Sethi Ullman ) 3. Checking Threat Modelling Data Flow Diagrams for Implementation Conformance and Security( Daniel Wang-Peter Torr) 4.Control flow graph Generator (By Aldi Alimucaj) 5. How to Write Your Own Eclipse Plug-ins Presentation (by Beth Tibbits IBM) 6. ITS4 A Static Vulnerability Scanner for C and C Code John Viega JT Bloch Tadayoshi Kohno Gary McGraw 7.Static Analysis tools (University of Toronto) Codan: a C/C++ Static Analysis Framework for CDT 27

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)

Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6) Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking

More information

Using Eclipse CDT/PTP for Static Analysis

Using Eclipse CDT/PTP for Static Analysis PTP User-Developer Workshop Sept 18-20, 2012 Using Eclipse CDT/PTP for Static Analysis Beth R. Tibbitts IBM STG tibbitts@us.ibm.com "This material is based upon work supported by the Defense Advanced Research

More information

A Test Suite for Basic CWE Effectiveness. Paul E. Black. paul.black@nist.gov. http://samate.nist.gov/

A Test Suite for Basic CWE Effectiveness. Paul E. Black. paul.black@nist.gov. http://samate.nist.gov/ A Test Suite for Basic CWE Effectiveness Paul E. Black paul.black@nist.gov http://samate.nist.gov/ Static Analysis Tool Exposition (SATE V) News l We choose test cases by end of May l Tool output uploaded

More information

Scanning and parsing. Topics. Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm

Scanning and parsing. Topics. Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm Scanning and Parsing Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm Today Outline of planned topics for course Overall structure of a compiler Lexical analysis

More information

Sources: On the Web: Slides will be available on:

Sources: On the Web: Slides will be available on: C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,

More information

The programming language C. sws1 1

The programming language C. sws1 1 The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan

More information

X05. An Overview of Source Code Scanning Tools. Loulwa Salem. Las Vegas, NV. IBM Corporation 2006. IBM System p, AIX 5L & Linux Technical University

X05. An Overview of Source Code Scanning Tools. Loulwa Salem. Las Vegas, NV. IBM Corporation 2006. IBM System p, AIX 5L & Linux Technical University X05 An Overview of Source Code Scanning Tools Loulwa Salem Las Vegas, NV Objectives This session will introduce better coding practices and tools available to aid developers in producing more secure code.

More information

03 - Lexical Analysis

03 - Lexical Analysis 03 - Lexical Analysis First, let s see a simplified overview of the compilation process: source code file (sequence of char) Step 2: parsing (syntax analysis) arse Tree Step 1: scanning (lexical analysis)

More information

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language

More information

Compiler Construction

Compiler Construction Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation

More information

Secure Programming with Static Analysis. Jacob West jacob@fortify.com

Secure Programming with Static Analysis. Jacob West jacob@fortify.com Secure Programming with Static Analysis Jacob West jacob@fortify.com Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between

More information

Software Security Testing

Software Security Testing Software Security Testing Elizabeth Sanders Department of Electrical & Computer Engineering Missouri University of Science and Technology ejwxcf@mst.edu 2015 Elizabeth Sanders Pop Quiz What topics am I

More information

CA4003 - Compiler Construction

CA4003 - Compiler Construction CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing

More information

The Need for Fourth Generation Static Analysis Tools for Security From Bugs to Flaws

The Need for Fourth Generation Static Analysis Tools for Security From Bugs to Flaws The Need for Fourth Generation Static Analysis Tools for Security From Bugs to Flaws By Evgeny Lebanidze Senior Security Consultant Cigital, Inc. This paper discusses some of the limitations of the current

More information

Software security assessment based on static analysis

Software security assessment based on static analysis Software security assessment based on static analysis Christèle Faure Séminaire SSI et méthodes formelles Réalisé dans le projet Baccarat cofinancé par l union européenne Context > 200 static tools for

More information

PHP Debugging. Draft: March 19, 2013 2013 Christopher Vickery

PHP Debugging. Draft: March 19, 2013 2013 Christopher Vickery PHP Debugging Draft: March 19, 2013 2013 Christopher Vickery Introduction Debugging is the art of locating errors in your code. There are three types of errors to deal with: 1. Syntax errors: When code

More information

Textual Modeling Languages

Textual Modeling Languages Textual Modeling Languages Slides 4-31 and 38-40 of this lecture are reused from the Model Engineering course at TU Vienna with the kind permission of Prof. Gerti Kappel (head of the Business Informatics

More information

Secure Software Programming and Vulnerability Analysis

Secure Software Programming and Vulnerability Analysis Secure Software Programming and Vulnerability Analysis Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Testing and Source Code Auditing Secure Software Programming 2 Overview

More information

Automatic vs. Manual Code Analysis

Automatic vs. Manual Code Analysis Automatic vs. Manual Code Analysis 2009-11-17 Ari Kesäniemi Senior Security Architect Nixu Oy ari.kesaniemi@nixu.com Copyright The Foundation Permission is granted to copy, distribute and/or modify this

More information

Language Processing Systems

Language Processing Systems Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to hamada@u-aizu.ac.jp Course materials at www.u-aizu.ac.jp/~hamada/education.html

More information

Lecture 9. Semantic Analysis Scoping and Symbol Table

Lecture 9. Semantic Analysis Scoping and Symbol Table Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax

More information

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS) KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL

More information

Threat Modeling. Frank Piessens (Frank.Piessens@cs.kuleuven.be ) KATHOLIEKE UNIVERSITEIT LEUVEN

Threat Modeling. Frank Piessens (Frank.Piessens@cs.kuleuven.be ) KATHOLIEKE UNIVERSITEIT LEUVEN Threat Modeling Frank Piessens (Frank.Piessens@cs.kuleuven.be ) Secappdev 2007 1 Overview Introduction Key Concepts Threats, Vulnerabilities, Countermeasures Example Microsoft s Threat Modeling Process

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 7 Scanner Parser Project Wednesday, September 7 DUE: Wednesday, September 21 This

More information

Transparent Monitoring of a Process Self in a Virtual Environment

Transparent Monitoring of a Process Self in a Virtual Environment Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

Lumousoft Visual Programming Language and its IDE

Lumousoft Visual Programming Language and its IDE Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration

More information

RIPS - A static source code analyser for vulnerabilities in PHP scripts

RIPS - A static source code analyser for vulnerabilities in PHP scripts RIPS - A static source code analyser for vulnerabilities in PHP scripts Johannes Dahse 1 Introduction The amount of websites have increased rapidly during the last years. While websites consisted mostly

More information

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint) TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions

More information

Static Techniques for Vulnerability Detection

Static Techniques for Vulnerability Detection Static Techniques for Vulnerability Detection Kamran Zafar Asad Ali /LQN SLQJVXQLYHUVLW\6ZHGHQ (PDLO^NDP]DDVDDO`#VWXGHQWOLXVH $EVWUDFW )RU WKH ODVW \HDUV WKH LPSRUWDQFH RI EXLOGLQJ VHFXUH VRIWZDUH LV EHFRPLQJ

More information

Measuring the Effect of Code Complexity on Static Analysis Results

Measuring the Effect of Code Complexity on Static Analysis Results Measuring the Effect of Code Complexity on Static Analysis Results James Walden, Adam Messer, and Alex Kuhl Department of Computer Science Northern Kentucky University Highland Heights, KY 41099 Abstract.

More information

How Compilers Work. by Walter Bright. Digital Mars

How Compilers Work. by Walter Bright. Digital Mars How Compilers Work by Walter Bright Digital Mars Compilers I've Built D programming language C++ C Javascript Java A.B.E.L Compiler Compilers Regex Lex Yacc Spirit Do only the easiest part Not very customizable

More information

Security Testing. How security testing is different Types of security attacks Threat modelling

Security Testing. How security testing is different Types of security attacks Threat modelling Security Testing How security testing is different Types of security attacks Threat modelling Note: focus is on security of applications (not networks, operating systems) Security testing is about making

More information

I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich

I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application

More information

Compiler Construction

Compiler Construction Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from

More information

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 66 CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 5.1 INTRODUCTION In this research work, two new techniques have been proposed for addressing the problem of SQL injection attacks, one

More information

Programming Project 1: Lexical Analyzer (Scanner)

Programming Project 1: Lexical Analyzer (Scanner) CS 331 Compilers Fall 2015 Programming Project 1: Lexical Analyzer (Scanner) Prof. Szajda Due Tuesday, September 15, 11:59:59 pm 1 Overview of the Programming Project Programming projects I IV will direct

More information

csce4313 Programming Languages Scanner (pass/fail)

csce4313 Programming Languages Scanner (pass/fail) csce4313 Programming Languages Scanner (pass/fail) John C. Lusth Revision Date: January 18, 2005 This is your first pass/fail assignment. You may develop your code using any procedural language, but you

More information

Securing Network Software using Static Analysis

Securing Network Software using Static Analysis Securing Network Software using Static Analysis Lauri Kolmonen Helsinki University of Technology lauri.kolmonen@hut.fi Abstract Writing network software is not easy and developing secure network software

More information

How To Detect A Buffer Overflow Vulnerability In Binary Code

How To Detect A Buffer Overflow Vulnerability In Binary Code Buffer Overflow Vulnerability Detection in the Binary Code Shehab Gamal El-Dien, Reda Salama, Ahmed Eshak shehab@ispofegypt.com, redasalama@hotmail.com, a_issac@sakhr.com Al-Azhar University, Faculty of

More information

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam. Compilers Spring term Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.es Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer

More information

Semantic Analysis: Types and Type Checking

Semantic Analysis: Types and Type Checking Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors

More information

Smooks Dev Tools Reference Guide. Version: 1.1.0.GA

Smooks Dev Tools Reference Guide. Version: 1.1.0.GA Smooks Dev Tools Reference Guide Version: 1.1.0.GA Smooks Dev Tools Reference Guide 1. Introduction... 1 1.1. Key Features of Smooks Tools... 1 1.2. What is Smooks?... 1 1.3. What is Smooks Tools?... 2

More information

Programming Languages CIS 443

Programming Languages CIS 443 Course Objectives Programming Languages CIS 443 0.1 Lexical analysis Syntax Semantics Functional programming Variable lifetime and scoping Parameter passing Object-oriented programming Continuations Exception

More information

-.% . /(.0/.1 . 201 . ) 53%/(01 . 6 (01 (%((. * 7071 (%%2 $,( . 8 / 9!0/!1 . # (3(0 31.%::((. ;.!0.!1 %2% . ".(0.1 $) (%+"",(%$.(6

-.% . /(.0/.1 . 201 . ) 53%/(01 . 6 (01 (%((. * 7071 (%%2 $,( . 8 / 9!0/!1 . # (3(0 31.%::((. ;.!0.!1 %2% . .(0.1 $) (%+,(%$.(6 !""#"" ""$"$"# $) ""$"*$"# %%&''$ $( (%( $) (%+"",(%$ -.% Number Phase Name Description. /(.0/.1.(((%( $. 201 2,%%%% %$. %(01 3-(4%%($. ) 53%/(01 %%4.%%2%, ($. 6 (01 (%((. * 7071 (%%2. 8 / 9!0/!1 ((((($%

More information

Hunting Vulnerabilities with Graph Databases

Hunting Vulnerabilities with Graph Databases Hunting Vulnerabilities with Graph Databases Fabian fabs Yamaguchi Nico Golde (Qualcomm) INBOT 14 GEORG-AUGUST-UNIVERSITÄT GÖTTINGEN CVE-2013-6381: qeth buffer overflow in snmp ioctl 2 CVE-2013-6381: qeth

More information

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules IBM Operational Decision Manager Version 8 Release 5 Getting Started with Business Rules Note Before using this information and the product it supports, read the information in Notices on page 43. This

More information

Static Analysis Techniques for Testing Application Security. OWASP Austin March 25 th, 2008

Static Analysis Techniques for Testing Application Security. OWASP Austin March 25 th, 2008 Static Analysis Techniques for Testing Application Security OWASP Austin March 25 th, 2008 Dan Cornell dan@denimgroup.com Agenda What is Application Security? What is Static Analysis? Static versus Dynamic

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Scanner-Parser Project Thursday, Feb 7 DUE: Wednesday, Feb 20, 9:00 pm This project

More information

Install guide for Websphere 7.0

Install guide for Websphere 7.0 DOCUMENTATION Install guide for Websphere 7.0 Jahia EE v6.6.1.0 Jahia s next-generation, open source CMS stems from a widely acknowledged vision of enterprise application convergence web, document, search,

More information

1/20/2016 INTRODUCTION

1/20/2016 INTRODUCTION INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We

More information

Compiler I: Syntax Analysis Human Thought

Compiler I: Syntax Analysis Human Thought Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly

More information

Source Code Review Using Static Analysis Tools

Source Code Review Using Static Analysis Tools Source Code Review Using Static Analysis Tools July-August 05 Author: Stavros Moiras Supervisor(s): Stefan Lüders Aimilios Tsouvelekakis CERN openlab Summer Student Report 05 Abstract Many teams at CERN,

More information

Format string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com

Format string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com Format string exploitation on windows Using Immunity Debugger / Python By Abysssec Inc WwW.Abysssec.Com For real beneficiary this post you should have few assembly knowledge and you should know about classic

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University

More information

TOOL EVALUATION REPORT: FORTIFY

TOOL EVALUATION REPORT: FORTIFY TOOL EVALUATION REPORT: FORTIFY Derek D Souza, Yoon Phil Kim, Tim Kral, Tejas Ranade, Somesh Sasalatti ABOUT THE TOOL Background The tool that we have evaluated is the Fortify Source Code Analyzer (Fortify

More information

Braindumps.C2150-810.50 questions

Braindumps.C2150-810.50 questions Braindumps.C2150-810.50 questions Number: C2150-810 Passing Score: 800 Time Limit: 120 min File Version: 5.3 http://www.gratisexam.com/ -810 IBM Security AppScan Source Edition Implementation This is the

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks

More information

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error

More information

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,

More information

MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question.

MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question. Exam Name MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question. 1) The JDK command to compile a class in the file Test.java is A) java Test.java B) java

More information

Visualizing Information Flow through C Programs

Visualizing Information Flow through C Programs Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb

More information

Idea: Measuring the Effect of Code Complexity on Static Analysis Results

Idea: Measuring the Effect of Code Complexity on Static Analysis Results Idea: Measuring the Effect of Code Complexity on Static Analysis Results James Walden, Adam Messer, and Alex Kuhl Department of Computer Science Northern Kentucky University Highland Heights, KY 41099

More information

Static Analyzers. Context. Learning Objectives

Static Analyzers. Context. Learning Objectives Static Analyzers Wolfgang Emmerich Professor of Distributed Computing University College London http://sse.cs.ucl.ac.uk Context Requirements Inception Elaboration Construction Transition Analysis Design

More information

OpenCV on Android Platforms

OpenCV on Android Platforms OpenCV on Android Platforms Marco Moltisanti Image Processing Lab http://iplab.dmi.unict.it moltisanti@dmi.unict.it http://www.dmi.unict.it/~moltisanti Outline Intro System setup Write and build an Android

More information

CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions

CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly

More information

Tutorial: Load Testing with CLIF

Tutorial: Load Testing with CLIF Tutorial: Load Testing with CLIF Bruno Dillenseger, Orange Labs Learning the basic concepts and manipulation of the CLIF load testing platform. Focus on the Eclipse-based GUI. Menu Introduction about Load

More information

A QUICK OVERVIEW OF THE OMNeT++ IDE

A QUICK OVERVIEW OF THE OMNeT++ IDE Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ 4.x Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.

More information

Programming Assignment II Due Date: See online CISC 672 schedule Individual Assignment

Programming Assignment II Due Date: See online CISC 672 schedule Individual Assignment Programming Assignment II Due Date: See online CISC 672 schedule Individual Assignment 1 Overview Programming assignments II V will direct you to design and build a compiler for Cool. Each assignment will

More information

CLC Server Command Line Tools USER MANUAL

CLC Server Command Line Tools USER MANUAL CLC Server Command Line Tools USER MANUAL Manual for CLC Server Command Line Tools 2.5 Windows, Mac OS X and Linux September 4, 2015 This software is for research purposes only. QIAGEN Aarhus A/S Silkeborgvej

More information

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code 1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons

More information

Scan Your Source Code To Locate Weak Spots Early

Scan Your Source Code To Locate Weak Spots Early Scan Your Source Code To Locate Weak Spots Early A WHITE PAPER PREPARED FOR ASPE TECHNOLOGY BY SECURITY INNOVATION www.aspetech.com toll-free: 877-800-5221 Application Security & Vulnerability Testing

More information

Database Application Developer Tools Using Static Analysis and Dynamic Profiling

Database Application Developer Tools Using Static Analysis and Dynamic Profiling Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract

More information

Threat Modeling/ Security Testing. Tarun Banga, Adobe 1. Agenda

Threat Modeling/ Security Testing. Tarun Banga, Adobe 1. Agenda Threat Modeling/ Security Testing Presented by: Tarun Banga Sr. Manager Quality Engineering, Adobe Quality Leader (India) Adobe Systems India Pvt. Ltd. Agenda Security Principles Why Security Testing Security

More information

Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game

Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game Directions: In mobile Applications the Control Model View model works to divide the work within an application.

More information

How To Trace

How To Trace CS510 Software Engineering Dynamic Program Analysis Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se

More information

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40 SOFTWARE DEVELOPMENT, 15.1200.40 STANDARD 1.0 APPLY PROBLEM-SOLVING AND CRITICAL THINKING SKILLS TO INFORMATION 1.1 Describe methods of establishing priorities 1.2 Prepare a plan of work and schedule information

More information

Source Code Security Analysis Tool Functional Specification Version 1.0

Source Code Security Analysis Tool Functional Specification Version 1.0 Special Publication 500-268 Source Code Security Analysis Tool Functional Specification Version 1.0 Paul E. Black Michael Kass Michael Koo Software Diagnostics and Conformance Testing Division Information

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

Web Application Security. Vulnerabilities, Weakness and Countermeasures. Massimo Cotelli CISSP. Secure

Web Application Security. Vulnerabilities, Weakness and Countermeasures. Massimo Cotelli CISSP. Secure Vulnerabilities, Weakness and Countermeasures Massimo Cotelli CISSP Secure : Goal of This Talk Security awareness purpose Know the Web Application vulnerabilities Understand the impacts and consequences

More information

Software quality improvement via pattern matching

Software quality improvement via pattern matching Software quality improvement via pattern matching Radu Kopetz and Pierre-Etienne Moreau INRIA & LORIA {Radu.Kopetz, Pierre-Etienne.Moreau@loria.fr Abstract. Nested if-then-else statements is the most common

More information

Static Analysis Techniques for Testing Application Security. OWASP San Antonio January 31 st, 2008

Static Analysis Techniques for Testing Application Security. OWASP San Antonio January 31 st, 2008 Static Analysis Techniques for Testing Application Security OWASP San Antonio January 31 st, 2008 Dan Cornell dan@denimgroup.com Agenda What is Application Security? What is Static Analysis? Static versus

More information

On the value of hybrid security testing

On the value of hybrid security testing On the value of hybrid security testing Saad Aloteibi and Frank Stajano Computer Laboratory University of Cambridge {firstname.lastname}@cl.cam.ac.uk Abstract. We propose a framework for designing a security

More information

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static

More information

Precise XSS Detection with Static Analysis using String Analysis

Precise XSS Detection with Static Analysis using String Analysis Eindhoven University of Technology Department of Mathematics and Computing Science Precise XSS Detection with Static Analysis using String Analysis By Henri Hambartsumyan Thesis submitted in partial fulfilment

More information

Informatica e Sistemi in Tempo Reale

Informatica e Sistemi in Tempo Reale Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)

More information

Loophole+ with Ethical Hacking and Penetration Testing

Loophole+ with Ethical Hacking and Penetration Testing Loophole+ with Ethical Hacking and Penetration Testing Duration Lecture and Demonstration: 15 Hours Security Challenge: 01 Hours Introduction Security can't be guaranteed. As Clint Eastwood once said,

More information

(General purpose) Program security. What does it mean for a pgm to be secure? Depends whom you ask. Takes a long time to break its security controls.

(General purpose) Program security. What does it mean for a pgm to be secure? Depends whom you ask. Takes a long time to break its security controls. (General purpose) Program security These ideas apply also to OS and DB. Read Chapter 3. What does it mean for a pgm to be secure? Depends whom you ask. Takes a long time to break its security controls.

More information

WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats

WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats WHITE PAPER FortiWeb and the OWASP Top 10 PAGE 2 Introduction The Open Web Application Security project (OWASP) Top Ten provides a powerful awareness document for web application security. The OWASP Top

More information

Freescale Semiconductor, I

Freescale Semiconductor, I nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development

More information

Software Requirement Specification for Web Based Integrated Development Environment. DEVCLOUD Web Based Integrated Development Environment.

Software Requirement Specification for Web Based Integrated Development Environment. DEVCLOUD Web Based Integrated Development Environment. Software Requirement Specification for Web Based Integrated Development Environment DEVCLOUD Web Based Integrated Development Environment TinTin Alican Güçlükol Anıl Paçacı Meriç Taze Serbay Arslanhan

More information

Lab 0 (Setting up your Development Environment) Week 1

Lab 0 (Setting up your Development Environment) Week 1 ECE155: Engineering Design with Embedded Systems Winter 2013 Lab 0 (Setting up your Development Environment) Week 1 Prepared by Kirill Morozov version 1.2 1 Objectives In this lab, you ll familiarize yourself

More information

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc. WA2088 WebSphere Application Server 8.5 Administration on Windows Student Labs Web Age Solutions Inc. Copyright 2013 Web Age Solutions Inc. 1 Table of Contents Directory Paths Used in Labs...3 Lab Notes...4

More information

Effective Java Programming. efficient software development

Effective Java Programming. efficient software development Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of

More information

FINAL DoIT 11.03.2015 - v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES

FINAL DoIT 11.03.2015 - v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES Purpose: The Department of Information Technology (DoIT) is committed to developing secure applications. DoIT s System Development Methodology (SDM) and Application Development requirements ensure that

More information

FORBIDDEN - Ethical Hacking Workshop Duration

FORBIDDEN - Ethical Hacking Workshop Duration Workshop Course Module FORBIDDEN - Ethical Hacking Workshop Duration Lecture and Demonstration : 15 Hours Security Challenge : 01 Hours Introduction Security can't be guaranteed. As Clint Eastwood once

More information

Illustration 1: Diagram of program function and data flow

Illustration 1: Diagram of program function and data flow The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline

More information

COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing

COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing The scanner (or lexical analyzer) of a compiler processes the source program, recognizing

More information

C++ Programming Language

C++ Programming Language C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract

More information