An Empirical Study of Cryptographic Misuse in Android Applications

정보

Keywords

  • 안드로이드
  • 암호화
  • 오용

배경

  • 개발자들은 안드로이드에서 비밀번호 및 개인 정보를 기기에서 보호하기 위하여 암호화 API를 사용함
  • 암호학자들은 제대로 된 사용 방법이 강력한 보안을 보장해 주며 잘못된 방법이 문제로 이어질 수 있음을 알고 있음
  • 하지만 개발자는 올바른 방식으로 암호화 API를 사용하는 방법을 알고 있는지 모르겠음

목표

  • 개발자들이 암호화 API를 제대로 사용하는지를 확인해 보자.
  • 특히 잘 알려진 2개의 보안 표준에 중점을 둠
    1. chosen plaintext attacks (IND-CPA)
    2. cracking resistance
  • 점검 플랫폼은 안드로이드
    1. 다양한 개인정보이 위치하고 있음
    2. 안정적인 Java 암호화 API를 사용함
    3. 점검할 수 있는 모수가 큼

방법론

  • Google Play 마켓에 올라가 있는 프로그램을 자동으로 확인하는 프로그램 분석 기법을 개발함
  • CryptoLint, Androguard Android 프로그램 분석 프레임워크 기반의 정적 분석 도구
    1. Androguard가 Dalvik byte-code를 disassemble해주면, 이를 IR로 바꿈
    2. 이 IR을 비슷한 그룹군으로 구분하고, 프로시저 간 분석을 통해 sCFG(Control Flow Graph)를 만듦
      • 모든 메소드들은 SSA(single static assignment)로 변환됨
      • 모든 클래스들의 계층 구조를 추출함
      • 이를 기반으로 sCFG를 생성함
    3. slicing 알고리즘으로 특정 지점의 변수를 기준으로 순방향 또는 역방향으로 탐색함
    4. 보안 속성들을 평가함

결과

  • 암호화 API를 사용하는 대략 88%의 어플리케이션에서 하나 이상의 실수를 하는 것을 발견함

결론

  • 안드로이드 어플리케이션에서 전반적인 암호화 보안을 향상시키는 방향으로 분석 기반의 구체적인 수정 사항을 제안해 줌.

Cryptoguard: High precision detection of cryptographic vulnerabilities in massive-sized Java projects

정보

Keywords

  • Cryptographic API misuses
  • 오탐/미탐
  • 정적 분석
  • Java

배경

  • 암호화 API 오용은 소프트웨어 보안을 위혐함
  • 또한 자동으로 대규모의 프로그램들에서 암호화 API 오용을 탐지하고 있음
  • 하지만 분석 성능과 타협하지 않으면서 오탐을 줄이는 것은 어려움

목표

  • 암호화 및 SSL/TLS API 오용을 탐지하는 분석 알고리즘들을 설계하고 구현함
  • 다양한 Apache 프로젝트 및 안드로이드 어플리케이션에서 탐지 성능을 확인해 봄
  • 테스트 해 볼 수 있는 성능확인용 테스트 케이스를 만듦

방법론

  • CryptoGuard: 언어별로 상관 없는 요소들을 탐지하는 알고리즘들을 활용하는 도구
    1. 정적 def-use 분석과 순방향 및 역방향으로 program slicings를 적용함
    2. 각 program slice에서 취약점을 탐지함
      • 취약점마다 slicing 방법이 다름(Table 1)

결과

  • 46개의 중요한 Apache 프로젝트와 6181개의 안드로이드 앱에서 많은 보안 insight를 생성함
  • 1295개의 Apache 경고를 수동으로 분석하여 1277개(98.61%)가 정탐임을 확인함

CRYPTOREX: Large-scale Analysis of Cryptographic Misuse in IoT Devices

정보

Keywords

  • 암호화 오용
  • IoT Firmware
  • Unified-IR

배경

  • 암호화 함수는 잘 정의되었고 신중하게 구현이 되어 있지만, 미숙한 개발자에 의해 실수를 야기하기 쉬움
  • 게다가 자원이 한정된 IoT 환경에서는 성능을 위해 보안을 희생하기도 함

목표

  • CryptoREX(다양한 아키텍처의 IoT 장치에서 암호화 오용을 식별하는 프레임워크)를 설계하고 구현함

