AdaCore Technologies for Cyber Security

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Advertisements

Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Software Engineering-II Sir zubair sajid. What’s the difference? Verification – Are you building the product right? – Software must conform to its specification.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development.
Slide: 1 Copyright © 2014 AdaCore Claire Dross, Pavlos Efstathopoulos, David Lesens, David Mentré and Yannick Moy Embedded Real Time Software and Systems.
Ashish Kundu CS590F Purdue 02/12/07 Language-Based Information Flow Security Andrei Sabelfield, Andrew C. Myers Presentation: Ashish Kundu
Using Programmer-Written Compiler Extensions to Catch Security Holes Authors: Ken Ashcraft and Dawson Engler Presented by : Hong Chen CS590F 2/7/2007.
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
An Integration of Program Analysis and Automated Theorem Proving Bill J. Ellis & Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt.
Static code check – Klocwork
CSI 3120, Exception handling, page 1 Exception and Event Handling Credits Robert W. Sebesta, Concepts of Programming Languages, 8 th ed., 2007 Dr. Nathalie.
Software Reliability Methods Sorin Lerner. Software reliability methods: issues What are the issues?
OOP #10: Correctness Fritz Henglein. Wrap-up: Types A type is a collection of objects with common behavior (operations and properties). (Abstract) types.
Achieving Trusted Systems by Providing Security and Reliability Ravishankar K. Iyer, Zbigniew Kalbarczyk, Jun Xu, Shuo Chen, Nithin Nakka and Karthik Pattabiraman.
1 Advanced Material The following slides contain advanced material and are optional.
Chair of Software Engineering Automatic Verification of Computer Programs.
Verification and Validation CIS 376 Bruce R. Maxim UM-Dearborn.
Buffer Overflow Attacks. Memory plays a key part in many computer system functions. It’s a critical component to many internal operations. From mother.
Address Obfuscation: An Efficient Approach to Combat a Broad Range of Memory Error Exploits Sandeep Bhatkar, Daniel C. DuVarney, and R. Sekar Stony Brook.
Java Security Updated May Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security.
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Secure Embedded Processing through Hardware-assisted Run-time Monitoring Zubin Kumar.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Secure Virtual Architecture John Criswell, Arushi Aggarwal, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve University of Illinois at Urbana-Champaign.
Web Application Access to Databases. Logistics Test 2: May 1 st (24 hours) Extra office hours: Friday 2:30 – 4:00 pm Tuesday May 5 th – you can review.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Static program checking and verification Slides: Based.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
15-740/ Oct. 17, 2012 Stefan Muller.  Problem: Software is buggy!  More specific problem: Want to make sure software doesn’t have bad property.
Extended Static Checking for Java  ESC/Java finds common errors in Java programs: null dereferences, array index bounds errors, type cast errors, race.
Real Intent, Inc (1) Copyright © Real Intent Real Intent, Inc. EnVision Suite of EDA Solutions.
© Andrew IrelandDependable Systems Group Static Analysis and Program Proof Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt University.
A Tool for Pro-active Defense Against the Buffer Overrun Attack D. Bruschi, E. Rosti, R. Banfi Presented By: Warshavsky Alex.
Information Leaks Without Memory Disclosures: Remote Side Channel Attacks on Diversified Code Jeff Seibert, Hamed Okhravi, and Eric Söderström Presented.
1 Contractual Consistency Between BON Static and Dynamic Diagrams Ali Taleghani July 30, 2004.
Slides by Kent Seamons and Tim van der Horst Last Updated: Nov 11, 2011.
MOPS: an Infrastructure for Examining Security Properties of Software Authors Hao Chen and David Wagner Appears in ACM Conference on Computer and Communications.
Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade Crispin Cowan SANS 2000.
Binding & Dynamic Linking Presented by: Raunak Sulekh(1013) Pooja Kapoor(1008)
LECTURE 10 Semantic Analysis. REVIEW So far, we’ve covered the following: Compilation methods: compilation vs. interpretation. The overall compilation.
Constraint Framework, page 1 Collaborative learning for security and repair in application communities MIT site visit April 10, 2007 Constraints approach.
Code improvement: Coverity static analysis Valgrind dynamic analysis GABRIELE COSMO CERN, EP/SFT.
Content Coverity Static Analysis Use cases of Coverity Examples
Buffer Overflow Defenses
CMSC 345 Defensive Programming Practices from Software Engineering 6th Edition by Ian Sommerville.
Bride of Buffer Overflow
Verification and Validation
Chapter 8 – Software Testing
Ik-Soon Kim December 18, 2010 Embedded Software Platform Team
Secure Software Development: Theory and Practice
Levels of Software Assurance in SPARK
High Coverage Detection of Input-Related Security Faults
CS 465 Buffer Overflow Slides by Kent Seamons and Tim van der Horst
CodePeer Update Arnaud Charlet CodePeer Update Arnaud Charlet
GNAT Pro Update Arnaud Charlet GNAT Pro Update Arnaud Charlet
Market perspective - what’s new and where are we heading?
CodePeer Update Arnaud Charlet CodePeer Update Arnaud Charlet
Technology Adoption Services
Bride of Buffer Overflow
GNAT Pro Update Arnaud Charlet GNAT Pro Update Arnaud Charlet
All You Ever Wanted to Know About Dynamic Taint Analysis & Forward Symbolic Execution (but might have been afraid to ask) Edward J. Schwartz, Thanassis.
Critical Systems Development
Covering CWE with Programming Languages and Tools
Testing, debugging, and using support libraries
Introduction to Static Analyzer
NASA Secure Coding Rules
CS5123 Software Validation and Quality Assurance
CUTE: A Concolic Unit Testing Engine for C
System to Software Integrity
Update & Roadmap. Update & Roadmap Established Ada market “Helping to preserve investments done with Ada” “Provide new cost-effective ways to develop.
Presentation transcript:

