• 제목/요약/키워드: 소프트웨어 소스 코드

검색결과 320건 처리시간 0.034초

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

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

신뢰성 시험 프로세스 개선을 통한 무기체계 내장형 소프트웨어 소스코드 품질확보에 관한 연구 (A Study on Quality Assurance of Embedded Software Source Codes for Weapon Systems by Improving the Reliability Test Process)

  • 권경용;주준석;김태식;오진우;백지현
    • 정보과학회 논문지
    • /
    • 제42권7호
    • /
    • pp.860-867
    • /
    • 2015
  • 국방 분야에서 무기체계가 첨단화 되면서 무기체계 내장형 소프트웨어의 중요성이 증대되고 있으며, 현대의 전장상황이 네트워크 중심전(NCW)으로 전개됨에 따라 무기체계 내장형 소프트웨어의 신뢰성 및 품질 확보가 중요시 되고 있다. 또한 내장형 소프트웨어의 문제점이 개발단계에서 양산단계로 이관되어 막대한 손실이 발생되고 있으며, 개발업체에서는 소프트웨어 신뢰성 시험에 대한 체계적인 활동이 이루어지지 않고 있다. 본 연구에서는 다양한 소스코드 신뢰성 검증사례 분석을 바탕으로 소프트웨어 소스코드 품질검증체계 확립에 대한 접근방안을 제시한다. 방위사업청의 "무기체계 소프트웨어 개발 및 관리 매뉴얼"의 동적분석 평가항목 및 코드실행률 목표값 기준을 제시하고, 개발업체의 소프트웨어 개발능력 향상을 유도하기 위한 방안을 제안한다.

코드 비 일관적 식별자 검출 기법 (Detecting Inconsistent Code Identifiers)

  • 이성남;김순태;박수용
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제2권5호
    • /
    • pp.319-328
    • /
    • 2013
  • 소프트웨어 유지 보수 담당자는 코드 식별자를 중심으로 소프트웨어의 소스 코드를 이해한다. 그렇기 때문에 코드의 식별자를 비 일관적으로 사용하게 되면 소프트웨어를 이해하는데 어려움을 격게 되어 결국 소프트웨어의 유지보수 비용이 증가하게 된다. 이러한 비 일관적인 식별자 사용의 문제를 해결하기 위하여 개발자가 상호 검토하는 방법이 있으나 코드의 양이 많은 경우에 전체 코드를 확인하는 것은 불가능할 수 있다. 본 논문에서는 자연어 처리 기법을 사용하여 자동으로 Java 코드 내의 비 일관적인 식별자를 검출하기 위한 기법을 소개한다. 이 기법에서는 프로젝트 내의 모든 식별자를 추출 및 구문 분석하고, 구조상 유사어와 의미상 유사어를 분류한 후 최종적으로 제안된 규칙을 기반으로 비 일관적인 식별자를 검출한다. 본 논문에서는 지원 도구인 CodeAmigo를 개발하여 제안된 방법을 지원하였다. 우리는 지원 도구를 두 가지의 널리 알려진 Java기반 오픈 소스 프로젝트에 적용하고, 검출 결과의 정확도를 계산하여 제안된 접근 방법의 타당성을 확인하였다.

추상적 텍스트 요약 기반의 메소드 이름 제안 모델 (A Method Name Suggestion Model based on Abstractive Text Summarization)

  • 주한새
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2022년도 제66차 하계학술대회논문집 30권2호
    • /
    • pp.137-138
    • /
    • 2022
  • 소스 코드 식별자의 이름을 잘 정하는 것은 소프트웨어 엔지니어링에서 중요한 문제로 다루어지고 있다. 프로그램 엔티티의 의미있고 간결한 이름은 코드 이해도에 중요한 역할을 하며, 소프트웨어 유지보수 관리 비용을 줄이는 데에 큰 효과가 있다. 이러한 코드 식별자 중 평균적으로 가장 복잡한 식별자는 '메소드 이름'으로 알려져 있다. 본 논문에서는 메소드 내용과 일관성 있는 적절한 메소드 이름 생성을 자연어 처리 태스크 중 하나인 '추상적 텍스트 요약'으로 치환하여 수행하는 트랜스포머 기반의 인코더-디코더 모델을 제안한다. 제안하는 모델은 Github 오픈소스를 크롤링한 Java 데이터셋에서 기존 최신 메소드 이름 생성 모델보다 약 50% 이상의 성능향상을 보였다. 이를 통해 적절한 메소드 작명에 필요한 비용 절감 달성 및 다양한 소스 코드 관련 태스크를 언어 모델의 성능을 활용하여 해결하는 데 도움이 될 것으로 기대된다.

  • PDF

