• 제목/요약/키워드: 포인터분석

검색결과 93건 처리시간 0.025초

어셈블리어 코드 기반의 Invalid Function Pointer Access Error 가능성 검출 (Detection of Potential Invalid Function Pointer Access Error based on Assembly Codes)

  • 김현수;김병만
    • 한국정보통신학회:학술대회논문집
    • /
    • 한국해양정보통신학회 2010년도 춘계학술대회
    • /
    • pp.938-941
    • /
    • 2010
  • 일반적으로 컴파일러가 프로그램 번역시 메모리 사용 오류에 대한 검사도 병행하지만, 코드 레벨에서는 검사가 불가능한 함수 포인터는 정상적인 검사가 매우 힘들다. 이에 본 논문에서는 실행 프로그램을 역어셈블하여 만들어진 어셈블리 언어 프로그램을 구문 분석하여 함수 포인터 사용의 형태(패턴)를 어셈블리 명령어 전이도를 기반으로 "Invalid Function Pointer Access Error"에 대한 오류 가능성을 검출한다. 검사대상인 3개 프로그램은 약 10,000개의 함수와 1,000,000 개의 어셈블리 명령어로 구성되어 있으며, 본 논문에서 제안한 방법을 사용하여 함수 포인터의 사용 오류를 검출한 결과 1,100개의 함수 포인터 사용 중 약 500개의 비정상적 함수 포인터의 사용을 검출하였으며 검출에 걸린 시간은 총 82초 정도가 소요되었다.

  • PDF

효율적 데이터 의존성 분석을 이용한 바이너리 기반 Null Pointer Dereference 취약점 탐지 도구 (Efficient Null Pointer Dereference Vulnerability Detection by Data Dependency Analysis on Binary)

  • 김문회;오희국
    • 정보보호학회논문지
    • /
    • 제33권2호
    • /
    • pp.253-266
    • /
    • 2023
  • 널 포인터 역참조 (Null Pointer Dereference) 취약점은 정상적인 메모리 주소를 저장한 포인터가 아닌 널 포인터를 참조할 때 발생하는 취약점이다. 그러므로, 서비스거부공격 (Denial-of-service)와 같은 공격에 악용되어 큰 피해를 줄 수 있기 때문에 식별하고 제거해야 할 중요한 취약점이다. 기존 연구에서는 기호실행과 같은 정적분석을 통해 취약점을 탐지하는 방법을 많이 제안하였다. 그러나 커널과 같은 복잡도가 높은 대형 프로그램을 검사할 때는 경로폭발 (path explosion)과 제약조건(constraint solver) 때문에 효율성이 제한되며 주어진 시간 내에 탐지하지 못할 수 있다. 또는 대형 프로그램 중 일부 함수들 혹은 라이브러리 함수를 탐지할 때 전체 프로그램의 상태를 알 수 없기 때문에 완전한 분석을 수행하지 못해 정확도가 높지 않은 경우가 있다. 본 논문에서는 소스코드가 없는 대규모 프로그램에서 특정한 일부 기능 검사 할 때 빠르고 정확하게 검사하기 위한 가벼운 취약점 탐지도구를 연구개발 하였다. 변수나 포인터를 기호로 표시하고 프로그램 실행을 에뮬레이션하여, 각 실행경로에서 데이터 의존성(data dependency) 분석과 휴리스틱 방법으로 널 포인터 역참조 취약점을 탐지한다. 기존 bap_toolkit과 실험하여 비교하였을 때 오탐율이 8% 높지만, 존재하는 취약점을 모두 탐지해냈다.

