Software/AI Security

전세옥, 김석휘, 최광훈, CVE 사례 기반 소스 코드 취약점 슬라이스 추출의 한계 분석 (Analyzing the Limitations of CVE‐Based Source‐Code Vulnerability Slice Extraction), WISA 2025 포스터 발표, 제주, 8월20일-8월22일.

딥러닝 기반 소스 코드 취약점 탐지 기법은, 슬라이스 형태로 구성된 취약한 소스 코드를 학습 데이터로 활용하여 뉴럴 네트워크를 훈련시키고, 이를 통해 새로운 취약점을 탐지하는 방식이다. 이러한 기법의 성능을 높이기 위해서는 양질의 학습 데이터를 구축하는 것이 중요하다. 대부분의 기존 연구에서는 Joern의 Code Property Graph (CPG)에서 슬라이스를 추출하는 방식을 사용하고 있다. 그러나 대규모 학습 데이터를 구축하는데 여러 어려움이 존재한다. 본 연구에서는 11가지 CVE 취약점 사례를 분석하여, CPG 기반 슬라이스 추출 시 발생하는 두 가지 주요 문제점을 확인하였다. 첫째, 슬라이스의 에지가 프로그램 그래프에서 누락되는 현상이 발생하며, 둘째, 슬라이스의 소스와 싱크를 명확하게 지정하기 어려운 경우가 있다. 이러한 분석 결과를 바탕으로, 보다 정교하고 신뢰성 있는 슬라이스 추출 방법에 대한 추가 연구가 필요하다.

Deep learning-based techniques for detecting source code vulnerabil- ities train neural networks using slices of vulnerable source code and automati- cally identify new vulnerabilities. To improve the performance of these tech- niques, constructing high-quality training datasets is essential. Most existing studies extract code slices from a Code Property Graph (CPG) generated by Joern. However, building large-scale training datasets using this method remains challenging. In this study, we analyze 11 real-world CVE vulnerability cases and identify two critical issues with CPG-based slice extraction. First, we observed that certain edges crucial for accurate slicing are missing from the generated CPG. Second, clearly defining the source and sink nodes for slicing is sometimes difficult, resulting in ambiguous slice boundaries. These findings highlight the need for further research into more precise and reliable slice extraction methods.

Available in:


최주언, 차건진, 김미수, 엄익채, 최광훈, LLM으로 침해사고 보고서와 취약점 점검 목록을 분석하여 사고 연관 점검 항목을 선별하는 방법 (A Method for Selecting Security Checklist Items Associated with Incidents by Analyzing Security Incident Reports and Vulnerability Checklists Using LLM), WISA 2025 포스터 발표, 제주, 8월20일-8월22일.

IT 시스템 보안을 위해 취약점 점검 항목을 기반으로 주기적인 분석과 테스트를 수행하는 방식이 활용된다. 이 접근이 효과적이기 위해서는 실제 공격 방식과 연관된 항목이 포함되어야 하며, 이에 대한 평가가 필요하다. 기존에는 모의 침투 테스트나 점검 통계를 활용해 왔지만, 인력 비용과 도구의 한계라는 문제가 있다. 본 연구에서는 대형언어모델(LLM)을 활용해 침해사고 보고서와 취약점 점검 목록을 분석하고, 사고와 관련된 점검 항목을 자동으로 선별하는 방법을 제안한다. 이 방식은 도구 의존성을 줄이고 자동화가 가능하며, 점검 항목의 우선순위 평가에 기초 자료로 활용될 수 있다. 실증을 위해 국내 정보보안 업체가 작성한 187건의 침해사고 보고서를 한국인터넷진흥원의 347개 세부 항목 기준으로 분석하고, 보고된 공격과 항목 간 관련성을 1~5단계로 평가하는 시스템을 구현하였다. 그 결과, 특정 보안 분야에 공격이 집중되었고, 반복적으로 등장한 항목을 기반으로 현장에서 우선 관리할 취약점을 데이터 기반으로 도출할 수 있음을 확인하였다.