소스코드 요약을 이용한 대규모 소프트웨어 유사도 평가 (Similarity Detection for Large Scale Software Using Abstracted Source Code)

  • 박성수;한환수
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(A)
    • /
    • pp.39-41
    • /
    • 2012
  • 프로그램 코드의 유사도 측정에 대한 방법은 여러 가지 존재하고 있으며 유사도 측정 프로그램도 많이 존재한다. 이런 프로그램 유사도 측정 도구는 중소규모 소프트웨어 프로젝트에 많이 사용되고 있으나, 실제 대규모 소프트웨어의 유사도 검사를 위해서 사용하기에는 한계가 존재한다. 지금까지 대규모 소프트웨어의 유사도를 측정할 수 있는 객관적 방법이 거의 제시되지 않고 있어, 본 논문에서는 대규모 소프트웨어의 소스코드를 요약하여 서로 다른 프로그램의 유사도를 측정하는 방법을 제시한다.

C 소스코드를 이용한 PAD 생성 시스템 구현 (Implementation of the PAD Generating System Based on C Source Code)

  • 천준석;임진수;우균
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2013년도 춘계학술발표대회
    • /
    • pp.1089-1092
    • /
    • 2013
  • 컴퓨터 하드웨어의 발달로 인해 하드웨어의 성능을 충분히 발휘할 수 있는 소프트웨어의 개발이 요구되고 있다. 소프트웨어가 복잡해질수록 개발 시 인적 비용, 물적 비용, 시간 비용이 증가하는데, 실제 개발 비용보다는 개발 후 유지보수에 사용되는 비용이 훨씬 크다. 유지보수는 코드 수정을 통해 이루어지는데, 다른 사람이 작성한 코드를 수정할 경우에는 코드의 이해가 요구된다. 코드는 흐름도를 이용하게 되면 좀 더 쉽게 이해할 수 있는데, 복잡한 코드를 흐름도로 작성할 경우 흐름도가 자체가 복잡해져서 코드 이해가 어려워지는 경우가 많다. 이러한 단점을 보완하기 위한 방법의 하나로 1979년 PAD가 개발되었다. 이 논문은 C 소스코드를 입력받아 PAD를 자동으로 생성하는 시스템을 제안한다. 이 시스템을 이용하면 유지보수 비용에 소비되는 시간과 노력을 절약할 수 있을 것으로 생각된다.

임베디드 소프트웨어의 에너지 효율성과 언어 변환 지원을 위한 코드 리팩토링 기법 확장 (Extension of Code Refactoring Technique to Support Energy Efficiency and Language Conversion of Embedded Software)

  • 남승우;홍장의
    • 융합정보논문지
    • /
    • 제8권2호
    • /
    • pp.91-103
    • /
    • 2018
  • 리팩토링은 기존 레거시 코드에 대한 품질을 확보하기 위한 공학적 기술로서, 프로그램의 기능은 변하지 않으면서 내부 구조를 개선하는 작업이다. 다양한 오픈 소스 소프트웨어가 재사용되면서, 기술적 이유 또는 시장 요구로 인하여 프로그래밍 언어 변환을 통한 소스 코드 재사용이 점진적으로 요구되고 있다. 이러한 상황에서 에너지 효율성을 고려하는 언어 변환 리팩토링 기법은 임베디드 소프트웨어 개발의 생산성은 물론 품질 향상을 위한 중요한 수단으로 여겨지고 있다. 본 논문에서는 기존에 제시된 에너지 절감형 리팩토링 기법에 추가하여 프로그래밍 언어의 문법 및 구조의 비교와 매핑을 통해 다른 언어로 변환하는 코드 리팩토링 기법을 제시하였다. 제안하는 리팩토링 기법의 활용은 소프트웨어 개발 언어의 환경변화에 대처하고, 기존 코드의 재사용을 높임으로써 신속한 소프트웨어 개발 및 품질 향상을 통한 제품의 경쟁력 향상을 기대할 수 있다.

