• 제목/요약/키워드: 소스코드 분석

검색결과 341건 처리시간 0.029초

악성코드의 효율적인 분석을 위한 안전한 오픈소스 함수에 대한 시그니처 기반 식별 도구 (A Tool for Signature-Based Identification of Safe Open-Source Functions Toward Efficient Malware Analysis)

  • 이석수;양종환;정우식;김영철;조은선
    • 정보보호학회논문지
    • /
    • 제27권4호
    • /
    • pp.721-729
    • /
    • 2017
  • 악성코드에 대한 빠른 대응을 위해서는 악성코드에 대한 효율적인 분석이 필요하다. 그 중 하나로, 오픈 소스 함수들과 같이 안전한 것으로 확인된 부분을 분석 대상에서 제외하여 방대한 분석 대상을 줄이는 방법이 도움이 될 수 있다. 본 논문은 여러 오픈소스의 동적 링크 라이브러리 파일을 윈도우 환경에서 생성하여 오픈소스의 함수 정보들을 버전별, 컴파일러별로 시그니처 정보를 추출하고 비교하여 변경이 의심스러운 함수를 찾을 수 있는 자동화 도구를 제시한다. 또한 해당 도구는 비교에 사용된 정보들을 DB에 저장, 추후에 사용할 수 있어 분석 시간 오버헤드를 줄일 수 있다.

AST 와 CFG 에 기반한 Node.js 모듈 취약점 분석 (Node.js Module Vulnerability Analysis: Based on AST and CFG)

  • 김희연;오호균;김지훈;유재욱;신정훈;김경곤
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2019년도 추계학술발표대회
    • /
    • pp.475-478
    • /
    • 2019
  • 웹어플리케이션의 발전에 따라 자바스크립트 런타임 플랫폼인 Node.js 의 사용도 증가하고 있다. 개발자들은 Node.js 의 다양한 모듈을 활용하여 프로그래밍을 하게 되는데, Node.js 모듈 보안의 중요성에 비하여 모듈 취약점 분석은 충분히 이루어지지 않고 있다. 본 논문에서는 소스코드의 구조를 트리 형태로 표현하는 Abstract Syntax Tree 와 소스코드의 실행 흐름 및 변수의 흐름을 그래프로 나타내는 Control Flow Graph/Data Flow Graph 가 Node.js 모듈 취약점 분석에 효율적으로 활용될 수 있음을 서술하고자 한다. Node.js 모듈은 여러 스크립트 파일로 나누어져 있다는 점과 사용자의 입력이 분명하다는 특징이 있다. 또한 자바스크립트 언어를 사용하므로 선언된 변수들의 타입에 따라 적용되는 범위인 scope 가 다르게 적용된다는 특징이 있다. 본 논문에서는 이러한 Node.js 모듈의 특징을 고려하여 Abstract Syntax Tree 및 Control Flow Graph/Data Flow Graph 을 어떻게 생성하고 취약점 분석에 활용할 것인지에 대한 방법론을 제안하고, 실제 분석에 활용할 수 있는 코드 구현을 통하여 구체화시키고자 한다.

정적 주요 경로 API 시퀀스를 이용한 소프트웨어 유사성 검사 (Detecting Software Similarity Using API Sequences on Static Major Paths)

  • 박성수;한환수
    • 정보과학회 논문지
    • /
    • 제41권12호
    • /
    • pp.1007-1012
    • /
    • 2014
  • 소스코드가 없이 실행코드만으로 소프트웨어 간의 유사성을 비교하기위해 소프트웨어 버스마크를 이용한다. 소프트웨어 버스마크란 그 소프트웨어만의 고유한 특징으로 소프트웨어 식별에 사용된다. 본 논문에서는 정적 주요경로 상의 API 함수 시퀀스를 이용하여 소프트웨어 간의 유사성을 산정하는 방법을 제시한다. 바이너리코드에서 소프트웨어의 특성이 뚜렷하게 나타나는 API 함수만을 사용하여 소프트웨어 유사성 검사의 신뢰성을 높이고, 정적 분석 기법에 동적 분석 기법의 특징을 적용하여 강인성을 높이는 방법을 모색하였다. 정적 분석으로 바이너리코드의 주요경로를 추출하고, API 함수 시퀀스 간의 효과적인 유사성 측정을 위해 서열정렬 알고리즘인 Smith-Waterman 알고리즘을 이용한 유사성 척도를 제안한다. 버스마크의 신뢰성을 평가하기 위하여 같은 프로그램의 여러 버전을 대상으로 실험하였고, 강인성을 평가하기 위해 오픈소스 소프트웨어의 소스코드를 다양한 컴파일환경으로 바꾸어 실험하였다.