AdaCore Technologies for Cyber Security Yannick Moy November 14th, 2018

Take Home Messages Use of Ada/SPARK and AdaCore tools helps prevent or mitigate a number of serious security vulnerabilities Static analysis tools CodePeer and SPARK Pro (GNATprove) can be used to identify around 20 CWE vulnerabilities AdaCore roadmap includes features and tools to prevent or mitigate security vulnerabilities: fuzz testing, compiler hardening, taint analysis, proven secure libraries

Already 690 books offered! Already 1016 downloads!

Data Validation – SQL Injection & friends https://xkcd.com/327/

Data Validation – Mitigations Dynamic Mitigation Ada run-time checking Ada attribute X’Valid GNAT attribute X’Valid_Scalars GNAT validity checks -gnatV Static Mitigation GNAT warnings CodePeer static analysis SPARK Pro proof of checks SPARK Pro proof of contracts

Native Code Injection – Mitigations Ada Code Injection No reflection/eval construct Static linking Execute from ROM/Flash Machine Code Injection Start from buffer overflow  Ada run-time checking  CodePeer & SPARK Pro

Denial of Service – Mitigations Dynamic Mitigation Exception handling Static Mitigation Crash proof application? Loop termination?  CodePeer & SPARK Pro

Information Leak – Mitigations

Information Leak – Mitigations

Information Leak – Mitigations ?

Side Channel Attacks Data Leakage Attacks - Key material is leaked - Branch test on secret data - Array read/write on secret data - Verification of secret is time sensitive - Secret data is left in memory Fault Injection Attacks - Bit-flip Boolean/enums - Data corruption - Corrupt return address/PC - Skip branch decision - Early loop termination www.riscure.com/uploads/2017/08/Riscure_Whitepaper_Side_Channel_Patterns.pdf

(Compiler) Hardening Data Leakage Attacks - Detect sensitive control flow - Start array read/write at random index - Force verification of secret to take same time always - Stack/register erasing Fault Injection Attacks - Represent Boolean/enums on words - Use data checksums - Add explicit step counter - Replicate branch decisions - Verify loop termination https://www.embecosm.com/research/secure/

Industrial Scenario Examples Identifying and repairing security vulnerabilities in existing Ada codebases Scenario 2: Ada software development practices for increasing security Scenario 3: Secure Design through SPARK Scenario 4: Support for Mixed Criticality Systems

Scenario 3 Example: Muen The Muen Separation Kernel is the world’s first Open Source microkernel that has been formally proven to contain no runtime errors at the source code level. https://muen.codelabs.ch/

Scenario 3 Example: WooKey Software classes of attacks (e.g. buffer overflows) are mitigated using EwoK [...] providing more confidence by using the Ada safe language along with SPARK for formal verification of critical parts. https://github.com/wookey-project

Take Home Messages Use of Ada/SPARK and AdaCore tools helps prevent or mitigate a number of serious security vulnerabilities Static analysis tools CodePeer and SPARK Pro (GNATprove) can be used to identify around 20 CWE vulnerabilities AdaCore roadmap includes features and tools to prevent or mitigate security vulnerabilities: fuzz testing, compiler hardening, taint analysis, proven secure libraries

SPARK Pro Update Yannick Moy November 14th, 2018

SPARK Discovery Update Yannick Moy November 14th, 2018

Already 940 books offered! Already 1119 downloads!

Program Specification SPARK Pro 19 Content Program Specification Tool Automation Tool Interaction Tool Usability

SPARK Pro 19 – Program Specification More precise support for 'Image and 'Img attributes Support for more fixed-point types and operations New SPARK-compatible libraries for dimensional analysis New lemmas for exponentiation, fixed-point arithmetic and higher-order functions [only SPARK Pro]

SPARK Pro 19 – Tool Automation Automatic detection of array initialization with non-static bounds Automatic unrolling of loops with dynamic bounds or executed only once Improved support for floating-point computations [only SPARK Pro]

SPARK Pro 19 – Tool Interaction Better messages: - to understand root cause for SPARK violations - to investigate unproved checks - to detect inconsistencies Better counterexamples: [only SPARK Pro] - on values of private types and float types - on individual paths through subprograms Better integration in GPS: - path for missing dependency can be displayed - ability to focus analysis on region of code - new Analysis Report panel

Better messages – Info Messages Enabled by switch --info

Better messages – Possible Explanation

Better messages – Warnings by Proof Enabled by switch --proof-warnings Warn on: - precondition or postcondition always False - dead code after loop - unreachable branches in assertions

Better counterexamples – Single Path

Better GPS Integration – Analyze Region

Better GPS Integration – Analysis Report

SPARK Pro 19 – Tool Usability New switches - to limit memory used by provers - to treat failed checks as errors - to support --subdirs and --no-subprojects Better predictability of running time with --level switch Speedup on large projects

SPARK Pro 20 – Roadmap Support for safe Rust-like ownership pointers Improved support for floating-point computations Better interactions: messages, counterexamples, GPS integration… Contracts on standard libraries and bindings to other libraries Proven libraries and lemma libraries