30 research outputs found

    Analyzing Uncaught Exceptions in Python program: Focusing on Digital Forensic software

    Get PDF
    학위논문(석사) -- 서울대학교대학원 : 공과대학 컴퓨터공학부, 2023. 2. 이광근.본 논문에서는 파이썬 프로그램 중 대검찰청의 디지털 포렌식 소프트웨어의 신뢰성을 높이기 위하여 해당 소프트웨어에서 처리되지 않은 예외를 사전에 검출하는 방안을 설계하고 성능을 측정한다. 대검찰청의 디지털 포렌식 소프트웨어는 파이썬으로 개발되고 있으며 파이썬 라이브러리 자체 내에서 발생할 수 있는 예외 상황과 포렌식 프로그램 자체의 예외 상황이 발생할 수 있는데 본 연구에서는 포렌식 프로그램 내의 오류에 집중한다. 기본적으로 집합 제약식 기반 분석 방법을 사용하여 expression과 statement으로 구분된 프로그램의 지점마다 발생할 수 있는 예외들의 집합을 구하기 위한 제약 조건을 정의하여 이들간 방정식의 해를 구한다. 이 과정에서 발생할 수 있는 허위 경보를 줄이기 위하여 Pyright의 타입 분석 결과를 결합하여 리스트나 딕셔너리 등 타입별로 발생할 수 없는 KeyError나 IndexError 등의 예외들을 제거하여 허 위 경보를 줄인다. 또한, 프로그램의 구성을 프로그램 지점들의 포함 관계에 따라 트리 형태로 나타내고 전위 순회를 하면서 중복되는 허위 경보를 제거한다. 개발한 정적 분석기를 대검에서 제공한 9 개의 벤치마크에서 수행시킨 결과 대검찰청에서 찾지 못한 KeyError, IndexError, ZeroDivisionError 등 3 가지 패턴에 속하는 예외 발생 지점 10여 개를 찾을 수 있었다. 또한, 9 개의 벤치마크에 대하여 평균 84%, 최대 89%의 허위 경보를 제거하였다. 이와 아울러 반복되는 허위 경보를 부모 자식 관계를 활용하여 더욱 허위 경보를 줄일 수 있는 여지도 발견하였다.This thesis designs a novel scheme for detecting uncaught exceptions from thedigital forensic software is under development in the supreme prosecutors office and measures its performance, aiming at enhancing the forensic softwares reliability. The target forensic software is being coded in Python, while exceptions can be raised from the built-in python library as well as from the faults embedded in the forensic program itself. Our analyzer design is built on the set constraint-based analysis scheme to detect the uncaught exception statically. This static analysis method begins with the identification of the sets of exceptions that can be raised at each observation point of the program, defines the set constraints between those sets, which finally solves the equations derived from the set constraint. To lower the false alarm rate, we also integrate the Pyright type checker, eliminating the false alarms such as KeyError and IndexError, which cannot be raised in the list and dictionary type simultaneously. Additionally, our analyzer reorganizes the given code based on the inclusion relationships between each program point into a tree form and traverses it in preorder to remove repeated false alarms. Our static analyzer has found more than ten spots in the nine benchmarks, while each case belongs to one of three patterns of KeyError, IndexError, and ZeroDivisionError. In addition, our scheme cuts down false alarms by up to 84% on average and 89% at maximum in the nine benchmarks. However, there is still room for improvement by removing the repeated exceptions in the program.제 1 장 서론 1 제 2 장 연구배경 6 2.1 디지털 포렌식 소프트웨어 6 2.1.1 디지털 증거 및 디지털 포렌식 6 2.1.2 분석 대상 소프트웨어 6 제 3 장 집합 제약식 기반 분석 8 3.1 처리되지 않은 예외 8 3.1.1 예외 처리가 되지 않은 경우 8 3.1.2 예외 처리를 포함하지만 정확히 처리하지 못한 경우 9 3.2 처리되지 않은 예외 분석 10 3.2.1 분석 대상 언어 10 3.2.2 집합 제약식 기반 분석 11 3.2.3 집합 제약식 생성 규칙 12 3.2.4 분석 결과 19 제 4 장 분석기 정확도 향상 21 4.1 파이썬 정적 타입 분석기(Pyright) 활용 방안 21 4.1.1 IndexError, KeyError 허위 경보 축소 21 4.1.2 NameError 허위 경보 축소 22 4.1.3 AttributeError 허위 경보 축소 22 4.2 반복된 불필요한 경보 압축 방안 22 4.3 외부 라이브러리 함수 호출 시 놓치는 예외 축소 24 제 5 장 실험 결과 25 제 6 장 논의 및 결론 29 6.1 처리되지 않은 예외 분석기의 타입 분석을 통한 분석 정확도 향상의 한계 29 6.2 추가 연구 29 6.3 결론 30 참고문헌 31 Abstract 33 부록 35 A 부록: 파이썬 IR의 요약된 문법 및 의미구조 35 A.1 요약된 문법 35 A.2 도메인 36 A.3 의미구조 38석

    Exception handling in the development of fault-tolerant component-based systems

    Get PDF
    Orientador: Cecilia Mary Fischer RubiraTese (doutorado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Mecanismos de tratamento de exceções foram concebidos com o intuito de facilitar o gerenciamento da complexidade de sistemas de software tolerantes a falhas. Eles promovem uma separação textual explícita entre o código normal e o código que lida com situações anormais, afim de dar suporte a construção de programas que são mais concisos fáceis de evoluir e confáveis. Diversas linguagens de programação modernas e a maioria dos modelos de componentes implementam mecanismos de tratamento de exceções. Apesar de seus muitos benefícios, tratamento de exceções pode ser a fonte de diversas falhas de projeto se usado de maneira indisciplinada. Estudos recentes mostram que desenvolvedores de sistemas de grande escala baseados em infra-estruturas de componentes têm hábitos, no tocante ao uso de tratamento de exceções, que tornam suas aplicações vulneráveis a falhas e difíceis de se manter. Componentes de software criam novos desafios com os quais mecanismos de tratamento de exceções tradicionais não lidam, o que aumenta a probabilidade de que problemas ocorram. Alguns exemplos são indisponibilidade de código fonte e incompatibilidades arquiteturais. Neste trabalho propomos duas técnicas complementares centradas em tratamento de exceções para a construção de sistemas tolerantes a falhas baseados em componentes. Ambas têm ênfase na estrutura do sistema como um meio para se reduzir o impacto de mecanismos de tolerância a falhas em sua complexidade total e o número de falhas de projeto decorrentes dessa complexidade. A primeira é uma abordagem para o projeto arquitetural dos mecanismos de recuperação de erros de um sistema. Ela trata do problema de verificar se uma arquitetura de software satisfaz certas propriedades relativas ao fluxo de exceções entre componentes arquiteturais, por exemplo, se todas as exceções lançadas no nível arquitetural são tratadas. A abordagem proposta lança de diversas ferramentas existentes para automatizar ao máximo esse processo. A segunda consiste em aplicar programação orientada a aspectos (AOP) afim de melhorar a modularização de código de tratamento de exceções. Conduzimos um estudo aprofundado com o objetivo de melhorar o entendimento geral sobre o efeitos de AOP no código de tratamento de exceções e identificar as situações onde seu uso é vantajoso e onde não éAbstract: Exception handling mechanisms were conceived as a means to help managing the complexity of fault-tolerant software. They promote an explicit textual separation between normal code and the code that deals with abnormal situations, in order to support the construction of programs that are more concise, evolvable, and reliable. Several mainstream programming languages and most of the existing component models implement exception handling mechanisms. In spite of its many bene?ts, exception handling can be a source of many design faults if used in an ad hoc fashion. Recent studies show that developers of large-scale software systems based on component infrastructures have habits concerning the use of exception handling that make applications vulnerable to faults and hard to maintain. Software components introduce new challenges which are not addressed by traditional exception handling mechanisms and increase the chances of problems occurring. Examples include unavailability of source code and architectural mismatches. In this work, we propose two complementary techniques centered on exception handling for the construction of fault-tolerant component-based systems. Both of them emphasize system structure as a means to reduce the impactof fault tolerance mechanisms on the overall complexity of a software system and the number of design faults that stem from complexity. The ?rst one is an approach for the architectural design of a system?s error handling capabilities. It addresses the problem of verifying whether a software architecture satis?es certain properties of interest pertaining the ?ow of exceptions between architectural components, e.g., if all the exceptions signaled at the architectural level are eventually handled. The proposed approach is based on a set of existing tools that automate this process as much as possible. The second one consists in applying aspect-oriented programming (AOP) to better modularize exception handling code. We have conducted a through study aimed at improving our understanding of the efects of AOP on exception handling code and identifying the situations where its use is advantageous and the ones where it is notDoutoradoDoutor em Ciência da Computaçã

    PrologPF: Parallel Logic and Functions on the Delphi Machine

    Get PDF
    PrologPF is a parallelising compiler targeting a distributed system of general purpose workstations connected by a relatively low performance network. The source language extends standard Prolog with the integration of higher-order functions. The execution of a compiled PrologPF program proceeds in a similar manner to standard Prolog, but uses oracles in one of two modes. An oracle represents the sequence of clauses used to reach a given point in the problem search tree, and the same PrologPF executable can be used to build oracles, or follow oracles previously generated. The parallelisation strategy used by PrologPF proceeds in two phases, which this research shows can be interleaved. An initial phase searches the problem tree to a limited depth, recording the discovered incomplete paths. In the second phase these paths are allocated to the available processors in the network. Each processor follows its assigned paths and fully searches the referenced subtree, sending solutions back to a control processor. This research investigates the use of the technique with a one-time partitioning of the problem and no further scheduling communication, and with the recursive application of the partitioning technique to effect dynamic work reassignment. For a problem requiring all solutions to be found, execution completes when all the distributed processors have completed the search of their assigned subtrees. If one solution is required, the execution of all the path processors is terminated when the control processor receives the first solution. The presence of the extra-logical Prolog predicate cut in the user program conflicts with the use of oracles to represent valid open subtrees. PrologPF promotes the use of higher-order functional programming as an alternative to the use of cut. The combined language shows that functional support can be added as a consistent extension to standard Prolog

    Deductive Verification of Safety-Critical Java Programs

    Get PDF
    This work investigates the application of deductive verification techniques to safety critical Java programs, in particular RTSJ programs. A focus is put on the formalization of the RTSJ memory model in dynamic logic, the utilization of a region-based memory model for ensuring non-interference and a design-by-contract based approach for the formal specification and verification of worst case memory consumption

    Special Topics in Information Technology

    Get PDF
    This open access book presents outstanding doctoral dissertations in Information Technology from the Department of Electronics, Information and Bioengineering, Politecnico di Milano, Italy. Information Technology has always been highly interdisciplinary, as many aspects have to be considered in IT systems. The doctoral studies program in IT at Politecnico di Milano emphasizes this interdisciplinary nature, which is becoming more and more important in recent technological advances, in collaborative projects, and in the education of young researchers. Accordingly, the focus of advanced research is on pursuing a rigorous approach to specific research topics starting from a broad background in various areas of Information Technology, especially Computer Science and Engineering, Electronics, Systems and Control, and Telecommunications. Each year, more than 50 PhDs graduate from the program. This book gathers the outcomes of the best theses defended in 2021-22 and selected for the IT PhD Award. Each of the authors provides a chapter summarizing his/her findings, including an introduction, description of methods, main achievements and future work on the topic. Hence, the book provides a cutting-edge overview of the latest research trends in Information Technology at Politecnico di Milano, presented in an easy-to-read format that will also appeal to non-specialists

    Special Topics in Information Technology

    Get PDF
    This open access book presents outstanding doctoral dissertations in Information Technology from the Department of Electronics, Information and Bioengineering, Politecnico di Milano, Italy. Information Technology has always been highly interdisciplinary, as many aspects have to be considered in IT systems. The doctoral studies program in IT at Politecnico di Milano emphasizes this interdisciplinary nature, which is becoming more and more important in recent technological advances, in collaborative projects, and in the education of young researchers. Accordingly, the focus of advanced research is on pursuing a rigorous approach to specific research topics starting from a broad background in various areas of Information Technology, especially Computer Science and Engineering, Electronics, Systems and Control, and Telecommunications. Each year, more than 50 PhDs graduate from the program. This book gathers the outcomes of the best theses defended in 2021-22 and selected for the IT PhD Award. Each of the authors provides a chapter summarizing his/her findings, including an introduction, description of methods, main achievements and future work on the topic. Hence, the book provides a cutting-edge overview of the latest research trends in Information Technology at Politecnico di Milano, presented in an easy-to-read format that will also appeal to non-specialists

    Exploring means to facilitate software debugging

    Get PDF
    In this thesis, several aspects of software debugging from automated crash reproduction to bug report analysis and use of contracts have been studied.Algorithms and the Foundations of Software technolog
    corecore