Cryptographic
Cryptoguard: High precision detection of cryptographic vulnerabilities in massive-sized Java projects
정보
Keywords
- Cryptographic API misuses
- 오탐/미탐
- 정적 분석
- Java
배경
- 암호화 API 오용은 소프트웨어 보안을 위혐함
- 또한 자동으로 대규모의 프로그램들에서 암호화 API 오용을 탐지하고 있음
- 하지만 분석 성능과 타협하지 않으면서 오탐을 줄이는 것은 어려움
목표
- 암호화 및 SSL/TLS API 오용을 탐지하는 분석 알고리즘들을 설계하고 구현함
- 다양한 Apache 프로젝트 및 안드로이드 어플리케이션에서 탐지 성능을 확인해 봄
- 테스트 해 볼 수 있는 성능확인용 테스트 케이스를 만듦
방법론
- CryptoGuard: 언어별로 상관 없는 요소들을 탐지하는 알고리즘들을 활용하는 도구
- 정적 def-use 분석과 순방향 및 역방향으로 program slicings를 적용함
- 각 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
- 펌웨어 획득(다운로드) 및 전처리(실행파일 추출)
- 바이너리 실행파일을 VEX IR로 바꿈
- ICFG(Inter-procedural Control Flow Graph) 생성
- 암호 함수 별 파일 구분 없는 호출 그래프를 만듦
- Backward taint 분석 수행함
- 암호화 API 목록은 실행 중에 계속 갱신되며, 자동으로 함수의 인자도 추적함
결과
- 521개의 펌웨어에서 165개의 사전 정의된 암호화 API로 총 679개의 암호화 오용을 찾음
- 한개의 펌웨어 당 1120초의 소요시간이 걸림
- 암호화 오용은 민감한 정보 유출, 인증 우회, 비밀번호 brute-force 등을 가능하게 함
결론
- 오늘날의 많은 IoT 개발에서 부족한 구현과 취약한 보호를 강조함
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 암호 프로젝트의 낮은 수준의 구현과 약한 보호력을 강조함