Periodic analysis and testing based on vulnerability checklists are widely used to enhance IT system security. For this approach to be effective, the checklist must include items closely related to actual attack techniques, and a systematic evaluation of their relevance is required. Traditional methods such as penetration testing and statistical analysis of assessment results have been used, but these approaches face challenges such as high personnel costs and the limitations of automated tools. This study proposes a method that leverages large language models (LLMs) to analyze security incident reports and vulnerability checklists, enabling the automatic identification of checklist items associated with real-world incidents. This approach reduces tool dependency, enables automation, and provides a data-driven foundation for prioritizing security checklist items. For validation, we analyzed 187 security incident reports produced by do- mestic security firms, evaluating their relevance to 347 detailed checklist items from the Korea Internet & Security Agency (KISA) on a five-point scale. The results revealed that certain security domains are repeatedly targeted, and that incident-prioritized vulnerabilities can be systematically identified based on fre quently recurring items in the data.

Available in:


Jaekwon Kim, Hyosang Lim, Kwanghoon Choi, Certified Robustness of Antenna Selecting Neural Networks for Massive MIMO Wireless Communications, IEEE Access, vol.13, pp.88609-88622, 2025.

미래의 무선 통신 시스템은 대규모 안테나를 활용해 고속 데이터 전송을 지원해야 하지만, 동시에 RF 체인의 비용도 고려해야 합니다. 이를 해결하기 위한 방법으로는 일부 안테나만 활성화하는 안테나 선택 기법이 있으며, 최근에는 전통적인 기호 기반 방식보다 신경망 기반 접근법이 고정된 추론 복잡도와 하드웨어 적합성 측면에서 더 유망하다는 평가를 받고 있습니다. 그러나 자율주행이나 드론과 같은 6G 안전 필수 응용 분야에서는, 신경망의 불투명한 결정 과정이 신뢰성 확보에 걸림돌이 됩니다. 특히, 어떤 안테나를 선택했는지에 대한 명확한 해석이 어렵기 때문입니다. 이 논문은 이러한 상황에서 신경망 기반 안테나 선택의 강건성(robustness)을 분석합니다. 일반적인 응용에서는 임의 입력에 대한 경험적 강건성만으로 충분할 수 있지만, 모든 가능한 입력 교란에 대해 일관된 결과를 보장하는 수학적 인증 강건성(certified robustness)은 안전이 중요한 시스템에서는 필수적입니다. 비전이나 자연어 분야에서는 인증 강건성 연구가 활발하지만, 통신 분야에서의 적용은 본 논문이 최초입니다. 우리는 안테나 선택 신경망에 대한 강건성을 수학적으로 정의하고, 선형 완화 기반 교란 분석(linear relaxation–based perturbation analysis) 기법을 적용합니다. 그 결과, 뉴럴 네트워크 가지치기(pruning)가 효율성을 높일 뿐 아니라 인증 강건성도 개선하는 것으로 나타났습니다. 또한 인증 강건성과 경험적 강건성 사이에 큰 차이가 존재함을 확인하여, 향후 더 나은 인증 기법의 필요성을 제시합니다.

Future wireless systems with massive antennas must balance data rates and RF chain costs. Antenna selection activating only a subset of antennas addresses this challenge. Recently, neural network–based approaches have shown promise over traditional symbolic methods, offering fixed inference complexity and hardware suitability. However, their black-box nature raises concerns for safety-critical 6G applications like autonomous driving and drones, where reliable communication is vital. Specifically, it is often unclear how the neural network determines which antennas to select, making it difficult to interpret or trust the decision-making process. This paper investigates the robustness of neural networks for antenna selection in such contexts. While empirical robustness against finite random inputs sampled from a uniform distribution may suffice for general applications, certified robustness ensuring consistent inference under all possible perturbations is essential for safety-critical systems. Although certified robustness is well studied in vision and language tasks, we are the first, to our knowledge, to explore its application in telecommunications. We mathematically define robustness for antenna-selection networks and apply state-of-the-art linear relaxation–based perturbation analysis. Our findings show that pruned networks, beyond being more efficient, also exhibit superior certified robustness compared to their unpruned counterparts. We further compare certified and empirical robustness, identifying a significant gap that suggests the need for improved certification methods. Additionally, in our antenna selection setting, we observe that removing monotonic activations in the final layer improves certified robustness.