스택-포인터 네트워크와 부분 트리 정보를 이용한 한국어 의존 구문 분석 (Korean Dependency Parsing Using Stack-Pointer Networks and Subtree Information)

  • 최용석;이공주
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제10권6호
    • /
    • pp.235-242
    • /
    • 2021
  • 본 연구에서는 포인터 네트워크 모델을 의존 구문 분석에 맞게 확장한 스택-포인터 네트워크 모델을 이용하여 한국어 의존 구문 분석기를 구현한다. 스택-포인터 네트워크 모델 기반 의존 구문 분석기는 인코더-디코더로 구성되어 있으며 다른 의존 구문 분석기와 달리 내부 스택을 갖고 있어 루트부터 시작하는 하향식 구문 분석이 가능하다. 디코더의 각 단계에서는 의존소를 찾기 위해 부모 노드뿐만 아니라 이미 파생된 트리 구조에서 조부모와 형제 노드를 참조할 수 있다. 기존 연구에서는 단순하게 해당 노드들의 합을 계산하여 입력으로 사용하였고, 형제 노드의 경우에는 가장 최근에 방문했던 것만을 사용할 수 있었다. 본 연구에서는 그래프 어텐션 네트워크를 도입하여 이미 파생된 부분 트리를 표현하고 이를 스택-포인터 네트워크의 입력으로 사용하도록 구문 분석기를 수정한다. 세종 코퍼스와 모두의 코퍼스를 대상을 실험한 결과 레이어 2의 그래프 어텐션 네트워크를 이용하여 부분 트리를 표현했을 때 특히 문장 단위의 구문 분석 정확도에서 많은 성능 향상을 확인할 수 있었다.

자바 적시 컴파일에서의 조건 수행을 이용한 비어 있는 포인터의 조기검사 (Early Null Pointer Check using Predication in Java Just-In-Time Compilation)

  • 이상규;최형규;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권7호
    • /
    • pp.683-692
    • /
    • 2005
  • 자바에서는 어떤 객체에 접근하는 작업을 할 때마다 항상 해당 객체에 대한 레퍼런스가 널 (Null)인지 여부를 먼저 검사하도록 규정하고 있다. 자바 언어는 객체 중심 언어이기 때문에 객체 접근이 빈번하며 이러한 널 포인터 검사는 자바 프로그램의 성능을 크게 저하시킬 수 있다. 이러한 성능 저하를 줄이기 위한 방법으로 불필요하게 반복되는 널 포인터 검사를 제거하는 기법이 사용되고 있다. 즉, 적시 (Just-in-Time, JIT) 컴파일러가 사용되는 자바 수행 환경에서 코드 분석을 통해 불필요한 널 포인터 검사 코드를 제거하는 최적화를 한다. 본 논문은 JIT 컴파일러 수행 환경에서 조건 수행(predication)이라는 최근 마이크로프로세서의 특징을 이용하여, 기존의 최적화로는 제거할 수 없는 널 포인터 검사 코드를 추가로 없애는 방법을 제시한다. 일반적으로 널 포인터 검사 코드는 비교와 분기 두 명령어로 이루어져 있는데, 그 중에 비교 명령어를 객체를 사용하기 전에 수행하는 것이 아니라 객체가 정의된 직후에 미리 수행하도록 함으로써 널 포인터 검사를 위해 수행되는 총 비교 명령어 수를 줄이는 것이 이 방법의 주된 내용이다. 실험 결과 기존의 널 포인터 제거로 최적화된 코드에 비해 수행된 비교 명령어의 수는 SPECjvm98에서 평균 3.21$\%$줄었고, 생성된 비교 명령어 수는 1.98$\%$ 줄었다. 이는 인텔 IA-64 아이테니엄(Itanium) 컴퓨터에서 평균 0.32$\%$의 성능 향상을 가져왔다.

