go
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 암호 프로젝트의 낮은 수준의 구현과 약한 보호력을 강조함