Available in: (PDF)


전세옥, 장현지, 정민수, 이서준, 오다영, 최광훈, 김석휘, 조성우, 김정미, 전기차 충전 인프라 오픈소스 소프트웨어에서의 취약한 코드 복제 탐지: VUDDY 를 활용한 사례 연구, 한국정보처리학회 ACK 2024, 전남대학교, 10월31일-11월2일.

오픈소스 코드 재사용은 비용 절감과 생산성을 높이지만, 관리의 복잡성으로 인해 취약점이 발 생할 수 있다. 본 논문은 전기차 충전 인프라에서 사용되는 오픈소스 소프트웨어의 취약한 코드 복 제를 탐지하는 방법을 제안한다. VUDDY 와 IoTCube 를 활용해 분석한 결과, open-ocpp 에서 zlib 복제 로 인한 취약한 코드 클론 사례가 발견되었으며, 이는 CVE-2016-9840 및 CVE-2016-9841 과 관련이 있었다. 연구는 코드 복제 취약점 탐지를 통한 전기차 충전 인프라 보안 강화 가능성을 보여주었다.

Available in: PDF


전세옥, 김은총, 최광훈, 그래머 퍼징을 활용한 웹 취약점 자동 탐색 도구 개발 및 평가, 한국정보보호학회 호남지부 추계학술대회, 목포대학교, 2023년 9월 22일(학부생 구두 발표, 최우수논문상).

본 연구에서는 웹 취약점 스캐너의 복잡한 취약점 탐지 성능을 향상시키기 위해 그래머 퍼저를 활용하고자 한다. 이를 위해 그래머 퍼저를 사용한 페이로드를 생성 방법론을 제시하였고, 그래머 퍼징을 적용한 웹 취약점 스캐너인 웹 퍼저를 개발했다. 추가적으로 효과적인 웹 취약점 탐지를 위해 크롤링, 비동기, 병렬 처리의 중요성을 강조했다.

Available in:


다계층 프로그래밍언어 Links의 웹 취약점 분석 (A Web vulnerability analysis of multi-tier language Links)

이규해, 창병모, 최광훈, 한국소프트웨어종합학술대회(KSC2022), 2022년 12월20일-23일.

다계층 프로그래밍 언어(Multi-tier programming language)란 시스템의 각 계층의 구성 요소를 같은 컴파일 단위로 혼합해 개발과정 중 오류가 발생하기 쉬운 단점을 개선하기 위해 제안된 언어이다. 그 결과 각 계층을 개발할 때 발생할 수 있는 오류를 줄이는 장점이 있다. 그러나 현재까지 다계층 프로그래밍 언어로 작성한 웹 프로그램의 취약점을 분석하는 연구가 없었다. 이러한 다계층 프로그래밍 언어의 한 종류인 Links로 작성된 프로그램을 대상으로 Links 프로그램의 웹 취약점을 분석한 결과를 리포트 한다.
(이 논문은 OWASP ZAP을 이용한 다계층 프로그래밍 언어 Links의 웹 취약점 분석(이규해, 창병모, 최광훈, 한국소프트웨어종합학술대회-KSC2021, 2021년 12월20일-22일) 포스터 논문을 확장한 구두 발표 논문임)

Available in:


자체수정 코드를 탐지하는 정적 분석 방법의 LLVM 프레임워크 기반 구현 및 실험 (An LLVM-Based Implementation of Static Analysis for Detecting Self-Modifying Code and Its Evaluation)

유재일, 최광훈, 한국정보보호학회 논문지, 32권, 2호, Pages 171-179, 2022년 4월.

