{"title":"Secure DevOps Process and Implementation","authors":"Hasan Yasar, Kiriakos Kontostathis","doi":"10.1109/SecDev.2016.048","DOIUrl":"https://doi.org/10.1109/SecDev.2016.048","url":null,"abstract":"Participants will come away with a solid understanding of the realities of Secure DevOps, from tools and techniques to culture and specific organizational security policy. By focusing on common pitfalls and missteps, instructors will help attendees navigate the challenging tasks of adapting Secure DevOps theories, practices, and tools to meet their particular application security needs, and to provide measurable value to their organizations. 2016 IEEE Cybersecurity Development","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125774767","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Codiscope SecureAssist™ — The Developer’s Security Assistant","authors":"N. Murthy","doi":"10.1109/SecDev.2016.046","DOIUrl":"https://doi.org/10.1109/SecDev.2016.046","url":null,"abstract":"With this tutorial, participants will learn the benefits of using SecureAssist to find security bugs earlier in the development cycle. I’ll also explain the ease with which this tool can be used without being counterproductive to the development process. This tutorial caters to developers and security experts who work closely with developers in remediation assistance. Participants of this tutorial are recommended to have Eclipse 4.3 and above installed on their systems. The agenda of this tutorial is as follows:","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126020147","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Beyond errno: Error Handling in “C”","authors":"David Svoboda","doi":"10.1109/SecDev.2016.045","DOIUrl":"https://doi.org/10.1109/SecDev.2016.045","url":null,"abstract":"This tutorial covers error handling in C. In many modern languages the recommended mechanism for error handling is exceptions, but C does not support exceptions. Due to its age, C has acquired a plethora of technologies for handling errors. These range from return codes, errno, and abort() to more esoteric techniques like goto chains, setjmp()/longjmp(), and runtime constraint handlers. With the myriad techniques for handling errors, how then is a C programmer expected to handle errors securely? In this tutorial, we will examine the technologies available to the C developer for handling errors. Each technique has its own pros and cons, and we will examine correct and incorrect uses of each, with an eye towards software security and maintainability. We will briefly touch on C++ exceptions, but we intend to focus on platforms where exceptions are not available. The audience is expected to have a beginner’s understanding of C, and they will be given small code examples to understand throughout the tutorial in order to increase their understanding. They can expect to become aware of the most common error-handling technologies widely used and employed by C programmers.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"130 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124248084","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Soumya Indela, Mukul Kulkarni, Kartik Nayak, T. Dumitras
{"title":"Toward Semantic Cryptography APIs","authors":"Soumya Indela, Mukul Kulkarni, Kartik Nayak, T. Dumitras","doi":"10.1109/SecDev.2016.014","DOIUrl":"https://doi.org/10.1109/SecDev.2016.014","url":null,"abstract":"While several mature cryptographic frameworks exist, and have been utilized for building complex applications, developers often use these frameworks incorrectly and introduce security vulnerabilities. This stems from several challenges, including (i) an expectation that framework users understand security attacks and defenses and the subtle impact of various low level parameters, (ii) the need to take into account information external to the system to ensure security (e.g. TLS certificate revocations), and (iii) the frequent need to disable security checks during development and testing, as sometimes these checks remain disabled in production. We propose guidelines for designing cryptography APIs that are semantically meaningful for developers and that can be implemented consistently on top of existing frameworks. We also propose the Regulator design pattern, for incorporating security-critical external information, and build management hooks for isolating security workarounds needed during the development and test phases. Our API is a first step toward striking the right balance between restricting the security decisions that developers make and giving them the flexibility needed for complex applications that use cryptography.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114108695","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Continuous Fuzzing with libFuzzer and AddressSanitizer","authors":"Kosta Serebryany","doi":"10.1109/SecDev.2016.043","DOIUrl":"https://doi.org/10.1109/SecDev.2016.043","url":null,"abstract":"","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127434774","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Case for Combining Industrial Pragmatics with Formal Methods","authors":"Eric L. McCorkle","doi":"10.1109/SecDev.2016.021","DOIUrl":"https://doi.org/10.1109/SecDev.2016.021","url":null,"abstract":"Dependently-typed languages [9] possess a type system with enough expressive power to describe formal specifications and prove that implementations behave according to them. Dependent type systems are necessarily undecidable as they perform formal reasoning about the behavior of an implementation; however, with this comes the power of being able to guarantee very strong safety properties of programs. Dependent types have seen use in a compiler [8], low-level programming [3], OS kernel components [1], web programming [4], and others. Looking further, the NSF DeepSpec [5] initiative actively seeks to develop methods for applying dependent types and verification to real-world applications. Several languages have arisen from current research efforts on dependent types, including Coq, Agda, Idris, and more recently, Lean. There are also a number of verification tools that have arisen from automated reasoning research, including ACL2, Dafny, and others. While it is possible to build software using these tools, they tend to be ill-suited for large-scale industrial software development.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124561399","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"How to find and fix software vulnerabilities with coverity static analysis","authors":"Bill Baloglu","doi":"10.1109/SecDev.2016.041","DOIUrl":"https://doi.org/10.1109/SecDev.2016.041","url":null,"abstract":"The workshop attendees will be given access to their own dedicated virtual machines in our cloud-based lab platform. The VMs will be pre-configured with all the necessary software and sample codebases. Participant should bring their laptops with Wi-Fi network card, and a contemporary browser, such as Chrome, IE, FF, Safari or similar with HTML5 support, which they should run to validate compliance with our pre-check test: https://synopsys.instructorled.training/precheck.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125298305","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Using Dr. Fuzz, Dr. Memory, and Custom Dynamic Tools for Secure Development","authors":"Derek Bruening, Qin Zhao","doi":"10.1109/SecDev.2016.044","DOIUrl":"https://doi.org/10.1109/SecDev.2016.044","url":null,"abstract":"This tutorial will present two tools that can be integrated into a secure software development approach, as well as describing how custom tools can be built utilizing the same underlying tool platform.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134424542","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Thomas Moyer, Karishma Chadha, R. Cunningham, N. Schear, Warren Smith, Adam Bates, Kevin R. B. Butler, F. Capobianco, T. Jaeger, Patrick T. Cable
{"title":"Leveraging Data Provenance to Enhance Cyber Resilience","authors":"Thomas Moyer, Karishma Chadha, R. Cunningham, N. Schear, Warren Smith, Adam Bates, Kevin R. B. Butler, F. Capobianco, T. Jaeger, Patrick T. Cable","doi":"10.1109/SecDev.2016.034","DOIUrl":"https://doi.org/10.1109/SecDev.2016.034","url":null,"abstract":"Building secure systems used to mean ensuring a secure perimeter, but that is no longer the case. Today's systems are ill-equipped to deal with attackers that are able to pierce perimeter defenses. Data provenance is a critical technology in building resilient systems that will allow systems to recover from attackers that manage to overcome the \"hard-shell\" defenses. In this paper, we provide background information on data provenance, details on provenance collection, analysis, and storage techniques and challenges. Data provenance is situated to address the challenging problem of allowing a system to \"fight-through\" an attack, and we help to identify necessary work to ensure that future systems are resilient.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129365335","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Safe Client/Server Web Development with Haskell","authors":"Mark Mazumder, T. Braje","doi":"10.1109/SecDev.2016.040","DOIUrl":"https://doi.org/10.1109/SecDev.2016.040","url":null,"abstract":"We demonstrate how two Haskell libraries - Reflex-Dom and Servant - provide a powerful and complete web development framework which uses typechecking to guarantee many security and correctness properties on both the client and the server. With types as our guide, we can ensure that the data passed to our API is of the right shape, that we are forced to sanitize user input (eliminating most of the possibilities for SQL injection or XSS attacks), and that user input errors are guaranteed to be handled. We use Reflex, a Functional Reactive Programming engine, compiled with GHCJS (the Haskell-to-JavaScript transpiler) to lift user input into a safe representation. Types are used to enforce that all required data is requested from a user before the user can proceed to the next action in a workflow. Malformed user input is also cleanly separated at the type level for automatic reporting and recovery. Tutorial exercises will highlight Servant’s guarantees that a REST API is fully specified for all possible user inputs and return conditions. Tutorial attendees will gain an appreciation of how much work this up-front specification can save in development time. For example, Servant knows what all of your endpoints are, and serves error pages for everything else. Servant can also safely handle data conversions from the world of untyped Strings into the typesafe world of your API.","PeriodicalId":166406,"journal":{"name":"2016 IEEE Cybersecurity Development (SecDev)","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115539350","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}