방법론

  • CryptoREX
    1. 펌웨어 획득(다운로드) 및 전처리(실행파일 추출)
    2. 바이너리 실행파일을 VEX IR로 바꿈
    3. ICFG(Inter-procedural Control Flow Graph) 생성
    4. 암호 함수 별 파일 구분 없는 호출 그래프를 만듦
    5. Backward taint 분석 수행함
  • 암호화 API 목록은 실행 중에 계속 갱신되며, 자동으로 함수의 인자도 추적함

결과

  • 521개의 펌웨어에서 165개의 사전 정의된 암호화 API로 총 679개의 암호화 오용을 찾음
  • 한개의 펌웨어 당 1120초의 소요시간이 걸림
  • 암호화 오용은 민감한 정보 유출, 인증 우회, 비밀번호 brute-force 등을 가능하게 함

결론

  • 오늘날의 많은 IoT 개발에서 부족한 구현과 취약한 보호를 강조함

Exposing Library API Misuses via Mutation Analysis

정보

Keywords

  • Library API 오용
  • Mutation 분석

배경

  • Library API 오용은 소프트웨어에 crash 및 취약점을 야기할 수 있음
  • 다양한 정적 분석 도구들이 Library API 오용을 탐지하는 것을 제안해 왔지만, 실제로 이를 적용하기에는 무리가 있음

목표

  • 높은 정확도로 API 오용을 탐지할 수 있는 도구를 개발하고자 함
    • API 오용 패턴을 발견할 수 있는가?
    • MuBench에서 API 오용을 탐지할 수 있는가?
    • 기존 mutation 기법과 비교해서 얼마나 더 효과적이고 효율적인지?

방법론

  • API 오용 패턴에 대한 발견이 있음
    1. API 오용은 올바른 용법의 mutant로 표현할 수 있음
    2. mutant가 오용인지 아닌지는 실행하고 그 결과를 분석해 봄으로써 검증할 수 있음
      • 각 mutant에 대하여 client 프로젝트의 테스트 케이스로 실행시켜 보고 killing relations(테스트 실패한 mutant 및 test case)를 수집
  • 위의 발견을 기반으로 MutAPI 도구를 제안함

결과

  • 16개의 프로젝트에서 73개의 유명 JAVA API를 대상으로 0.78의 오용 패턴을 발견할 수 있었음 (상위 50개의 mutant 후보에 대하여)
  • MuBench에서 53개의 진짜 오용 중 26개를 탐지함

결론

  • 많은 수의 API 사용 예제를 필요로 하지 않음
  • "빈번한 패턴에서 벗어난 것은 오용이다"라는 가정에서 더 나아감

*궁금점

  • test suite에 상당히 의존하는 구조인데, 1) 이는 신뢰할 수 있는 것이며, 2) test suite가 이를 못잡는 경우는 어떻게 해결했는지?

CryptoGo: Automatic Detection of Go Cryptographic API Misuses

정보


Keywords

  • Cryptographic API misuses
  • Go
  • STA (Static Taint Ananlysis)

배경

  • 안전한 시스템을 만듦에 있어 암호 알고리즘들은 필수적이나, 다양한 암호 API의 오용으로 인해 기대한 바에 못 미치고 있음
    • 암호 라이브러리 API의 복잡성에 비해 빈약한 문서화
    • 개발자의 불충분한 암호 경험
  • Java, C/C++, Python 등에서 암호 API 오용에 관한 많은 연구가 이뤄지고 있지만, 비슷한 문제를 안고 있는 Go에서는 이뤄지고 있지 않음
    • Go는 블록체인 및 PKI (Public-Key Infrastructure)에서도 많이 활용되기에 올바른 암호 API 사용은 중요함

목표

  • Go 암호 API와 결합된 12개의 암호 규칙들을 도출함
  • 암호 알고리즘 분류(?)를 암호 오용 탐지에 처음으로 통합함
  • 대규모의 Go 암호 프로젝트에서 암호 오용을 자동으로 식별할 수 있는 CryptoGo를 설계하고 구현함

방법론

  • taint analysis 기반의 정적 분석 탐지기
  • Go 소스코드의 중간 언어에서 API 및 인자를 대상으로 역방향 또는 순방향의 taint tracking을 수행함

결과

  • GitHub에 있는 120개의 Go 암호 프로젝트를 대상으로 했으며, 83.33%의 프로젝트에서 1개 이상의 암호 오용을 발견함
  • 평균적 1,000줄 분석에 86.27ms 소요됨

결론

  • 현재 Go 암호 프로젝트의 낮은 수준의 구현과 약한 보호력을 강조함

+ Recent posts