소스 코드 분석을 통한 코딩 패턴의 특성 평가에 관한 연구 (A Study on the Evaluation of Coding Pattern Quality Using Source Code Analysis)

  • 김영태;임재현;공헌택;김치수
    • 한국산학기술학회:학술대회논문집
    • /
    • 한국산학기술학회 2010년도 추계학술발표논문집 1부
    • /
    • pp.402-405
    • /
    • 2010
  • 본 논문에서는 소스 코드에 자주 나타나는 코딩 패턴을 자동으로 추출하기 위하여 소스 코드를 분석하고 특성을 평가한다. 기존에 소스 코드에 대한 패턴 마이닝을 이용한 코딩 패턴 감지 방법이 제안되었지만, 수동으로 조사 가능한 코딩 패턴의 수는 한정되어 있기 때문에 대규모 소프트웨어 등에 대한 충분한 분석은 할 수 없었다. 따라서 본 논문에서는 개발자가 분석하고자 하는 코딩 패턴에 대한 자동 추출을 목표로 코딩 패턴의 특성 평가 지표를 선정하여 소스 코드에 대한 분석을 수행한다.

  • PDF

바이트코드 분석을 이용한 자바 프로그램 표절검사기법 (A Plagiarism Detection Technique for Java Program Using Bytecode Analysis)

  • 지정훈;우균;조환규
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제35권7호
    • /
    • pp.442-451
    • /
    • 2008
  • 대부분의 표절검사 시스템들은 소스코드를 이용해 유사도를 계산하고 표절 프로그램을 찾아낸다. 소스코드를 이용하여 표절검사를 수행할 경우, 소스코드 보안문제가 발생할 수 있다. 목적 코드를 이용한 표절검사는 소스코드 보안문제에 대한 좋은 대안이 될 수 있다. 본 논문에서는 자바 프로그램의 표절검사에 대하여 소스코드 없이 바이트코드를 이용해 표절검사를 수행하는 방법을 제시한다. 바이트코드를 이용한 표절검사는 크게 두 단계로 진행된다 먼저, 자바 클래스 파일로부터 메소드의 코드영역을 분석해 토큰 시퀀스를 생성한 다음 적응적 지역정렬을 이용해 유사도를 계산한다. 실험 결과, 소스코드와 바이트코드의 유사도는 비슷한 분포를 보였다. 또한, 소스코드 쌍과 바이트코드 쌍의 유사도 상관관계가 충분히 높게 측정되었다. 본 논문에서 제안한 바이트코드 표절검사 시스템은 소스코드를 이용해 직접 표절을 검사하기 전 단계에서 1차적인 검증도구로 활용할 수 있다.

비주얼 C++소스 코드를 위한 obfuscator 구현 (Implementation of an Obfuscator for Visual C++ Source Code)

  • 장혜영;조성제
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제35권2호
    • /
    • pp.59-69
    • /
    • 2008
  • 자동화된 obfuscation은 보안 목적으로 코드를 이해하기 어렵게 만들어 역공학 공격을 방어하는데 가장 효과적인 방식이라고 알려져 있다. 본 논문에서는 역공학 공격과 같은 소프트웨어 지적재산권의 침해로부터 마이크로소프트사의 비주얼 C++ 소스 프로그램을 보호하기 위한 obfuscation 기법을 제안하고 구현하였다. 즉, 원본 비주얼 C++ 소스 프로그램을 기능은 동일하지만 이해하기에는 훨씬 힘든 또 다른 프로그램으로 변환시켜 주는 도구인 코드 obfuscator를 구현하였다. 비주얼 C++ 소스를 다루기 위해 ANTLR이라는 파서 생성기를 도입하여, '주석 제거', '식별자 스크램블', '변수 분할', '배열 중첩', '클래스 삽입', '루프 조건 확장'. '부가 피연산자 삽입', '무의미 코드 삽입' 등의 변환 방식들을 구현하였다. 또한, 복잡도, 복원력, 비용 등의 측면에서 본 obfuscator의 성능과 유효성을 평가하였다. 원본 소스 코드와 비교하여 실험한 결과, 변환된 소스 코드가 실행시간 오버헤드를 일부 유발시키긴 하지만 프로그램 보호에는 효과적임을 알 수 있었다.