SAT에 기반한 포인터가 있는 프로그램을 위한 목적 지향 테스트 데이터 생성 (A Goal-oriented Test Data Generation for Programs with Pointers based on SAT)

  • 정인상
    • 인터넷정보학회논문지
    • /
    • 제9권2호
    • /
    • pp.89-105
    • /
    • 2008
  • 지금까지 테스트 데이터를 자동으로 생성하기 위한 대부분의 연구는 프로그램에 포인터가 존재하지 않는 경우만을 대상으로 하였다. 최근에 포인터가 있는 경우에도 테스트 데이터를 자동으로 생성할 수 있는 방법들이 제안되었지만 테스트할 프로그램 경로를 완전하게 명시해야 하는 경로 기반 방법이거나 프로그램을 실제 실행해야 하는 방법들이다. 이 논문에서는 프로그램 경로를 완전하게 명시하지 않아도 포인터가 있는 프로그램에 대하여 테스트 데이터를 생성할 수 있는 새로운 방법을 제안한다. 제안된 방법은 테스트 데이터 생성 문제를SAT(SATisfiability) 문제로 변환하고 SAT 해결도구를 이용하여 자동으로 테스트 데이터를 생성하는 정적 방법이다. 이를 위해 프로그램을 1차 관계 논리 언어인 Alloy로 변환하고 Alloy 분석기를 통하여 테스트 데이터를 생성한다.

  • PDF

ESD를 위한 멀티마우스 Mischief 적용분석 (Usage Analysis of Multi-mouse Mischief for ESD)

  • 한정혜
    • 정보교육학회논문지
    • /
    • 제19권4호
    • /
    • pp.509-516
    • /
    • 2015
  • 유네스코를 중심으로 국내외적으로 지속가능발전교육(ESD)에 대한 관심이 높아짐에 따라 개발도상국으로의 IT 설비지원 및 SW교육기부 등이 활발하게 이루어지고 있다. 멀티마우스 Mischief는 간단한 파워포인트 교수학습 저작물을 통해 교사용 컴퓨터로 다수의 아이들이 능동적 수업활동을 할 수 있다. 현재 멀티마우스 포인터는 그림과 글자(이름)로 교수학습활동의 식별기능만을 제공하고 있다. 본 논문에서는 마이크로 소프트에서 개발된 멀티마우스의 포인터에 대하여 아이들의 흥미유발과 능동적 참여에 효과적인 포인터 설계전략 알아보기 위하여 포인터 모양(얼굴사진), 크기, 속도의 변인에 대해서 콘텐츠를 개발 적용하여 보았다.

CC-NUMA 다중 프로세서의 캐쉬 일관성 유지를 위한 세그먼트 디렉토리 (Segment Directory for Cache Coherence of CC-NUMA Multiprocessors)

  • 최종혁;박규호
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 1999년도 가을 학술발표논문집 Vol.26 No.2 (3)
    • /
    • pp.6-8
    • /
    • 1999
  • 세그먼트 디렉토리는 CC-NUMA (Cache Coherent Non-Uniform Memory Access)시스템의 전체 벡터와 포인터의 장점만을 가지는 새로운 형태의 디렉토리 요소이다. 포인터가 하나의 프로세서 위치만을 가리키는데 비해, 세그먼트 디렉토리는 복수 개이 프로세서들을 한 번에 가리킬 수 있으면서, 포인터처럼 작은 단위로 사용가능하다. 본 논문에서는 세그먼트 디렉토리를 제한 디렉토리 방법들에 적용하여 디렉토리 넘침의 횟수를 줄인다. 기존의 방법들이 디렉토리 넘침 후의 효율적인 캐쉬 일관성 유지 기법을 제시했던 것에 비해, 세그먼트 디렉토리는 디렉토리 넘침 자체를 제거하는 최초의 시도이다. 디렉토리 넘침의 제거로 CC-NUMA 시스템 대역폭 요구량이 줄어들고, 프로그램 수행이 가속되며, 디렉토리 제어기 점유가 대폭 감소된다. Tango-Lite를 사용한 실행 구동 시뮬레이션을 통하여 세그먼트 디렉토리가 약 80%까지의 디렉토리 넘침을 제거한 것을 확인하였고, 이에 따르는 시스템 성능 향상을 분석하였다.

  • PDF