자체 수정 코드(Self-Modifying-Code)란 실행 시간 동안 스스로 실행 코드를 변경하는 코드를 말한다. 이런 기법은 특히 악성코드가 정적 분석을 우회하는 데 악용된다. 따라서 이러한 악성코드를 효과적으로 검출하려면 자체 수정 코드를 파악하는 것이 중요하다. 그동안 동적 분석 방법으로 자체 수정 코드를 분석해왔으나 이는 시간과 비용이 많이 든다. 만약 정적 분석으로 자체 수정 코드를 검출할 수 있다면 악성코드 분석에 큰 도움이 될 것이다. 본 논문에서는 LLVM IR로 변환한 바이너리 실행 프로그램을 대상으로 자체 수정 코드를 탐지하는 정적 분석방법을 제안하고, 자체 수정 코드 벤치마크를 만들어 이 방법을 적용했다. 본 논문의 실험 결과 벤치마크 프로그램을 컴파일로 변환한 최적화된 형태의 LLVM IR 프로그램에 대해서는 설계한 정적 분석 방법이 효과적이었다. 하지만 바이너리를 리프팅 변환한 비정형화된 LLVM IR 프로그램에 대해서는 자체 수정 코드를 검출하기 어려운 한계가 있었다. 이를 극복하기 위해 바이너리를 리프팅 하는 효과적인 방법이 필요하다.

Self-Modifying-Code is a code that changes the code by itself during execution time. This technique is particularly abused by malicious code to bypass static analysis. Therefor, in order to effectively detect such malicious codes, it is important to identify self-modifying-codes. In the meantime, Self-modify-codes have been analyzed using dynamic analysis methods, but this is time-consuming and costly. If static analysis can detect self-modifying-code it will be of great help to malicious code analysis. In this paper, we propose a static analysis method to detect self-modified code for binary executable programs converted to LLVM IR and apply this method by making a self-modifying-code benchmark. As a result of the experiment in this paper, the designed static analysis method was effective for the standardized LLVM IR program that was compiled and converted to the benchmark program. However, there was a limitation in that it was difficult to detect the self-modifying-code for the unstructured LLVM IR program in which the binary was lifted and transformed. To overcome this, we need an effective way to lift the binary code.

Available in: LINK


A GQM Approach to Evaluation of the Quality of SmartThings Applications Using Static Analysis

Byeong-Mo Chang, Janine Cassandra Son, Kwanghoon Choi KSII Transactions on Internet and Information Systems, 14(6), June 2020.

SmartThings는 사용자들이 자신만의 애플리케이션인 SmartApp을 만들어 개인적으로 사용하거나 공개 배포할 수 있도록 지원하는 가장 인기 있는 오픈형 홈 자동화 IoT 플랫폼 중 하나이다. 이러한 개방성은 SmartApp의 품질에 대해 높은 기준을 요구하지만, 지금까지 이를 체계적으로 평가한 연구는 많지 않다. 소프트웨어 품질 관리의 일환으로, 코드 리뷰는 코딩 표준 위반을 감지하고 모범 사례가 준수되도록 확인하는 역할을 한다. 본 연구의 목적은 잘 알려진 Goal/Question/Metric(GQM) 방법론에 기반하여 체계적으로 설계된 품질 메트릭을 제안하고, 정적 분석을 활용한 자동 코드 리뷰를 통해 SmartApp의 품질을 평가하는 것이다. 먼저 우리는 GQM 방법론에 따라 정적 분석 규칙을 구성한 후, 이를 실제 SmartApp에 적용하여 분석 및 평가를 수행하였다. 공식적으로 배포된 105개의 SmartApp과 커뮤니티에서 제작된 74개의 SmartApp을 분석한 결과, 두 종류 모두에서 높은 비율의 위반 사례가 발견되었으며, 그 중 보안 관련 위반이 가장 많았다. 본 연구의 정적 분석 도구는 신뢰성, 유지보수성, 보안 측면의 위반 사항을 효과적으로 점검할 수 있으며, 자동 코드 리뷰 결과는 SmartApp에서 흔히 발생하는 위반 유형을 파악하는 데 도움을 준다.

