보안정보

글로벌 정보보안 리더 윈스

Bouncy Castle, 암호화 API 인증 바이패스 결함 수정

침해사고분석팀 2020.12.18

탄력이 성 배경

 

널리 사용되는 오픈 소스 암호화 라이브러리인 Bouncy Castle에서 심각한 인증 우회 취약점이 보고되었다.

 

해당 취약점(CVE-2020-28052)을 악용하면 공격자가 암호를 확인하는 방식의 암호 취약점으로 인해 사용자 또는 관리자 계정에 액세스 권한을 얻을 수 있다.

 

Bouncy Castle은 자체 암호화 알고리즘 롤링을 걱정하지 않는 보안 애플리케이션을 구축하는 Java, C# 및 /.NET 개발자가 사용하는 암호화 API 집합이다. 

 

Bouncy Castle의 .NET 버전만 16억 회 이상 다운로드되었으며, 이는 미션 크리티컬 애플리케이션 개발자들이 의존하는 라이브러리인 Bouncy Castle의 취약점이 심각하다는 것을 알 수 있다.

 

 

결함 있는 암호 해싱 알고리즘

 

이번 주, Synopsys 사이버 보안 연구 센터의 두 연구원 Matti Varanca와 Tero Rontti는 Bouncy Castle의 인증 우회 취약점을 공개했다.

 

CVE-2020-28052인 이 결함은 Bcrypt 암호 해싱 알고리즘을 구현하는 Bouncy Castle의 OpenBSDBcrypt 클래스에 존재한다.

 

즉, 바이트 별 암호 해시 일치를 수행하는 Bcrypt.doCheckPassword() 함수에 잘못된 논리가 있다.

 

Synopsys가 발간한 보고서에서 "코드는 0에서 59까지의 위치에 있는 문자가 일치하는지 확인하는 것이 아니라 0에서 59까지의 문자 인덱스를 확인한다.

 

예를 들어 0x00에서 0x3B 사이의 바이트를 포함하지 않는 해시를 생성하는 암호는 이를 포함하지 않는 다른 모든 암호 해시와 일치한다. 이 검사를 통과하면 공격자가 저장된 해시 값과 바이트 단위를 일치시킬 필요가 없다."라고 보고서는 설명한다.

 

 

Bouncy Castle API 취약성 CVE-2020-28052

[그림1. Bcrypt.doCheckPassword() 함수에서 대한 취약한 코드 ]

 

 

기본적으로 doCheckPassword() 함수와 비교할 때(즉, 일치 성공) true를 반환하는 해시를 생성하는 일련의 문자열을 무차별 대입하는 것이다.

 

이 취약점을 성공적으로 악용하면 공격자는 애플리케이션의 해시 기반 암호 검사에서 Bouncy Castle을 사용하는 경우 관리자를 포함한 모든 사용자 계정의 암호를 무차별 대입할 수 있다.

 

 

처음 1,000번의 시도에서 높은 성공률

 

강력한 암호는 무차별 대입을 통해 크래킹하는 데 매우 오랜 시간이 걸리지만, 이 구현 결함은 이 가정을 무너뜨린다.

 

평균적으로 연구원들은 테스트된 암호의 20%가 이 취약점을 이용하여 처음 수천 번의 시도에서 무차별 대입될 수 있음을 확인했다.

 

연구원들에 따르면, Brypt 해싱 기반 인증은 웹 애플리케이션 및 API의 인증 확인에 사용된다.

 

따라서 이 취약점에 높은 심각도 CVSS 3.1 등급이 할당되었다.

 

연구원들에 따르면, Bouncy Castle 1.65와 1.66은 이 취약점에 영향을 받지만 1.65 이전 버전은 영향을 받지 않는다고 한다.

 

Bouncy Castle은 1.67 이상 버전에서 이 취약점에 대한 수정 조치를 적용했으며 개발자들은 업그레이드를 적용할 것을 권장한다.

 

 

출처

https://www.bleepingcomputer.com/news/security/bouncy-castle-fixes-crypto-api-authentication-bypass-flaw/