4 research outputs found
Modular Verification of Interrupt-Driven Software
Interrupts have been widely used in safety-critical computer systems to
handle outside stimuli and interact with the hardware, but reasoning about
interrupt-driven software remains a difficult task. Although a number of static
verification techniques have been proposed for interrupt-driven software, they
often rely on constructing a monolithic verification model. Furthermore, they
do not precisely capture the complete execution semantics of interrupts such as
nested invocations of interrupt handlers. To overcome these limitations, we
propose an abstract interpretation framework for static verification of
interrupt-driven software that first analyzes each interrupt handler in
isolation as if it were a sequential program, and then propagates the result to
other interrupt handlers. This iterative process continues until results from
all interrupt handlers reach a fixed point. Since our method never constructs
the global model, it avoids the up-front blowup in model construction that
hampers existing, non-modular, verification techniques. We have evaluated our
method on 35 interrupt-driven applications with a total of 22,541 lines of
code. Our results show the method is able to quickly and more accurately
analyze the behavior of interrupts.Comment: preprint of the ASE 2017 pape
Basic Static Code Analysis Untuk Mendeteksi Backdoor Shell Pada Web Server
Mengakses sistem komputer tanpa ijin merupakan kejahatan yang dilakukan dengan memasuki atau menyusup kedalam suatu sistem jaringan komputer tanpa sepengetahuan dari pemilik sistem tersebut. Kejahatan tersebut bertujuan untuk mengintai atau mencuri informasi penting dan rahasia. Dalam praktiknya peretas menyisipkan berkas backdoor shell pada lokasi yang sulit ditemukan oleh pemilik sistem. Beberapa perangkat yang sudah ada masih dalam bentuk terminal. Perangkat tersebut melakukan pencarian berkas berdasarkan nama-nama yang telah terdaftar sebelumnya. Akibatnya, pada saat berkas backdoor shell jenis baru menginfeksi, tools tersebut tidak dapat mendeteksi keberadaannya. Berdasarkan hal tersebut, maka dalam penelitian ini pencarian backdoor shell pada web server menggunakan metode basic static code analysis. File sistem diproses melalui dua tahap utama yaitu string matching dan taint analysis. Dalam proses taint analysis, sistem menghitung peluang kemungkinan setiap signature sebagai backdoor untuk mengatasi kamus backdoor yang tidak lengkap. Berdasarkan hasil yang didapat dari pengujian yang dilakukan terhadap 3964 berkas diperoleh tingkat akurasi yang lebih besar dibandingkan dengan aplikasi php shell detector sebesar 75%.Mengakses sistem komputer tanpa ijin merupakan kejahatan yang dilakukan dengan memasuki atau menyusup kedalam suatu sistem jaringan komputer tanpa sepengetahuan dari pemilik sistem tersebut. Kejahatan tersebut bertujuan untuk mengintai atau mencuri informasi penting dan rahasia. Dalam praktiknya peretas menyisipkan berkas backdoor shell pada lokasi yang sulit ditemukan oleh pemilik sistem. Beberapa perangkat yang sudah ada masih dalam bentuk terminal. Perangkat tersebut melakukan pencarian berkas berdasarkan nama-nama yang telah terdaftar sebelumnya. Akibatnya, pada saat berkas backdoor shell jenis baru menginfeksi, tools tersebut tidak dapat mendeteksi keberadaannya. Berdasarkan hal tersebut, maka dalam penelitian ini pencarian backdoor shell pada web server menggunakan metode basic static code analysis. File sistem diproses melalui dua tahap utama yaitu string matching dan taint analysis. Dalam proses taint analysis, sistem menghitung peluang kemungkinan setiap signature sebagai backdoor untuk mengatasi kamus backdoor yang tidak lengkap. Berdasarkan hasil yang didapat dari pengujian yang dilakukan terhadap 3964 berkas diperoleh tingkat akurasi yang lebih besar dibandingkan dengan aplikasi php shell detector sebesar 75%
Static Analysis of Embedded Real-Time Concurrent Software with Dynamic Priorities
International audienceIn previous work, we developed a sound static analysis by abstract interpretation to check the absence of run-time errors in concurrent programs, focusing on embedded C programs composed of a fixed set of threads in a shared memory. The method is thread-modular: it considers each thread independently, analyzing them with respect to an abstraction of the effect of the other threads, so-called interference, which are also inferred automatically as part of analyzing the threads. The analysis thus proceeds in a series of rounds that reanalyze all threads, gathering an increasing set of interference, until stabilization. We proved that this method is sound and covers all possible thread interleavings. This analysis was integrated into the Astrée industrial-scale static analyzer, deployed in avionics and automotive industries. In this article, we consider the more specific case of programs running under a priority-based real-time scheduler, as is often the case in embedded systems. In such programs, higher priority threads cannot be preempted by lower priority ones (except when waiting explicitly for some resource). The programmer exploits this property to reduce the reliance on locks when protecting critical sections. We show how our analysis can be refined through partitioning in order to take into account the real-time hypothesis, remove spurious interleavings, and gain precision on programs that rely on priorities. Our analysis supports in particular dynamic priorities: we handle explicit modifications of the priorities by the program, as well as implicit ones through the priority ceiling protocol. We illustrate our construction formally on an idealized language. Following previous work, we first provide a concrete semantics in thread-modular denotational form that is complete for safety properties, and then show how to apply classic abstractions to obtain an effective static analyzer, able to detect all run-time errors, data-races, as well as deadlocks. Finally, we briefly discuss our implementation inside the Astrée analyzer and ongoing experimentation, with results limited for now to small programs