code2vec 모델을 활용한 소스 코드 보안 취약점 탐지 (Detection of Source Code Security Vulnerabilities Using code2vec Model)

  • 양준혁;모지환;홍성문;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제16권2호
    • /
    • pp.45-52
    • /
    • 2020
  • 소스 코드의 보안 취약점을 탐지하는 전통적인 방법은 많은 시간과 노력을 필요로 한다. 만약 보안 취약점 유형들에 대한 좋은 품질의 데이터가 있다면, 이와 머신러닝 기술을 활용해 효과적으로 문제를 해결할 수 있을 것이다. 이에 본 논문은 정적 프로그램 분석에 머신러닝 기술을 활용하여 소스 코드에서 보안 취약점을 탐지하는 방법을 제시하고, 실험을 통하여 가능성을 보인다. 메소드 단위의 코드 조각의 의미를 해석하여 메소드의 이름을 예측하는 code2vec 모델을 사용하고, 모델을 생성하고 검증 및 평가를 하기 위한 데이터로 흔히 발생할 수 있는 보안 취약점을 모아놓은 Juliet Test Suite를 사용하였다. 모델 평가 결과 약 97.3%의 정밀도와 약 98.6%의 재현율로 매우 희망적인 결과를 확인하였고 오픈 소스 프로젝트의 취약점을 탐지함으로써 가능성을 보였다. 향후 연구를 통해 다른 취약점 유형과 다양한 언어로 작성된 소스 코드에 대해서 대응함으로써 기존의 분석 도구들을 대체할 수 있을 것이다.

LLDB를 이용한 iOS 애플리케이션 역공학 분석 방법론 (Methodology of Reverse Engineering iOS application with LLDB)

  • 윤정무;류재철
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2016년도 춘계학술발표대회
    • /
    • pp.239-240
    • /
    • 2016
  • 모바일 환경이 발전하면서 다양한 스마트폰 중 안드로이드 기반의 스마트폰이 시장 점유율을 높여가고 있다. 하지만 최근 보안 이슈로 인해 애플사에서 만든 아이폰을 사용하는 사람이 증가하고 있다. 따라서 아이폰에 대한 어플리케이션 시장 역시 증가 추세이다. 하지만 안드로이드 기반 스마트폰은 어느 정도 소스코드가 공개되어있기에 개발 및 분석이 수월하지만, 애플사의 아이폰은 공개된 소스코드가 극히 적어 개발 및 분석이 상대적으로 어렵다. 따라서 아이폰 애플리케이션에서 오류 발생 시 시스템 라이브러리에서 발생하는 오류는 효율적으로 대처하기가 힘들다. 본 논문은 더 효율적으로 애플리케이션들을 개발하고 유지 및 보수 할 수 있도록 Mac OS X에서 LLDB를 이용한 아이폰 애플리케이션 역공학 분석 방법론을 제안한다.

C언어 기반 프로그램의 소스코드 분석을 이용한 메모리 접근오류 자동검출 기법 (An automated memory error detection technique using source code analysis in C programs)

  • 조대완;오승욱;김현수
    • 정보처리학회논문지D
    • /
    • 제14D권6호
    • /
    • pp.675-688
    • /
    • 2007
  • 잘못된 메모리 접근으로부터 발생되는 오류는 C언어로 작성된 프로그램에서 가장 빈번하게 발생하는 오류이다. 이러한 오류를 자동으로 검출하기 위한 기존의 상용화 도구 및 연구결과는 수행시간에 테스트 대상 프로그램에 가해지는 부가적인 오버헤드가 매우 크거나 검출할 수 있는 메모리 접근오류의 종류가 제한적이다. 본 논문에서는 기존연구의 한계점을 개선한 새로운 메모리 접근오류 검출기법을 제안하고 실험을 통해 기존연구와의 비교분석을 수행하였다. 본 논문은 C언어 기반 프로그램의 소스코드 분석기법에 기반하고 있으며, 테스트 대상 프로그램에 할당된 동적 메모리 블록의 주소 범위에 대해 컬러링 기법을 적용한다. 본 논문에서 제안하는 오류검출기법은 기존의 바이너리 코드 분석기법에 비해 다양한 형태의 메모리 접근오류를 검출할 수 있으며, 테스트 대상 프로그램의 수행시간에 요구되는 메타데이터의 유지 및 갱신연산에 따른 공간 및 성능오버헤드가 기존의 소스코드 분석기법에 비해 개선되었다. 또한 본 논문에서 제안하는 기법은 테스트 대상 프로그램과 공유 라이브러리간의 호환성 문제를 일으키지 않으며, 메모리 할당함수의 내부 메커니즘을 변경하지 않는 특징을 갖고 있다.

기존 자바 파서 확장 기반의 코드 정적 분석기 구현 (Implementing A Code Static Anaylsis based on the Java Parser)

  • 박지훈;박보경;이근상;김영철
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 춘계학술발표대회
    • /
    • pp.641-644
    • /
    • 2017
  • 현재 많은 테스팅 기법으로도 생산되는 결과물들의 잠재적 오류 발생을 예측하기 힘들다. 기존 오픈 소스 정적 분석 도구들(Source Navigator)은 불충분한 정보를 제공하여 원하는 내부 정보를 축출하기 어렵다. 이를 해결하기 위해, 기존 오픈 소스의 자바 파서의 개선을 통해, 코드 내부 품질 측정을 고려하고자 한다. 즉 기존 자바 파서 개선 기반의 "추상구문트리로 변환된 코드"에서 "직접 코드 정보 추출" 방안의 구현이다. 이를 통해, 기존의 SNDB보다 더 많은 코드 정보 추출로 코드 내부 품질 측정이 더 수월할 것을 기대한다.