SmartThings is one of the most popular open platforms for home automation IoT solutions that allows users to create their own applications called SmartApps for personal use or for public distribution. The nature of openness demands high standards on the quality of SmartApps, but there have been few studies that have evaluated this thoroughly yet. As part of software quality practice, code reviews are responsible for detecting violations of coding standards and ensuring that best practices are followed. The purpose of this research is to propose systematically designed quality metrics under the well-known Goal/Question/Metric methodology and to evaluate the quality of SmartApps through automatic code reviews using a static analysis. We first organize our static analysis rules by following the GQM methodology, and then we apply the rules to real-world SmartApps to analyze and evaluate them. A study of 105 officially published and 74 community-created real-world SmartApps found a high ratio of violations in both types of SmartApps, and of all violations, security violations were most common. Our static analysis tool can effectively inspect reliability, maintainability, and security violations. The results of the automatic code review indicate the common violations among SmartApps.

Available in: PDF


A Practical Intent Fuzzing Tool for Robustness of Inter-Component Communication in Android Apps

Kwanghoon Choi, Myungpil Ko, Byeong-Mo Chang, KSII Transactions on Internet and Information Systems, Vol.12, Issue 9, pp.4248-4270, September 30, 2018.

본 연구는 안드로이드 앱의 견고성 문제를 유발하는 Intent 취약점을 탐지하기 위한 실용적인 Intent 퍼징(Fuzzing) 도구를 개발하는 것을 목표로 한다. 우리는 두 가지 새로운 아이디어를 제안하였다. 첫째, Intent의 구조를 기술할 수 있는 **Intent 명세 언어(Intent specification language)**를 설계하여 퍼징 도구의 유연성을 확보하였다. 둘째, 고유한 실패를 자동으로 분류할 수 있는 자동 분류(tally) 방법을 제안하였다. 이 두 가지 아이디어를 바탕으로 Hwacha라는 Intent 퍼징 도구를 구현하였고, 50개의 상용 안드로이드 앱을 대상으로 평가를 수행하였다. Intent 명세 언어를 활용함으로써 이 도구는 자동 및 수동 Intent 생성기와 ADB, JUnit과 같은 실행기를 자유롭게 조합할 수 있다. 실험 결과, 자동 분류 방법은 전체 실패 중 약 80%에 해당하는 중복 실패를 제거하여, 테스터가 실패를 검토하는 데 드는 노력을 크게 줄였다. 이 도구는 지금까지 알려지지 않은 사례를 포함하여 400개 이상의 고유한 실패를 발견하였다. 또한, 기존 연구에서는 거의 보고되지 않았던 Intent 퍼징 테스트의 실행 시간도 측정하였다. 전체 퍼징 테스트 과정이 완전 자동화되어 있으며, 사람의 개입 없이 다수의 안드로이드 앱에 적용 가능하다는 점에서 이 도구는 매우 실용적이다.

This research aims at a new practical Intent fuzzing tool for detecting Intent vulnerabilities of Android apps causing the robustness problem. We proposed two new ideas. First, we designed an Intent specification language to describe the structure of Intent, which makes our Intent fuzz testing tool flexible. Second, we proposed an automatic tally method classifying unique failures. With the two ideas, we implemented an Intent fuzz testing tool called Hwacha, and evaluated it with 50 commercial Android apps. Our tool offers an arbitrary combination of automatic and manual Intent generators with executors such as ADB and JUnit due to the use of the Intent specification language. The automatic tally method excluded almost 80% of duplicate failures in our experiment, reducing efforts of testers very much in review of failures. The tool uncovered more than 400 unique failures including what is unknown so far. We also measured execution time for Intent fuzz testing, which has been rarely reported before. Our tool is practical because the whole procedure of fuzz testing is fully automatic and the tool is applicable to the large number of Android apps with no human intervention.

Available in: PDF


웨어러블 어플리케이션 개발을 위한 안드로이드 BLE 에뮬레이터

문현아,박수용,최광훈, 정보과학회 컴퓨팅의 실제 논문지(KTCP), 2018년2월.