버퍼 오버플로우 공격 방어를 위한 스택 역위 탐지의 성능 평가 (Performance Evaluation of Detecting Stack Inversion for Defending from Buffer Overflow Attack)

  • 양한근;표창우;이경호
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2002년도 가을 학술발표논문집 Vol.29 No.2 (1)
    • /
    • pp.586-588
    • /
    • 2002
  • 실행 시간 스택 프레임의 하단과 상단을 가리키는 프레임 포인터와 스택 포인터는 항상 일정한 대소 관계를 유지한다. 선형 스택 공격이 진행되면, 이관계가 반전된다. 이때 스택이 역위되었다고 한다. 본 논문은 x86프로세서 계열의 gcc 컴파일러에 스택 역위 탐지기능을 부여하여, 이 컴파일러를 사용하였을 때 실행 프로그램의 성능에 미치는 영향을 분석하였다.

  • PDF

부분키를 사용한 캐쉬 인식 $B^+$ 트리 (Cache Sensitive $B^+$ Trees with Partial Keys)

  • 이동민;김원식;한욱신
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 봄 학술발표논문집 Vol.31 No.1 (B)
    • /
    • pp.94-96
    • /
    • 2004
  • 캐쉬 인식 트리는 주기억장치의 느린 액세스 속도를 캐쉬를 활용함으로써 개선하려는 주기억장치 데이터베이스 인덱스이다. 본 논문에서는 기존의 캐처 인식 트리에서 사용된 기법들을 살펴보고, 이를 통함, 개선하여 새로운 캐쉬 인식 트리를 제안한다. 기존의 캐쉬 인식 트리는 키 압축과 포인터 알축을 따로 고려하였기 때문에 각각 노드의 크기와 키의 길이 변화에 취약한 문제점이 있었다. 이에 반해 제안하는 부분키 캐쉬 인식 $B^{+}$트리는 키와 포인터를 동시에 압축하여 이러한 문제점을 해결하고. 보다 캐쉬 활용도를 높였다. 또한 제안하는 트리의 벌크로드, 삽입, 삭제 알고리즘을 제시하고 이론적인 분석 통길 각 알고리즘이 올바르게 수행되고, 성능에 개선됨을 확인하였다.

  • PDF

Proxy Mobile IPv6 네트워크에서 포인터 포워딩을 이용한 이동성 관리기법 (A New Mobility Management Scheme Using Pointer Forwarding in Proxy Mobile IPv6 Networks)

  • 이명규;김형헌;박석천;양영규
    • 정보처리학회논문지C
    • /
    • 제17C권1호
    • /
    • pp.109-118
    • /
    • 2010
  • Proxy Mobile IPv6(PMIRv6)는 이동노드가 핸드오버 및 위치등록과 관련된 신호절차를 수행하지 않고 네트워크 기반으로 이동성을 관리할 수 있도록 설계된 프로토콜이다. 기존의 PMIPv6에서 이동노드가 이동 할 때마다 Mobile Access Gateway(MAG)는 원거리에 위치한 Local Mobility Anchor(LMA)에 위치등록을 수행해야 하며, 이러한 위치등록절차는 LMA에 부하를 증가시킬 뿐 아니라, 네트워크로 전달되는 전체 트래픽이 증가하게 된다. 따라서, 본 논문에서는 Proxy Mobile IPv6 네트워크에서 포인터 포워딩을 이용한 이동성 관리기법을 제안하였다. 제안기법에서는 MAG가 LMA에 등록하는 대신 포인터 포워딩을 이용하여 이웃한 MAG에 등록함으로써 위치등록비용을 감소할 수 있다. 제안기법의 성능을 분석하기 위하여 내재점 마코프 체인(Imbedded Markov chain) 모델을 이용한 비용 계산식을 구하였으며, 수학적인 비용 분석 결과를 통하여 제안기법이 기존의 PMIPv6 보다 우수한 성능을 제공함을 알 수 있다.