135 research outputs found

    Manipulating Managed Execution Runtimes to Support Self-Healing Systems

    Get PDF
    Self-healing systems require that repair mechanisms are available to resolve problems that arise while the system executes. Managed execution environments such as the Common Language Runtime (CLR) and Java Virtual Machine (JVM) provide a number of application services (application isolation, security sandboxing, garbage collection and structured exception handling) which are geared primarily at making managed applications more robust. However, none of these services directly enables applications to perform repairs or consistency checks of their components. From a design and implementation standpoint, the preferred way to enable repair in a self-healing system is to use an externalized repair/adaptation architecture rather than hardwiring adaptation logic inside the system where it is harder to analyze, reuse and extend. We present a framework that allows a repair engine to dynamically attach and detach to/from a managed application while it executes essentially adding repair mechanisms as another application service provided in the execution environment

    Talos: Neutralizing Vulnerabilities with Security Workarounds for Rapid Response

    Full text link
    Considerable delays often exist between the discovery of a vulnerability and the issue of a patch. One way to mitigate this window of vulnerability is to use a configuration workaround, which prevents the vulnerable code from being executed at the cost of some lost functionality -- but only if one is available. Since program configurations are not specifically designed to mitigate software vulnerabilities, we find that they only cover 25.2% of vulnerabilities. To minimize patch delay vulnerabilities and address the limitations of configuration workarounds, we propose Security Workarounds for Rapid Response (SWRRs), which are designed to neutralize security vulnerabilities in a timely, secure, and unobtrusive manner. Similar to configuration workarounds, SWRRs neutralize vulnerabilities by preventing vulnerable code from being executed at the cost of some lost functionality. However, the key difference is that SWRRs use existing error-handling code within programs, which enables them to be mechanically inserted with minimal knowledge of the program and minimal developer effort. This allows SWRRs to achieve high coverage while still being fast and easy to deploy. We have designed and implemented Talos, a system that mechanically instruments SWRRs into a given program, and evaluate it on five popular Linux server programs. We run exploits against 11 real-world software vulnerabilities and show that SWRRs neutralize the vulnerabilities in all cases. Quantitative measurements on 320 SWRRs indicate that SWRRs instrumented by Talos can neutralize 75.1% of all potential vulnerabilities and incur a loss of functionality similar to configuration workarounds in 71.3% of those cases. Our overall conclusion is that automatically generated SWRRs can safely mitigate 2.1x more vulnerabilities, while only incurring a loss of functionality comparable to that of traditional configuration workarounds.Comment: Published in Proceedings of the 37th IEEE Symposium on Security and Privacy (Oakland 2016

    Custom Surrogate Host for ActiveX In-Process Servers

    Get PDF
    This paper describes the design, implementation and evaluation of AX Host, a custom surrogate host for ActiveX in-process servers. AX Host aims to give ActiveX client applications improved stability by using software fault isolation

    Integrating Exception Handling in Machine Development

    Get PDF
    In modern batch plants, alarm floods overwhelming the operator is a common problem of ever increasing severity. As plant hardware increase in complexity and performance, measures such as downtime and meantime between failures, increase in importance and the need for a well-functioning exception handling routine therefore grows critical. In order to minimize downtime and hence boost production efficiency, it is important that faulty or unexpected behaviour is noted early and diagnosed accurately. If it is, the machine or its operator can deal with it fast and accurately, perhaps even while production continues. If it is not, however, it basically means two bad things, the first being unnecessary production stops and the second a flooded alarm list. The alarm list is the screen on which all exceptions are listed and which is meant to tell the process operator what is wrong and what he should do about it. If no care is taken about it, the list will be flooded since one key exception will cause several others, leaving the operator with the quite unpleasant task of identifying what went wrong and how he should fix it. This master's thesis, carried out at Tetra Pak in Lund, Sweden, presents a well-structured exception handling method and a way of linking it to a workflow. It uses advantages of reusability, modularisation and linking to almost any structural model such as a Function Means Tree (used in WCE) or a UML-model. The linking has several advantages minimizing the work and improving evolutionary possibilities. Examples are being made for illustrational purposes but no implementational efforts or issues are addressed. A well-defined structure for information flow is also suggested to provide modular thinking that, for example, prepares the possibility to collect data for statistical analysis and such

    Memory-Efficient Multi-Threading Streaming Partitioning Algorithm

    Get PDF
    Due to the growth of the modern Internet, data analytics, and cluster computing, massive amounts of data are frequently being generated and need to be processed. In many common data processing applications (e.g., sorting), a set of input keys needs to be partitioned into buckets based on their values. Since key partitioning is an application where data can be processed sequentially (i.e., via streaming), one such programming platform we can use to solve this problem is Vortex. Vortex creates the illusion of an infinite buffer by generating controlled memory access violations that are handled transparently. The buffer can be accessed with a single C/C++ pointer, making Vortex both extremely fast and easy to use. Efficient parallelization of a key partitioning algorithm is required to take advantage of multi-core processors, which are now found even in low-end consumer hardware. With this in mind, we propose a high-performance, memory-efficient key partitioning algorithm, which makes use of multiple Vortex streams to allow for concurrent partitioning of keys by multiple threads in a single pass over the input data. The resulting algorithm is able to nearly saturate the memory bandwidth of modern Intel Coffee Lake systems and can be applied to develop high-performance, multi-threaded streaming sorts that are capable of utilizing the multiple processing cores available in modern computers
    • …
    corecore