사물 인터넷 환경에서 모바일 어플리케이션과 웨어러블 기기를 연동하기 위해 BLE (Bluetooth Low Energy) 기반 통신을 많이 활용하고 있다. 특히 BLE 연동 안드로이드 어플리케이션을 개발할 때 개발 환경에서 BLE 에뮬레이션을 지원하지 않아 반드시 웨어러블 기기가 필요한 제약이 있 다. 본 연구에서는 처음으로 안드로이드 BLE 에뮬레이터를 설계 및 구현하였다. 이를 활용하여 웨어러블 기기가 없어도 BLE 연동 어플리케이션을 개발할 수 있음을 확인하였다. 그리고 그래프 모델 기반의 안 드로이드 BLE 시나리오 자동 생성 방법을 제안하고 자동 생성한 시나리오들을 제안한 안드로이드 BLE 에뮬레이터 상에서 실행하여 어플리케이션의 BLE 응용 프로토콜을 체계적으로 테스트하는데 유용함을 보였다.

BLE (Bluetooth Low Energy) has been extensively used for communication between mobile applications and wearable devices in IoT (Internet of Things). In developing Android applications, wearable devices, on which the applications can run, should be available because the existing Android SDK does not support any BLE emulation facility. In this study, we have designed and implemented the first Android BLE emulator. Using this, we are able to develop and test BLE-based Android applications even when without wearable devices. We have also proposed an automatic generation method of Android BLE scenarios based on graph model. We have shown that the method is useful for systematically testing BLE application protocols by running the generated scenarios on the Android BLE emulator.

Available in: PDF


A Lightweight Approach to Component-Level Exception Mechanism for Robust Android Apps

Kwanghoon Choi, Byeong-Mo Chang, Computer Languages, Systems, and Structures, Vol.44, Part C, P.283-298, December 2015.

최근 연구들에 따르면, 안드로이드 프로그램은 **예상치 못한 예외(unexpected exceptions)**에 취약하다는 보고가 있다. 그 원인 중 하나는, 현재 안드로이드 플랫폼의 설계가 Java의 예외 처리 메커니즘에만 의존하고 있으며, 이는 안드로이드 프로그램의 컴포넌트 기반 구조를 인식하지 못한다는 점이다. 이 논문에서는 프로그래머가 보다 견고한 안드로이드 프로그램을 구축할 수 있도록 하기 위해 **컴포넌트 수준의 예외 처리 메커니즘(component-level exception mechanism)**을 제안한다. 이 메커니즘을 통해 각 컴포넌트 내에서 발생한 예외에 대해 **컴포넌트 내부 핸들러(intra-component handler)**를 정의해 복구할 수 있으며, 처리되지 않은 예외는 컴포넌트 활성화 흐름의 역방향을 따라 호출한 컴포넌트로 전파할 수 있다. 이론적으로는, 예외를 포함한 안드로이드 의미론(Android semantics)을 형식화하여 이 메커니즘의 견고성(robustness) 특성을 증명하였다. 실용적으로는, 기존 안드로이드 컴포넌트를 확장하는 도메인 특화 라이브러리(domain-specific library) 형태로 메커니즘을 구현하였다. 이 경량 접근 방식은 안드로이드 플랫폼 자체를 변경할 필요가 없다. 안드로이드 벤치마크 프로그램을 활용한 실험에서는, 해당 라이브러리가 기존이라면 비정상 종료되었을 여러 런타임 예외를 포착할 수 있음을 확인하였다. 또한 라이브러리 사용에 따른 성능 오버헤드도 매우 작다는 점을 측정하였다. 결론적으로, 본 연구는 안드로이드 프로그램을 예상치 못한 예외로부터 방어할 수 있는 새로운 메커니즘을 제안한다.

Recent researches have reported that Android programs are vulnerable to unexpected exceptions. One reason is that the current design of Android platform solely depends on Java exception mechanism, which is unaware of the component-based structure of Android programs. This paper proposes a component-level exception mechanism for programmers to build robust Android programs with. With the mechanism, they can define an intra-component handler for each component to recover from exceptions, and they can propagate uncaught exceptions to caller component along the reverse of component activation flow. Theoretically, we have formalized an Android semantics with exceptions to prove the robustness property of the mechanism. In practice, we have implemented the mechanism with a domain-specific library that extends existing Android components. This lightweight approach does not demand the change of the Android platform. In our experiment with Android benchmark programs, the library is found to catch a number of runtime exceptions that would otherwise get the programs terminated abnormally. We also measure the overhead of using the library to show that it is very small. Our proposal is a new mechanism for defending Android programs from unexpected exceptions.

