DEPENDABLE CYBER-PHYSICAL SYSTEMS THROUGH CONTROL FLOW MONITORING
|
|
|
- Colin Ellis
- 10 years ago
- Views:
Transcription
1 Submitted for publication. Author Copy - do not redistribute. DEPENDABLE CYBER-PHYSICAL SYSTEMS THROUGH CONTROL FLOW MONITORING By Joel Van Der Woude Senior Thesis in Computer Engineering University of Illinois at Urbana-Champaign Advisor: Prof. Lui Sha (CS) May 2013
2 Abstract Stuxnet, a virus found in Iranian nuclear facilities, proved the feasibility of an attack on an industrial control system. Similar attacks on critical infrastructure such as the power grid or clean water supply could have enormous economic and political implications. In the interest of preventing future attacks on cyber-physical systems we investigate methods of prevention. We explore the benefits of making architecture level changes to the microprocessor as well as leveraging the constraints of many embedded systems in order to prevent binary code injection. Our approach utilizes control flow monitoring to ensure correct behavior of the system. By monitoring the control flow we are able to detect an attack on the cyber-physical system and gracefully fail by switching to a trusted Simplex controller. Our control flow checking mechanism is a stand-alone hardware module implemented with hooks into the pipeline of a LEON3 processor. Our approach avoids incurring high overheads present in software-based approaches, due to the parallel execution of our hardware module. We show that it is possible to detect injected malicious code in such a way that allows us to transition to a trusted Simplex controller in the event of an attack. Subject Keywords: security; cyber-physical systems; embedded systems; control flow; ii
3 Acknowledgments I would like to thank Professor Lui Sha for his willingness to take me on as an undergraduate researcher as well as his guidance throughout the project. I would also like to generally thank the Dependable Cyber Physical Systems group, this is a collaborative work and it would have been impossible without each and every member of the group. I would especially like to thank Research Professor Sibin Mohan for introducing me to the work, the time he spent catching me up to speed and providing direction for this project. I am also especially thankful for Fardin Abdi for all the work he has put into the project, both in planning, design and providing guidance. Stanley Bak and Yi Lu were also important members of this team. Stanley helped out directly with the FPGA implementation as well as providing critical guidance. Yi wrote the critical tool to perform control flow analysis of a binary. Finally, I would like to thank my friends and family for their love and support throughout my academic career. iii
4 Contents 1. Introduction Literature Review Attacks Buffer Overflow return-into-libc Code injection Physical attacks Defenses Control Flow Monitoring Secure Simplex Description of Research Results Attack Model Control Flow Monitoring Implementation Analysis Conclusion Future Work References iv
5 1. Introduction Stuxnet is a virus that was deployed in nuclear refinement facilities in Iran. The virus used a number of previously unknown vulnerabilities to propagate to various control machines and reprogram the programmable logic controllers used to perform the uranium refinement [18]. Stuxnet has highlighted the possibility and effectiveness of an attack on a nation s critical infrastructure and motivates a closer inspection of the security of industrial control systems everywhere. Given the tight constraints of many embedded systems, traditional techniques to prevent against cyber attacks are not necessarily feasible. While general-purpose processors are opening doors for new defensive techniques through increased parallelism, clock speed and memory size, many embedded systems are constrained by timing requirements and small onboard memory sizes. New defenses that are designed with the limitations of embedded/realtime systems in mind are required to adequately protect these systems. Along side the growing importance of cyber security with respect to embedded systems, computer architects are finding themselves unable to keep up with Moore s law, fighting to continue the expected increase in performance. Our research focuses on leveraging this additional chip space to make architecture level changes to microprocessors. With these changes there is opportunity to protect against common cyber attacks that might be leveraged against industrial control systems. By implementing on-chip control flow analysis; we have found we can detect common attacks such as buffer overflows while introducing negligible overhead on the execution of tasks. We have implemented our proposed control flow graph module on an FPGA in the same fabric as a LEON3 soft-core processor. Using minimal hooks into the pipeline we are able to monitor the control flow of the program. By validating the control flow against the control flow graph generated from the initial binary, we are able to detect attacks which modify control flow. After detecting attacks we can leverage the Secure Simplex architecture to safely fail, ensuring liveness to the industrial control system. By switching to a trusted controller, we will be able to restore the untrusted controller to a known state and eventually return to the untrusted, high performance, controller. Section 2 of this paper focuses on the prior research that has been done to make this work possible. Section 3 focuses on the work we have done in this area. Finally, section 4 describes our plans for further work in this area. 1
6 2. Literature Review 2.1 Attacks A survey of embedded processor security enumerates some of the most common vulnerabilities found in embedded control systems. The survey divides the attacks into two types: hardware attacks and software attacks. Hardware attacks are attacks that require physical access to a device while software attacks may be performed remotely [1]. Our research hinges on software attacks and we leave hardware attacks to be mitigated by other means. The major types of software attacks found in embedded systems are: buffer overflows, return-into-libc and code injection attacks [1] Buffer Overflow The CWE/SANS list of the top 25 most dangerous programming errors lists buffer overflows as the third most dangerous vulnerability [2]. A buffer overflow is an attack that exploits blocks of memory whose bounds are not checked at runtime. When the bounds are not checked an attacker may write more data into a buffer than was intended [3]. The two most prevalent types of buffer overflows are stack overflows and heap overflows. Figure 1 - Structure of the stack before and after a buffer overflow attack. In a stack overflow, the attacker is able to overwrite the return address of the current stack frame. Often, the attacker will direct execution back into the buffer where he has placed shellcode, machine code written onto the stack to perform some action [3]. Ultimately this allows the attacker to achieve arbitrary code execution. Figure 1 shows the state of the stack before and after an attack. Figure 2 A program which is vulnerable to a heap overflow by overwriting the value of funcptr. The other common case of a buffer overflow is called a heap overflow. This occurs when more data is written into a structure on the heap than was intended, modifying the adjacent memory locations. A common use of this vulnerability is to overwrite a buffer allocated on the heap to change the value of a function pointer or other critical variable [4]. Doing so allows the attacker to direct execution to some malicious code. Figure 2 displays the source code of a program with a heap overflow. It should be noted that in both a stack overflow and heap overflow, an attacker may choose to not redirect execution by overwriting a function pointer or the return address. Instead, the attacker may choose to simply change a value stored on the stack/heap at a higher memory address. By changing a critical value, the attacker may be able to cause some malicious action. 2
7 2.1.2 return-into-libc Return-into-libc is an attack in which an attacker leverages a buffer overflow in order to direct execution towards a function that has been included in the compiled binary. In this way, it does not require the shellcode commonly used in other types of buffer overflows. Instead it can point to a function such as system() with an argument like /bin/sh [5]. Return-into-libc is a powerful attack because it evades one of the most common defenses against most buffer overflows: a non-executable stack [6]. Figure 3 The state of a stack after an attacker uses a buffer overflow to execute system( /bin/sh ) Code injection Code injection, in the most general sense, is an attack where the attacker finds a way to trick the target system into executing malicious code. Some of the most prevalent code injection attacks today are SQL injections, however, since embedded systems often don t include SQL databases we focus our attention instead on binary code injection. Binary code injection is most often achieved through a buffer overflow including some binary code written onto the stack, or shellcode. By writing the address of the shellcode into the return address of the stack frame, the attacker is able to execute his shellcode and subvert control of the system. Embedded devices, which are designed using the Harvard architecture, were long thought to be immune to code injection attacks due to their separate instruction and data memories. This belief has been shattered recently by successful code injection attacks on an AVR sensor network [7] Physical attacks The survey of embedded processor security lists the following attacks as hardware attacks: evil maid, cold boot, FireWire DMA and bus attacks. The evil maid and cold boot attack are both methods of breaking the encryption and thus confidentiality of a device. The FireWire and bus attacks both allow for an attacker to write data directly to memory and execute it, allowing for arbitrary code execution [1]. 3
8 2.2 Defenses Historically, PaX and ASLR have been the major defenses against attacks. PaX was the first attempt, implementing an execution privilege on memory addresses. This allows the operating system to prevent execution of code on the stack. This, however, can be evaded by heap overflows as well as return-to-libc attacks. The next major technique to emerge was address space layout randomization (ALSR). ALSR randomizes the virtual memory layout of a program in an attempt to prevent attackers from successfully redirecting execution to the right place through a buffer overflow. Techniques to bypass ALSR have been discovered, exploiting the low granularity of randomness to brute force the desired address [14]. There are number of other defenses against buffer overflow attacks [8, 9, 10, 11, 12]. However, we noticed that most of the techniques either did not prevent heap overflows [8, 9, 11, 12], return-to-libc [9, 11, 12] or required a trusted operating system [8, 10, 12]. For embedded systems not running a real-time operating system, another solution would be required. 4
9 2.3 Control Flow Monitoring There has been prior research into verifying the integrity of execution by validating a program s control flow graph (CFG). The aim of control flow integrity (CFI) is to assure that the semantics enforced at the lowest level of execution on the hardware corresponds with the expected behavior as designed by the programmer at a higher level [15]. By considering the series of branches, jumps and calls that traditionally make up a program, it is possible to create a set of states. For each state, there will be a finite set of valid states both preceding and proceeding execution of the state. Restricting the transition of states only to the entry points of states included in the current states set of valid proceeding states allows validation of a CFG. Any transition to a state not included in the CFG is considered to be an attack [15]. Researchers at Microsoft have found a method to guarantee CFI by rewriting a compiled binary to include checks around each control flow operation. Their implementation writes a unique identifier to the beginning of each block of instructions and rewrites the instructions around each control flow operation to verify that the target of the transition has a valid identifier. If the target of a control flow operation does not have a matching identifier, they throw an error and halt execution. They have successfully implemented their model on an x86 architecture running Windows [13]. Microsoft s implementation is especially relevant because of the care they ve taken to ensure the guarantees that they provide. Their formal analysis shows that by considering change of states as either a modification to memory caused by an attacker or by the increment of a program counter valid to an address verified by the control flow graph, they can guarantee that the program counter follows the CFG. The following theorem is taken directly from their work [13]: Let S 0 be a state with code memory M c such that I(M c ) and pc = 0, and let S 1,..., S n be states such that S 0 S 1... S n. Then, for all i 0 (n 1), either S i a S i +1 or the pc at S i +1 is one of the allowed successors for the pc at S i according to the given CFG. Theorem 1 Consider M c to represent the instructions of a program. I(M c) represents a program which starts up safely such that memory has not yet been modified by an attacker. a represents a change in memory caused by an attacker. All credit goes to [13, 15]. 5
10 2.4 Secure Simplex Simplex is a methodology pioneered by Professor Lui Sha and can be described as using simplicity to control complexity. The Simplex architecture uses two separate systems to perform a control task. The first system is a high performance but untrusted implementation, allowing for features that are desirable for the task but may have defects. The second system is a high reliability implementation that might not be the highest performance design but is reliable and often verified [16]. Further work on Simplex created what is now called System Level Simplex, which moves the two safety-critical Simplex modules off the control microprocessor to protect against interference from software related faults. This improves the reliability of the Simplex architecture itself in the presence of possibly faulty design of the high performance control system [17]. Figure 4 A diagram of the Simplex architecture. The circle represents the switch that is used to change from the high-performance controller to the high assurance controller. 6
11 3. Description of Research Results 3.1 Attack Model As we considered the attacks listed above, we quickly found it necessary to begin restricting our attack model. First, we decided we would not consider attacks which required physical access. Since our focus is embedded devices, more specifically industrial control systems, physical access raise a whole gambit of options to maliciously impact the system. These options include physical destruction and other methods not particularly interesting to a computer engineer. Another restriction we have placed is that the system must start safely. What we mean by this is that we do not consider supply chain type attacks where the device was compromised before being able to initialize correctly. Supply chain security is a currently a huge area of research and we defer to the expertise of others on this area. We also assume all key exchanges for any cryptography are successful with no loss of confidentiality. We do assume that the attacker has networked access to the system. One example of this type of access is an attacker who somehow managed to compromise an employee s machine on the network and now can communicate with the embedded device. Another possibility is an attacker who managed to plant some USB or other device that is networked with the rest of the system. We also assume that the industrial control system has unknown vulnerabilities which could be leveraged for an attacker. We believe this to be a realistic assumption given the nature of many embedded devices, as they can be running legacy code for decades without being updated or rewritten. Finally, we assume that our operating system is vulnerable. Again, by nature many embedded systems run legacy code, including operating systems and are not necessarily updated frequently. Due to the continual discovery of vulnerabilities in operating systems, we do not trust the operating system. 7
12 3.2 Control Flow Monitoring After we described our model and evaluated some of the most common attacks on embedded systems, we noticed a common theme, arbitrary code execution. By monitoring the execution flow of a program, and cross validating it against the expected CFG we are able to detect attacks that redirect control flow. We refer back to [13] for the formal analysis of this method. In order to ensure CFI, it is first necessary to generate a control flow graph. Our approach uses a tool to generate the CFG from the compiled binary. This approach allows for integration with legacy code bases without a rewrite of the code or even possession of the source code. It is also flexible across different architectures with only minor changes required in order to generate the CFG from the binary. (1) (2) Figure 5 Figure 5.1 highlights the relevant control flow instructions and their possible destinations. Figure 5.2 highlights the different states of control flow we will store information about. To generate the CFG, we enumerate all of the control flow instructions in the program: namely variations of branches, jumps and calls. Each control flow instruction is recorded with its relative offset into the code, the number of instructions until the next control flow operation and the index of the proceeding valid control flow instructions along with flag bits to describe whether it is a call or a return. We consider this set of information to describe a state in the control flow. 8
13 ID Address Instructions Taken Not Taken Flags 1 0x NULL 2 0x CALL 3 0x c NULL 4 0x c CALL 5 0x c CALL 6 0x RET 7 0x400019b4 X 0 0 RET 8 0x40001ac8 X 0 0 RET Figure 6 Shows the control flow information taken from the binary for the main function in Figure 5. The flag bits determine if any operation must be done on the hardware stack. For branches we explicitly list the index of the state if the branch is taken and the index of the state if the branch is not taken. For direct calls and jumps we know that it should always transition to the given state so we set both taken and not taken to the target state. When we do a call or return, our module pushes or pops the return address to the hardware stack, borrowing from SmashGuard, in order to validate on the return [11]. An example binary and it s corresponding CFG information can be found in Figure 5 and Figure 6 respectively. However, for indirect calls or jumps, that are the result of a function pointer or a jump table, we must enumerate all the possible targets of the instruction. This enumeration requires more in depth analysis and is a point of continued research. A naïve implementation would allow an indirect call or jump to target any memory address. However, this could result in an attacker targeting dangerous targets such as the system() call in Unix systems. A tighter implementation would restrict the possible targets to a subset of the states described by the CFG. This will require closer analysis of the binary to determine the valid intended targets. 9
14 3.3 Implementation We have integrated a control flow-checking module into the design of the LEON3 soft-core processor. The LEON3 is a 32-bit synthesizable VHDL model of a SPARC processor. We utilize excess fabric on the FPGA to implement our module with hooks into the pipeline of the LEON3. Our aim was to introduce minimal changes to the design of the LEON3 and we found we could detect changes from the CFG by only hooking into the program counter. Figure 7 The overview of how our control flow checking module integrates with the Simplex architecture. The decision block drives the switch (in this diagram represented by the circle) to switch control from the untrusted to trusted controller. Our module includes a block of SRAM where the description of the CFG is loaded prior to run time. When execution begins, the first block of CFG information is fetched, which enumerates the next valid states. While this state is executing we count the number of instructions executed and pre-fetch the blocks of information for the possible next states. Once we detect that execution has left this control block we check the current address of the program counter against the possible destination addresses. If there is a match we continue execution, otherwise we raise a flag to transition to the trusted Simplex controller. Below is the basic algorithm used to check the control flow. pc is the value of the program counter. B is the information that describes a block of control flow, which contains {pc, n, S}. B.pc is the address at which the control flow block B begins. B.n is the number of instructions contained in block B. Finally, B.S is the set of all control flow blocks that may occur after B. 10
15 if pc current = pc previous + 1 AND pc current < B.pc + B.n continue; else if pc current == B.pc + B.n if pc current B.S.pc else B = B.S[i] such that B.S[i].pc = pc current continue; transition_to_high_assurance_controller(); Using the above algorithm we are able to detect unexpected variations in control flow. However, this initial implementation does not correctly respond to function calls. When a function is called, the address at which to return is pushed onto the stack. When the function calls return, it resumes execution at that address. In order to correctly handle call/return instructions we design a stack in hardware using a FILO buffer. This implementation is very similar to SmashGuard [11]. We also modify the control flow blocks B to include members c, r and i flags to mark control flow blocks as having a call or return function as well as the index of the next block. if pc current = pc previous + 1 AND pc current < B.pc + B.n continue; else if pc current == B.pc + B.n if B.c == true push B.i B = B.S[i] such that B.S[i].pc = pc current continue; else if B.r == true pop B continue; else if pc current B.S.pc else B = B.S[i] such that B.S[i].pc = pc current continue; transition_to_high_assurance_controller(); 11
16 3.4 Analysis In order to compare the effectiveness of our method with some other common methodologies and related works, we present Figure 6. It is immediately clear that one area of shared weakness is detecting mangled data after a buffer overflow. This is a non-trivial area of work because of the structure of the C language; pointers are not restricted to memory addresses by default. Preventing this type of attack requires validation of each pointer access, ensuring that it falls within the bounds of the high-level object that it represents. There is currently a group of research into this area of verifying safe pointer usage by Professor Iyer and Professor Kalbarczyk at the University of Illinois at Urbana-Champaign. Technique Code Injection Return-to-libc Overwriting Variables Stack Heap Stack Heap Stack Heap PaX Y N N N N N PaX ASLR Y* Y* Y* Y* N N StackGuard Y N Y N N N SmashGuard Y N Y N N N ISA Randomization Y Y N N N N Hardware Support for Y Y N N N N Control Integrity Control Flow Monitoring Y Y Y Y N N Figure 8 List of common attacks enabled through a vulnerable buffer and a number of mitigations against each. An asterisk represents a technique that increases the difficulty of an attack, but does not necessarily prevent an attack from being successful. Aside from the common weakness against attacks that only mangle specific local variables on the stack, our control flow monitoring technique performs very well when compared against previous techniques. By monitoring control flow we are able to detect all changes from expected behavior. This behavior is expected from the results of [13]. While their approach exists in software our implementation is in hardware. By making changes to the architecture we predict that our technique will have a negligible overhead. This is an important distinction; by avoiding adding additional instructions to the binary we avoid any cost to performance, making it very attractive for use in real-time applications. 12
17 4. Conclusion In conclusion, we have implemented a module to detect changes in control flow that may correlate with attacks. In tandem with the Secure Simplex architecture, this module could be used to detect attacks and fail safely in safety critical applications. Possible uses for these components include critical infrastructure, critical systems within cars and planes, even medical devices. 4.1 Future Work However, there is much more work to be done in this area. Continued research towards how to extend these techniques from running on a barebones processor to microprocessors running real-time operating systems is needed. We hypothesize that by using additional hooks into the processor to determine current privilege level stored in the MMU, our module would be able to distinguish between multiple tasks and monitor the control flow of each. Additional research is also needed to determine how the control flow graph size scales with an increasing number of tasks and in the presence of large bodies of code such as a full operating system. Techniques for dynamically generating a control flow graph and loading our module could also create intriguing possibilities for applying our technique to general-purpose processors. Finally, continued research into methods of preventing local variables from being overwritten by a buffer overflow is needed to provide reasonable assurance against that form of attack. 13
18 References [1] A.K. Kanuparthi; R. Karri; G. Ormazabal; S.K. Addepalli, "A Survey of Microarchitecture Support for Embedded Processor Security," VLSI (ISVLSI), 2012 IEEE Computer Society Annual Symposium on, vol., no., pp.368,373, Aug [2] 2011 CWE/SANS Top 25 Most Dangerous Software Errors, Internet: September 13, [April 13, 2013]. [3] A. One. (1996, Nov.). Smashing The Stack For Fun And Profit, Phrack, [online] 14(49). Available: [April 13, 2013]. [4] M. Conover, w00w00 on Heap Overflows, Internet: [April 13, 2013]. [5] Nergal. (2001, Dec.). Advanced return-into-lib(c) exploits (PaX case study), Phrack, [online] 4(58). Available: [April 13, 2013]. [6] Solar Designer, Getting around non-executable stack (and fix), [April 13, 2013]. [7] A. Francillon; C. Castelluccia, Code Injection Attacks on Harvard-Architecture Devices, Preceedings of the 15 th ACM Conference on Computer an Communications Security, vol., no., pp.15,26, Oct [8] C. Cowan; C. Pu; D. Maier; J. Walpole; P. Bakke; S. Beattie; A. Grier; P. Wagle; Q, Zhang, "StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks," (SSYM), Proceedings of the 7th conference on USENIX Security Symposium, vol. 7, no., pp.5,5, [9] M. Milenković; A. Milenković; E. Jovanov, "Hardware Support for Code Integrity in Embedded Processors," (CASES), Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems, vol., no., pp.55,65, [10] V. Kiriansky; D. Bruening; S. P. Amarasinghe, Secure execution via program shepherding, (SSYM) Proceedings of USENIX Security Symposium, vol., no., pp.191,206, [11] H. Ozdoganoglu; T.N. Vijaykumar; C. Brodley; B. Kuperman; A. Jalote, "SmashGuard: A Hardware Solution to Prevent Security Attacks on the Function Return Address," IEEE Transactions on Computers, vol. 55, no. 10, pp.1271,1285, October, [12] G. Kc; A. Keromytis; V. Prevelakis, "Countering Code-Injection Attacks With Instruction-Set Randomization," (CCS) Proceedings of the 10th ACM conference on Computer and communications security, vol., no., pp.272,280, [13] M. Abadi; M. Budiu; U. Erlingsson; J. Ligatti, Control-Flow Integrity: Principles, Implementations and Applications, (TISSEC) ACM Transactions on Information and System Security, vol. 13, no. 4, October,
19 [14] H. Shacham; M. Page; B. Pfaff; E. Goh; N. Modad, On the Effectiveness of Address-Space Randomization, (CCS) Proceedings of the 11th ACM conference on Computer and communications security, [15] M. Abadi; M. Budiu; U. Erlingsson; J. Ligatti, A Theory of Secure Control Flow, (ICFEM) Proceedings of the 7th international conference on Formal Methods and Software Engineering, [16] L. Sha, Using Simplicity to Control Complexity, IEEE Software, July [17] S. Bak; D. Chivukula, O.Adekunle, M. Sun, M. Caccamo, L. Sha, The System-Level Simplex Architecture for Improved Real-Time Embedded System Safety, (RTAS) Proceedings of the th IEEE Symposium on Real-Time and Embedded Technology and Applications, [18] N. Falliere; L. Murchu; E. Chien, W32.Stuxnet Dossier, Internet: 32_stuxnet_dossier.pdf [April 15th, 2013]. 15
International Journal of Computer Science and Network (IJCSN) Volume 1, Issue 5, October 2012 www.ijcsn.org ISSN 2277-5420. Bhopal, M.P.
Prevention of Buffer overflow Attack Blocker Using IDS 1 Pankaj B. Pawar, 2 Malti Nagle, 3 Pankaj K. Kawadkar Abstract 1 PIES Bhopal, RGPV University, 2 PIES Bhopal, RGPV University, 3 PIES Bhopal, RGPV
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
Hardware-Assisted Fine-Grained Control-Flow Integrity: Towards Efficient Protection of Embedded Systems Against Software Exploitation
Hardware-Assisted Fine-Grained Control-Flow Integrity: Towards Efficient Protection of Embedded Systems Against Software Exploitation Lucas Davi, Patrick Koeberl, and Ahmad-Reza Sadeghi Intel Collaborative
Software security. Buffer overflow attacks SQL injections. Lecture 11 EIT060 Computer Security
Software security Buffer overflow attacks SQL injections Lecture 11 EIT060 Computer Security Buffer overflow attacks Buffer overrun is another common term Definition A condition at an interface under which
A Theory of Secure Control Flow
A Theory of Secure Control Flow Martín Abadi 1, Mihai Budiu 2, Úlfar Erlingsson2, and Jay Ligatti 3 1 Computer Science Department, University of California, Santa Cruz 2 Microsoft Research, Silicon Valley
Software Vulnerabilities
Software Vulnerabilities -- stack overflow Code based security Code based security discusses typical vulnerabilities made by programmers that can be exploited by miscreants Implementing safe software in
Defense in Depth: Protecting Against Zero-Day Attacks
Defense in Depth: Protecting Against Zero-Day Attacks Chris McNab FIRST 16, Budapest 2004 Agenda Exploits through the ages Discussion of stack and heap overflows Common attack behavior Defense in depth
Return-Oriented Vulnerabilities in ARM Executables
1 Return-Oriented Vulnerabilities in ARM Executables Zi-Shun Huang Center for Embedded Computer Systems University of California Irvine [email protected] Ian G. Harris Center for Embedded Computer Systems
UNCLASSIFIED Version 1.0 May 2012
Secure By Default: Platforms Computing platforms contain vulnerabilities that can be exploited for malicious purposes. Often exploitation does not require a high degree of expertise, as tools and advice
Reconfigurable Architecture Requirements for Co-Designed Virtual Machines
Reconfigurable Architecture Requirements for Co-Designed Virtual Machines Kenneth B. Kent University of New Brunswick Faculty of Computer Science Fredericton, New Brunswick, Canada [email protected] Micaela Serra
Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX
Overview CISC Developments Over Twenty Years Classic CISC design: Digital VAX VAXÕs RISC successor: PRISM/Alpha IntelÕs ubiquitous 80x86 architecture Ð 8086 through the Pentium Pro (P6) RJS 2/3/97 Philosophy
PFP Technology White Paper
PFP Technology White Paper Summary PFP Cybersecurity solution is an intrusion detection solution based on observing tiny patterns on the processor power consumption. PFP is capable of detecting intrusions
Bypassing Memory Protections: The Future of Exploitation
Bypassing Memory Protections: The Future of Exploitation Alexander Sotirov [email protected] About me Exploit development since 1999 Research into reliable exploitation techniques: Heap Feng Shui in JavaScript
The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation Techniques To appear at USENIX Security & BlackHat USA, 2014
Intelligent Things, Vehicles and Factories: Intel Workshop on Cyberphysical and Mobile Security 2014, Darmstadt, June 11 The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation
Enlisting Hardware Architecture to Thwart Malicious Code Injection
Enlisting Hardware Architecture to Thwart Malicious Code Injection Ruby B. Lee, David K. Karig, John P. McGregor, and Zhijie Shi Princeton Architecture Laboratory for Multimedia and Security (PALMS) Department
Automating Mimicry Attacks Using Static Binary Analysis
Automating Mimicry Attacks Using Static Binary Analysis Christopher Kruegel and Engin Kirda Technical University Vienna [email protected], [email protected] Darren Mutz, William Robertson,
Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
On Demand Loading of Code in MMUless Embedded System
On Demand Loading of Code in MMUless Embedded System Sunil R Gandhi *. Chetan D Pachange, Jr.** Mandar R Vaidya***, Swapnilkumar S Khorate**** *Pune Institute of Computer Technology, Pune INDIA (Mob- 8600867094;
Eugene Tsyrklevich. Ozone HIPS: Unbreakable Windows
Eugene Tsyrklevich Eugene Tsyrklevich has an extensive security background ranging from designing and implementing Host Intrusion Prevention Systems to training people in research, corporate, and military
Unix Security Technologies. Pete Markowsky <peterm[at] ccs.neu.edu>
Unix Security Technologies Pete Markowsky What is this about? The goal of this CPU/SWS are: Introduce you to classic vulnerabilities Get you to understand security advisories Make
Where s the FEEB? The Effectiveness of Instruction Set Randomization
Where s the FEEB? The Effectiveness of Instruction Set Randomization Ana Nora Sovarel David Evans Nathanael Paul University of Virginia, Department of Computer Science http://www.cs.virginia.edu/feeb Abstract
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection
USENIX Security Symposium 2014, San Diego, CA, USA Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection Lucas Davi Intel Collaborative Research Institute for
Attacking Host Intrusion Prevention Systems. Eugene Tsyrklevich [email protected]
Attacking Host Intrusion Prevention Systems Eugene Tsyrklevich [email protected] Agenda Introduction to HIPS Buffer Overflow Protection Operating System Protection Conclusions Demonstration
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Module No. # 01 Lecture No. # 39 System Security Welcome
Return-oriented programming without returns
Faculty of Computer Science Institute for System Architecture, Operating Systems Group Return-oriented programming without urns S. Checkoway, L. Davi, A. Dmitrienko, A. Sadeghi, H. Shacham, M. Winandy
Bypassing Browser Memory Protections in Windows Vista
Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov [email protected] [email protected] Setting back browser security by 10 years Part I: Introduction Thesis Introduction
Application Intrusion Detection
Application Intrusion Detection Drew Miller Black Hat Consulting Application Intrusion Detection Introduction Mitigating Exposures Monitoring Exposures Response Times Proactive Risk Analysis Summary Introduction
Security for Mac Computers in the Enterprise
Security for Mac Computers in the Enterprise October, 2012 Mountain Lion 10.8 Contents Introduction 3 Service and App Protection 4 Gatekeeper 4 Digital Signatures and Developer IDs 4 App Sandboxing 5 Mandatory
Fine-Grained User-Space Security Through Virtualization. Mathias Payer and Thomas R. Gross ETH Zurich
Fine-Grained User-Space Security Through Virtualization Mathias Payer and Thomas R. Gross ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application access
CPA SECURITY CHARACTERISTIC SECURE VOIP CLIENT
26579500 CPA SECURITY CHARACTERISTIC SECURE VOIP CLIENT Version 2.0 Crown Copyright 2013 All Rights Reserved UNCLASSIFIED Page 1 About this document This document describes the features, testing and deployment
Payment Card Industry (PCI) Terminal Software Security. Best Practices
Payment Card Industry (PCI) Terminal Software Security Best Version 1.0 December 2014 Document Changes Date Version Description June 2014 Draft Initial July 23, 2014 Core Redesign for core and other August
Instruction Set Design
Instruction Set Design Instruction Set Architecture: to what purpose? ISA provides the level of abstraction between the software and the hardware One of the most important abstraction in CS It s narrow,
ASSURING INTEGRITY OF DATAFLOW PROCESSING IN CLOUD COMPUTING INFRASTRUCTURE
ASSURING INTEGRITY OF DATAFLOW PROCESSING IN CLOUD COMPUTING INFRASTRUCTURE R.Genga devi 1, K.Anitha 2, M.Murugeshwari 3,S.vidhya 4, Dr.K.Ramasamy 5 1, 2, 3- UG STUDENT, P.S.R.RENGASAMY COLLEGE OF ENGINEERING
Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai 2007. Jens Onno Krah
(DSF) Soft Core Prozessor NIOS II Stand Mai 2007 Jens Onno Krah Cologne University of Applied Sciences www.fh-koeln.de [email protected] NIOS II 1 1 What is Nios II? Altera s Second Generation
CHANCES AND RISKS FOR SECURITY IN MULTICORE PROCESSORS
CHANCES AND RISKS FOR SECURITY IN MULTICORE PROCESSORS Prof. Dr.-Ing. Georg Sigl Institute for Security in Information Technology Technical University Munich [email protected] Fraunhofer Research Institution
Integrated Network Vulnerability Scanning & Penetration Testing SAINTcorporation.com
SAINT Integrated Network Vulnerability Scanning and Penetration Testing www.saintcorporation.com Introduction While network vulnerability scanning is an important tool in proactive network security, penetration
MICROPROCESSOR. Exclusive for IACE Students www.iace.co.in iacehyd.blogspot.in Ph: 9700077455/422 Page 1
MICROPROCESSOR A microprocessor incorporates the functions of a computer s central processing unit (CPU) on a single Integrated (IC), or at most a few integrated circuit. It is a multipurpose, programmable
Center of Academic Excellence Cyber Operations Program 2013 Application
Center of Academic Excellence Cyber Operations Program 2013 Application Name of Institution: Mailing Address of Institution: Date: Institution s President s Name and Official Email Address: Department
INTRUSION PROTECTION AGAINST SQL INJECTION ATTACKS USING REVERSE PROXY
INTRUSION PROTECTION AGAINST SQL INJECTION ATTACKS USING REVERSE PROXY Asst.Prof. S.N.Wandre Computer Engg. Dept. SIT,Lonavala University of Pune, [email protected] Gitanjali Dabhade Monika Ghodake Gayatri
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
Windows Remote Access
Windows Remote Access A newsletter for IT Professionals Education Sector Updates Issue 1 I. Background of Remote Desktop for Windows Remote Desktop Protocol (RDP) is a proprietary protocol developed by
Hypervisors and Virtual Machines
Hypervisors and Virtual Machines Implementation Insights on the x86 Architecture DON REVELLE Don is a performance engineer and Linux systems/kernel programmer, specializing in high-volume UNIX, Web, virtualization,
CHAPTER 7: The CPU and Memory
CHAPTER 7: The CPU and Memory The Architecture of Computer Hardware, Systems Software & Networking: An Information Technology Approach 4th Edition, Irv Englander John Wiley and Sons 2010 PowerPoint slides
Custom Penetration Testing
Custom Penetration Testing Compromising a Vulnerability through Discovery and Custom Exploitation Stephen Sims Advanced Penetration Testing - 2009 SANS 1 Objectives Penetration Testing Precompiled Tools
A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications. Slides by Connor Schnaith
A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications Slides by Connor Schnaith Cross-Site Request Forgery One-click attack, session riding Recorded since 2001 Fourth out of top 25 most
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy 21 June 2010 Table of Contents Introduction Module Specification Ports and Interfaces Approved Algorithms Test Environment Roles
Hardware/Software Co-Design of a Java Virtual Machine
Hardware/Software Co-Design of a Java Virtual Machine Kenneth B. Kent University of Victoria Dept. of Computer Science Victoria, British Columbia, Canada [email protected] Micaela Serra University of Victoria
EMET 4.0 PKI MITIGATION. Neil Sikka DefCon 21
EMET 4.0 PKI MITIGATION Neil Sikka DefCon 21 ABOUT ME Security Engineer on MSRC (Microsoft Security Response Center) I look at 0Days EMET Developer I enjoy doing security research on my free time too:
Considerations In Developing Firewall Selection Criteria. Adeptech Systems, Inc.
Considerations In Developing Firewall Selection Criteria Adeptech Systems, Inc. Table of Contents Introduction... 1 Firewall s Function...1 Firewall Selection Considerations... 1 Firewall Types... 2 Packet
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
MICROPROCESSOR AND MICROCOMPUTER BASICS
Introduction MICROPROCESSOR AND MICROCOMPUTER BASICS At present there are many types and sizes of computers available. These computers are designed and constructed based on digital and Integrated Circuit
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway Abstract High Level Languages (HLLs) are rapidly becoming the standard
90% of data breaches are caused by software vulnerabilities.
90% of data breaches are caused by software vulnerabilities. Get the skills you need to build secure software applications Secure Software Development (SSD) www.ce.ucf.edu/ssd Offered in partnership with
How to Sandbox IIS Automatically without 0 False Positive and Negative
How to Sandbox IIS Automatically without 0 False Positive and Negative Professor Tzi-cker Chiueh Computer Science Department Stony Brook University [email protected] 2/8/06 Blackhat Federal 2006 1 Big
INDUSTRIAL CONTROL SYSTEMS CYBER SECURITY DEMONSTRATION
INDUSTRIAL CONTROL SYSTEMS CYBER SECURITY DEMONSTRATION Prepared for the NRC Fuel Cycle Cyber Security Threat Conference Presented by: Jon Chugg, Ken Rohde Organization(s): INL Date: May 30, 2013 Disclaimer
What is Really Needed to Secure the Internet of Things?
What is Really Needed to Secure the Internet of Things? By Alan Grau, Icon Labs [email protected] The Internet of Things (IoT) has become a ubiquitous term to describe the tens of billions of devices
W ith an estimated 14 billion devices connected to
Renesas Synergy Security Portfolio Delivers Comprehensive Protection from Industrial and IoT Threats Advanced capabilities give developers tools to counter attacks W ith an estimated 14 billion devices
Real-time Java Processor for Monitoring and Test
Real-time Java Processor for Monitoring and Test Martin Zabel, Thomas B. Preußer, Rainer G. Spallek Technische Universität Dresden {zabel,preusser,rgs}@ite.inf.tu-dresden.de Abstract This paper introduces
Detecting Computer Worms in the Cloud
Detecting Computer Worms in the Cloud Sebastian Biedermann and Stefan Katzenbeisser Security Engineering Group Department of Computer Science Technische Universität Darmstadt {biedermann,katzenbeisser}@seceng.informatik.tu-darmstadt.de
Securing software by enforcing data-flow integrity
Securing software by enforcing data-flow integrity Manuel Costa Joint work with: Miguel Castro, Tim Harris Microsoft Research Cambridge University of Cambridge Software is vulnerable use of unsafe languages
picojava TM : A Hardware Implementation of the Java Virtual Machine
picojava TM : A Hardware Implementation of the Java Virtual Machine Marc Tremblay and Michael O Connor Sun Microelectronics Slide 1 The Java picojava Synergy Java s origins lie in improving the consumer
Computer Architecture
Computer Architecture Slide Sets WS 2013/2014 Prof. Dr. Uwe Brinkschulte M.Sc. Benjamin Betting Part 11 Memory Management Computer Architecture Part 11 page 1 of 44 Prof. Dr. Uwe Brinkschulte, M.Sc. Benjamin
The Trivial Cisco IP Phones Compromise
Security analysis of the implications of deploying Cisco Systems SIP-based IP Phones model 7960 Ofir Arkin Founder The Sys-Security Group [email protected] http://www.sys-security.com September 2002
An Overview of Stack Architecture and the PSC 1000 Microprocessor
An Overview of Stack Architecture and the PSC 1000 Microprocessor Introduction A stack is an important data handling structure used in computing. Specifically, a stack is a dynamic set of elements in which
Taxonomic Modeling of Security Threats in Software Defined Networking
Taxonomic Modeling of Security Threats in Software Defined Networking Recent advances in software defined networking (SDN) provide an opportunity to create flexible and secure next-generation networks.
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Trends in Malware DRAFT OUTLINE. Wednesday, October 10, 12
Trends in Malware DRAFT OUTLINE Presentation Synopsis Security is often a game of cat and mouse as security professionals and attackers each vie to stay one step ahead of the other. In this race for dominance,
Exception and Interrupt Handling in ARM
Exception and Interrupt Handling in ARM Architectures and Design Methods for Embedded Systems Summer Semester 2006 Author: Ahmed Fathy Mohammed Abdelrazek Advisor: Dominik Lücke Abstract We discuss exceptions
Design Cycle for Microprocessors
Cycle for Microprocessors Raúl Martínez Intel Barcelona Research Center Cursos de Verano 2010 UCLM Intel Corporation, 2010 Agenda Introduction plan Architecture Microarchitecture Logic Silicon ramp Types
Hardware Assisted Virtualization
Hardware Assisted Virtualization G. Lettieri 21 Oct. 2015 1 Introduction In the hardware-assisted virtualization technique we try to execute the instructions of the target machine directly on the host
Design and Implementation of an On-Chip timing based Permutation Network for Multiprocessor system on Chip
Design and Implementation of an On-Chip timing based Permutation Network for Multiprocessor system on Chip Ms Lavanya Thunuguntla 1, Saritha Sapa 2 1 Associate Professor, Department of ECE, HITAM, Telangana
SECURITY PRACTICES FOR ADVANCED METERING INFRASTRUCTURE Elif Üstündağ Soykan, Seda Demirağ Ersöz 08.05.2014, ICSG 2014
SECURITY PRACTICES FOR ADVANCED METERING INFRASTRUCTURE Elif Üstündağ Soykan, Seda Demirağ Ersöz 08.05.2014, ICSG 2014 Table of Contents Introduction AMI Communication Architecture Security Threats Security
USB Portable Storage Device: Security Problem Definition Summary
USB Portable Storage Device: Security Problem Definition Summary Introduction The USB Portable Storage Device (hereafter referred to as the device or the TOE ) is a portable storage device that provides
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
White Paper How Noah Mobile uses Microsoft Azure Core Services
NoahMobile Documentation White Paper How Noah Mobile uses Microsoft Azure Core Services The Noah Mobile Cloud service is built for the Microsoft Azure platform. The solutions that are part of the Noah
Thick Client Application Security
Thick Client Application Security Arindam Mandal ([email protected]) (http://www.paladion.net) January 2005 This paper discusses the critical vulnerabilities and corresponding risks in a two
Chapter 1 Computer System Overview
Operating Systems: Internals and Design Principles Chapter 1 Computer System Overview Eighth Edition By William Stallings Operating System Exploits the hardware resources of one or more processors Provides
Advanced IBM AIX Heap Exploitation. Tim Shelton V.P. Research & Development HAWK Network Defense, Inc. [email protected]
Advanced IBM AIX Heap Exploitation Tim Shelton V.P. Research & Development HAWK Network Defense, Inc. [email protected] Introduction Our society has become dependent on computers and network systems.
A Unified View of Virtual Machines
A Unified View of Virtual Machines First ACM/USENIX Conference on Virtual Execution Environments J. E. Smith June 2005 Introduction Why are virtual machines interesting? They allow transcending of interfaces
CMSC 421, Operating Systems. Fall 2008. Security. URL: http://www.csee.umbc.edu/~kalpakis/courses/421. Dr. Kalpakis
CMSC 421, Operating Systems. Fall 2008 Security Dr. Kalpakis URL: http://www.csee.umbc.edu/~kalpakis/courses/421 Outline The Security Problem Authentication Program Threats System Threats Securing Systems
Plain English Guide To Common Criteria Requirements In The. Field Device Protection Profile Version 0.75
Plain English Guide To Common Criteria Requirements In The Field Device Protection Profile Version 0.75 Prepared For: Process Control Security Requirements Forum (PCSRF) Prepared By: Digital Bond, Inc.
Threat Modeling. Frank Piessens ([email protected] ) KATHOLIEKE UNIVERSITEIT LEUVEN
Threat Modeling Frank Piessens ([email protected] ) Secappdev 2007 1 Overview Introduction Key Concepts Threats, Vulnerabilities, Countermeasures Example Microsoft s Threat Modeling Process
USB Portable Storage Device: Security Problem Definition Summary
USB Portable Storage Device: Security Problem Definition Summary Introduction The USB Portable Storage Device (hereafter referred to as the device or the TOE ) is a portable storage device that provides
Secure Software Update Service (SSUS ) White Paper
White Paper Secure Software Update Service (SSUS ) White Paper Author: Document Version: r03c Jeffrey Menoher Publish Date: 9/6/2013 Secure. Reliable. Fast Problem Many software updates, including operating
- Table of Contents -
- Table of Contents - 1 INTRODUCTION... 1 1.1 TARGET READERS OF THIS DOCUMENT... 1 1.2 ORGANIZATION OF THIS DOCUMENT... 2 1.3 COMMON CRITERIA STANDARDS DOCUMENTS... 3 1.4 TERMS AND DEFINITIONS... 4 2 OVERVIEW