XML을 이용한 디자인 패턴 활용구조 (A Framework for using Design Pattern with the XML)

  • 김운용;최영근
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2001년도 추계학술발표논문집 (상)
    • /
    • pp.335-338
    • /
    • 2001
  • 디자인패턴은 디자인 경험을 표현하기 위한 새로운 메커니즘으로 미래의 유사 상황에서 다시 적용될 수 있는 과거에 잘 정의된 설계에 대한 정보를 기록하는 것이며 소프트웨어 개발 설계에서 재사용성을 증가시킨다. 그러나 광범위한 관심과 활용에도 불구하고, 패턴명세와 활용은 주로 개발자의 수작업을 통해 이루어지기 때문에 일관된 형태의 분석과 활용이 어렵다. 이로 인해 오류 발생 빈도를 높일 뿐 아니라 프로그램 개발이 어렵고 많은 시간을 필요로 한다. 따라서 본 논문에서는 디자인패턴을 구조화된 전자문서로 표현하기 위한 XML 표기방법과 디자인패턴 활용시스템 구조를 제시한다. 또한 이러한 표기법과 활용구조를 통해 소스코드 자동생성 지원 시스템을 제시하고, 적용 예를 보이고자한다. XML을 이용한 구조화된 문서활용은 소스코드 생성시 사용자들에게 더 작은 코드를 작성하게 만들고, 더 안정된 시스템을 구축한 수 있게 한다. 또한 XML의 다양한 기술에 접목함으로써 패턴 활용을 극대화할 수 있다.

  • PDF

서바이벌 네트워크 개념을 이용한 저자 식별 프레임워크: 의미론적 특징과 특징 허용 범위 (Authorship Attribution Framework Using Survival Network Concept : Semantic Features and Tolerances)

  • 황철훈;신건윤;김동욱;한명묵
    • 정보보호학회논문지
    • /
    • 제30권6호
    • /
    • pp.1013-1021
    • /
    • 2020
  • 악성코드 저자 식별은 알려진 악성코드 저자의 특징을 이용하여 알려지지 않은 악성코드의 저자 특징과 비교를 통해 악성코드를 식별하기 위한 연구 분야이다. 바이너리를 이용한 저자 식별 방법은 실질적으로 배포된 악성코드를 대상으로 수집 및 분석이 용이하다는 장점을 갖으나, 소스코드를 이용한 방법보다 특징 활용 범위가 제한된다. 이러한 한계점으로 인해 다수의 저자를 대상으로 정확도가 저하된다는 단점을 갖는다. 본 연구는 바이너리 저자 식별에 한계점을 보완하기 위하여 '바이너리로부터 의미론적 특징 정의'와 '서바이벌 네트워크 개념을 이용한 중복 특징에 대한 허용 범위 정의' 방법을 제안한다. 제안한 방법은 바이너리 정보로부터 Opcode 기반의 그래프 특징을 정의하며, 서바이벌 네트워크 개념을 이용하여 저자별 고유 특징을 선택할 수 있는 허용범위를 정의하는 것이다. 이를 통해 저자별 특징 정의 및 특징 선택 방법을 하나의 기술로 정의할 수 있으며, 실험을 통해 선행연구보다 5.0%의 정확도 향상과 함께 소스코드 기반 분석과 동일한 수준의 정확도 도출이 가능함을 확인할 수 있었다.

JUnit 텍스트 UI 테스트 러너를 활용한 자바 프로그램 단위 테스트 고찰 (Unit Testing of Java Program using JUnit Text UI Test Runner)

  • 이채영;윤회진;박영철
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(B)
    • /
    • pp.258-260
    • /
    • 2012
  • 본 논문은 오픈소스 자바 어플리케이션인 JTopas를 대상으로 단위 메소드 테스트를 수행하고, 기존의 IDE 중심의 JUnit 테스트 환경이 아닌 텍스트 UI 테스트 러너 기반으로 테스트를 수행함으로써 얻는 효과를 기술한다. 또한 리눅스 환경을 활용하여 쉘 프로그램으로 테스트 실행 프로그램을 작성하였으며, 이를 통하여 테스트 실행 결과 분석을 용이하게 할 수 있다. 동시에 테스트 코드와 테스트 대상 소스 코드를 관리하는 패키지 구성 방법을 보임으로써, TDD등에서 요구하는 테스트 코드 작성과 소스 코드 작성을 동시에 수행하는 환경을 지원하는 효과가 있다.