Available in: PDF


NFC 프로그램 메시지 방식에서 변조 방지와 사용자에 의한 동적 접근 제어 방법

고명필,최광훈,임효상, 정보과학회논문지: 컴퓨팅의 실제 및 레터, 제19권, 제12호, pp624-629, 2013년 12월.

안드로이드 기반 스마트폰 앱의 바이너리 코드를 오프라인 상에서 분석하여 유해 사이트 목록에 포함된 서버에 접속하는지 여부를판단하는 시스템을 제안하고, 실제 앱에 대해 적용한 실험 결과를 제시한다. 주어진 앱의 바이너리 코드를 Java 바이트 코드로 역 컴파일하고, 문자열분석을 적용하여 프로그램에서 사용하는 모든 문자열 집합을 계산한 다음, 유해 매체물을 제공하는 사이트 URL을 포함하는지 확인하는방법이다. 이 시스템은 앱을 실행하지 않고 배포 단계에서 검사할 수 있고 앱 마켓 관리에서 유해 사이트를 접속하는 앱을 분류하는 작업을자동화할 수 있는 장점이 있다. DNS 서버를 이용하거나 스마트폰에 모니터링 모듈을 설치하여 차단하는 기존 방법들과 서로 다른 단계에서유해앱을 차단함으로써 상호 보완할 수 있는 방법이 될 수 있다.

This paper proposes a method of forgery protection and user’s dynamic access control in NFC standards compliant program messages. We implement this proposal in Android phones to test mobile applicability. The sizes of benchmark program messages are small enough to be stored in stock NFC tags, and the total execution time increased due to employing the two security methods is not noticeable to users in NFC service.

Available in: PDF


유해사이트를 접속하는 안드로이드 앱을 문자열 분석으로 검사하는 시스템

최광훈, 고광만, 박희완, 윤종희, 정보처리학회 논문지A,Vol.19-A, No.4, pp187-194, August 2012. 문현아,박수용,최광훈, 정보과학회 컴퓨팅의 실제 논문지(KTCP), 2018년2월.

안드로이드 기반 스마트폰 앱의 바이너리 코드를 오프라인 상에서 분석하여 유해 사이트 목록에 포함된 서버에 접속하는지 여부를판단하는 시스템을 제안하고, 실제 앱에 대해 적용한 실험 결과를 제시한다. 주어진 앱의 바이너리 코드를 Java 바이트 코드로 역 컴파일하고, 문자열분석을 적용하여 프로그램에서 사용하는 모든 문자열 집합을 계산한 다음, 유해 매체물을 제공하는 사이트 URL을 포함하는지 확인하는방법이다. 이 시스템은 앱을 실행하지 않고 배포 단계에서 검사할 수 있고 앱 마켓 관리에서 유해 사이트를 접속하는 앱을 분류하는 작업을자동화할 수 있는 장점이 있다. DNS 서버를 이용하거나 스마트폰에 모니터링 모듈을 설치하여 차단하는 기존 방법들과 서로 다른 단계에서유해앱을 차단함으로써 상호 보완할 수 있는 방법이 될 수 있다.

This paper proposes a string analysis based system for classifying Android Apps that may access so called harmful sites, and shows an experiment result for real Android apps on the market. The system first transforms Android App binary codes into Java byte codes, it performs string analysis to compute a set of strings at all program points, and it classifies the Android App as bad ones if the computed set contains URLs that are classified because the sites provide inappropriate contents. In the proposed approach, the system performs such a classification in the stage of distribution before installing and executing the Apps. Furthermore, the system is suitable for the automatic management of Android Apps in the market. The proposed system can be combined with the existing methods using DNS servers or monitoring modules to identify harmful Android apps better in different stages.

