Reverse engineering binary programs without debug information, such as malwares and embedded firmwares, is often a challenging and time-consuming process that relies heavily on manual analysis. Automating the process ...
详细信息
ISBN:
(纸本)9783031649530;9783031649547
Reverse engineering binary programs without debug information, such as malwares and embedded firmwares, is often a challenging and time-consuming process that relies heavily on manual analysis. Automating the process of identifying frequently used library functions can significantly improve the efficiency. While machine learning techniques have shown satisfactory results in computing binary function similarity in specific experimental contexts, their performance in open-set retrieval task remains largely unexplored. Notably, identifying known functions in stripped binaries falls under this category. To contribute to this area of research, we introduce a brand-new dataset derived from popular rust projects. This dataset not only aims to stimulate further research on rust program analysis but also serves as a robust platform for evaluating the performance of state-of-the-art methods in open-set function retrieval tasks. Through our analysis, we discover that similarity-only methods have limited effectiveness in rejecting negative samples. In response to this identified shortcoming, we present a novel approach that integrates features derived from function call graphs, enabling us to determine a function's identity by considering both its similarity and call relationships with other functions. Experimental results demonstrate that our method enhances overall performance compared to similarity-only solutions, especially under more challenging conditions.
Quadratic Unconstrained Binary Optimization (QUBO) has emerged as a vital unifying model for combinatorial optimization problems, and (meta-)heuristic approaches are commonly used to solve them due to their NP-hard na...
详细信息
ISBN:
(纸本)9798400701207
Quadratic Unconstrained Binary Optimization (QUBO) has emerged as a vital unifying model for combinatorial optimization problems, and (meta-)heuristic approaches are commonly used to solve them due to their NP-hard nature. Scatter Search (SS), a populationbased metaheuristic framework, is one such method that has shown promising results for QUBO problems. Generating new solutions from more promising ones is a crucial operation in SS. Path Relinking (PR) based SS has been previously used to solve challenging QUBO problems with high-quality solutions. This paper introduces two new variants of the SS algorithm. The first is the (Multi) Uniform Crossover (MUC) based SS while the second is the Univariate Marginal Distribution Algorithm (UMDA) based SS. MUC and UMDA are well-known operators in Genetic Algorithms and Estimation of Distribution Algorithms respectively. When compared to the existing PR based SS, this work shows that more promising results can be achieved when the newly proposed MUC and UMDA-based SS are applied to QUBO formulations of the Quadratic Knapsack Problem (QKP) instances.
Intel SGX is the next-generation trusted computing infrastructure. It can effectively protect data inside enclaves from being stolen. Similar to traditional programs, SGX enclaves are likely to have security vulnerabi...
详细信息
ISBN:
(纸本)9781450349468
Intel SGX is the next-generation trusted computing infrastructure. It can effectively protect data inside enclaves from being stolen. Similar to traditional programs, SGX enclaves are likely to have security vulnerabilities and can be exploited as well. This gives an adversary a great opportunity to steal secret data or perform other malicious operations. rust is one of the system programminglanguages with promising security properties. It has powerful checkers and guarantees memory-safety and thread-safety. In this paper, we show rust SGX SDK, which combines Intel SGX and rust programming language together. By using rust SGX SDK, developers could write memory-safe secure enclaves easily, eliminating the most possibility of being pwned through memory vulnerabilities. What's more, the rust enclaves are able to run as fast as the ones written in C/C++.
Intel Software Guard eXtension (SGX), a hardware supported trusted execution environment (TEE), is designed to protect security critical applications. However, it does not terminate traditional memory corruption vulne...
详细信息
ISBN:
(纸本)9781450367479
Intel Software Guard eXtension (SGX), a hardware supported trusted execution environment (TEE), is designed to protect security critical applications. However, it does not terminate traditional memory corruption vulnerabilities for the software running inside enclave, since enclave software is still developed with type unsafe languages such as C/C++. This paper presents rust-SGX, an efficient and layered approach to exterminating memory corruption for software running inside SGX enclaves. The key idea is to enable the development of enclave programs with an efficient memory safe system languagerust with a rust-SGX SDK by solving the key challenges of how to (1) make the SGX software memory safe and (2) meanwhile run as efficiently as with the SDK provided by Intel. We therefore propose to build rust-SGX atop Intel SGX SDK, and tame unsafe components with formally proven memory safety. We have implemented rust-SGX and tested with a series of benchmark programs. Our evaluation results show that rust-SGX imposes little extra overhead (less than 5% with respect to the SGX specific features and services compared to software developed by Intel SGX SDK), and meanwhile have stronger memory safety.
rust is a multi-paradigm, general-purpose programminglanguage that prioritizes performance, type safety, and fearless concurrency. At compile time, rust is able to ensure memory and thread safety without relying on a...
详细信息
ISBN:
(纸本)9798350363869;9798350363852
rust is a multi-paradigm, general-purpose programminglanguage that prioritizes performance, type safety, and fearless concurrency. At compile time, rust is able to ensure memory and thread safety without relying on automated memory management techniques such as garbage collection. As a result, rust is gaining significant popularity as a replacement for C/C++ in various domains where performance and reliability are paramount, such as systems programming, embedded devices, and networking. This paper attempts to critically evaluate the claims of high performance and memory safety associated with rust, particularly in the context of low-level network programming. The approach involves rewriting Nethuns, a fast C-based network I/O library, using rust. The rust-based implementation of Nethuns is described in detail in this work, with a particular emphasis on explaining the design choices, highlighting the primary benefits gained in terms of safety and security, and addressing the challenges encountered throughout the process. The paper concludes with a performance evaluation of the library. The obtained results are promising: the rust-based library ensures a significantly higher level of safety at compile time, with a modest performance trade-off.
Modern programminglanguages, such as rust, have adopted the coroutine concept to better utilize computation resources and to improve program execution efficiency by allowing the overlap of the execution for asynchron...
详细信息
ISBN:
(纸本)9781450395175
Modern programminglanguages, such as rust, have adopted the coroutine concept to better utilize computation resources and to improve program execution efficiency by allowing the overlap of the execution for asynchronous tasks. These programminglanguages often use the concept of userland thread library to dispatch the asynchronous tasks defined by the programmers. Nevertheless, it is often the case that the task scheduling on a user-space library is non-preemptive and would lead to unbounded execution time of a task. In this work, we aim to develop a tracing methodology to capture unbounded execution time of asynchronous tasks in rust programs. Based on the analyses of the rust standard library, we identify several execution contexts of asynchronous computation in rust, and develop a portable context aware tracing methodology that is able to trace the execution time of nested asynchronous computation work across different rust runtimes. We develop a framework, called CAT, to collect and visualize the asynchronous runtime activities. The results show that CAT can help pinpoint the asynchronous computation exhibiting prolonged execution time. We believe that CAT is a complement of existing tools to improve the execution efficiency of asynchronous operations in rust.
rust is a new and promising high-level system programminglanguage. It provides both memory safety and thread safety through its novel mechanisms such as ownership, moves and borrows. Ownership system ensures that at ...
详细信息
ISBN:
(纸本)9781538673058
rust is a new and promising high-level system programminglanguage. It provides both memory safety and thread safety through its novel mechanisms such as ownership, moves and borrows. Ownership system ensures that at any point there is only one owner of any given resource. The ownership of a resource can be moved or borrowed according to the lifetimes. The ownership system establishes a clear lifetime for each value and hence rust does not necessarily need garbage collection. These novel features bring rust high performance, fine-grained low-level control over memory without garbage collection, which differentiate rust from other existing prevalent languages. For formal analysis of rust programs and helping programmers learn its new mechanisms and features, a formal semantics of rust is desired and useful as a fundament for developing related tools. In this paper, we present a formal executable operational semantics of a subset of rust, called Krust. The semantics is defined in K, a rewriting-based executable semantic framework for programminglanguages. The executable semantics yields automatically a formal interpreter and verification tools for rust programs. Krust has been validated by testing with 182 tests, including 157 tests from the official rust test suite. We individually found an error in the rust compiler.
Ensuring safe program operation is crucial for systems programming, and memory safety is a significant aspect of this. This paper assesses the memory safety strategies used in rust and C++ programminglanguages. rust ...
详细信息
The discussion around "safe"programminglanguages has significantly increased in recent years, and is impacting how governments, industry, and academia plan to develop current and future software products. T...
详细信息
Memory Safety means that a program cannot access unintended memory regions. Lack of memory safety continues to be a major source of security related software errors. The problems arising from the use of memory unsafe ...
详细信息
Memory Safety means that a program cannot access unintended memory regions. Lack of memory safety continues to be a major source of security related software errors. The problems arising from the use of memory unsafe C programminglanguage are reviewed, both in general and Linux kernel programming context. Various methods for detecting and eliminating memory safety problems are then evaluated. Methods chosen for testing were static and dynamic analysis, and using a memory safe language as a programminglanguage. The methods were tested during a process of writing a Linux kernel module. Unfortunately, none of the methods tested proved to be a comprehensive solution to the problem of memory unsafety. Each method had their own strengths. Static analysis is easy to include in the development process; however, it does not detect problems very efficiently. Dynamic analysis, on the other hand, is good at finding bugs; yet it requires manual testing. Memory safe languages are very promising; however, they would require significant, changes to the existing code which can be difficult to achieve in practice both due to economic and social reasons.
暂无评论