Available in: PDF


안드로이드를 위한 난독화 도구 프로가드(Proguard) 성능 평가

박희완, 박희광, 고광만, 최광훈, 윤종희, 한국정보처리학회 학술대회논문집, vol. 19, no. 1, pp. 730-733, 2012.

소프트웨어는 대부분 바이너리 형태로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 한다. 즉, 자바 언어로 프로그래밍하고 생성된 클래스 파일을 dx라는 도구를 사용하여 안드로이드용 달빅(Dalvik) 코드로 변환한다. 따라서 안드로이드 역시 자바의 취약점을 가지고 있고, 자바용으로 개발된 역공학 도구에 의해서 쉽게 분석될 수 있다. 한편으로 자바 프로그램의 저작권을 보호하고 핵심 알고리즘이 노출되지 않도록 다양한 난독화 도구들이 개발되었다. 그 중에서 안드로이드 SDK에 포함되어 함께 배포되고 있기 때문에 널리 사용되고 있는 프로가드(Proguard)에 대해서 대표적인 기능 및 사용법, 프로가드로 난독화된 코드가 원본과 비교하여 어떻게 변경되었는지 평가한다. 그리고 프로가드가 가지고 있는 한계를 알아보고, 이것을 극복할 수 있는 방법을 모색한다.

Availabe in: Link


SMS 부호화 복호화 모듈 검증 방법에 대한 연구(A Study on the Verification Scheme of SMS Encoding and Decoding Module)

최광훈, SMS 부호화 복호화 모듈 검증 방법에 대한 연구, 한국컴퓨터정보학회 논문지, 15권, 6호, pp.1~9, 2010년 6월.

본 논문에서는 3GPP(3rd Generation Partnership Project)에서 정의한 SMS PDU (Protocol Data Unit) 포맷을 주어진 SMS 부호화 복호화 모듈에서 정확하게 구현했는지 검증하는 방법을 제안한다. 기존 SMS 관련 도구들은 SMS 게이트웨이를 통해 송수신하거나 또는 SMS PDU 해석을 목적으로 개발되어 3GPP에서 정의한 세부 SMS PDU 규격에 따라 정확히 구현했는지 테스트하는 용도로는 적합하지 않다. 본 논문에서 제안한 방법은 함수형 언어 Haskell로 작성된 QuickCheck 라이브러리를 활용해 3GPP에서 정의한 구조에 맞는 SMS PDU 테스트 데이터를 자동 생성하여 SMS 부호화 복호화 모듈을 테스트한다. C언어로 작성된 리눅스 모바일 플랫폼 SMS 모듈에 적용하여 이 모듈의 부호화 복호화 기능을 테스트한 결과 BCD 포맷 시간 정보를 잘못 해석하는 사례 등 중요한 오류들을 발견할 수 있었다. 제안한 방법은 3GPP에서 정의한 규격에 맞추어 SMS PDU를 생성하기 때문에 일반적인 SMS 모듈들에 모두 적용 가능한 장점을 지닌다. 본 논문에서 사용한 방법과 같이 QuickCheck 라이브러리를 통해 다른 네트워크 프로토콜 데이터 규격에 대한 부호화 복호화 검증에도 응용할 수 있을 것이다.

This paper proposes a test method for compliance of SMS encoder and decoder modules with 3GPP (3rd Generation Partnership Project) specification on SMS PDU (Protocol Data Unit). The existing tools have focused on providing an SMS gateway and on helping to view and edit a single SMS PDU, which rarely help to resolve the compliance test problem. The proposed compliance test method is based on an automatic generation of SMS PDUs fully compliant with the 3GPP specification by using QuickCheck library written in Haskell. By applying the proposed method to a C-based SMS encoder and decoder in Linux Mobile platform, we have found out several critical bugs such as wrong interpretation of time stamps in BCD format. The automatic SMS PDU generator is reusable in that it only depends on the 3GPP SMS specification. The QuickCheck library is also applicable for testing other network protocol data encoders and decoders, as used in this paper.

Available in: PDF, Haskell package