Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2022-22976-bcrypt-skips-salt | Kitploit
도구/GitHubGitHub/spring-io/cve-2022-22976-bcrypt-skips-salt
Password CrackingEncryption/Decryption ToolsVulnerability AnalysisAuthenticationMisconfigurationDatabase Security
GitHubspring-io/cve-2022-22976-bcrypt-skips-salt

cve-2022-22976-bcrypt-skips-salt

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
14년 전아직 검토되지 않음

BCrypt 해시 확인

CVE-2022-xxxx에 대한 완화 조치를 지원하기 위해 이 도구를 사용하여 데이터베이스에서 업데이트가 필요한 해시가 있는지 확인할 수 있습니다.

애플리케이션을 데이터베이스와 통합한 후, 이 도구는 두 단계로 작동합니다.

이를 설명하기 위해 인메모리 샘플 애플리케이션이 사용됩니다. 해당 샘플 애플리케이션에서 다음과 같이 check 단계를 실행할 수 있습니다.

root@kitploit:~
./mvnw spring-boot:run@check

이렇게 하면 샘플 데이터베이스에서 업데이트가 필요한 BCrypt 해시가 있는지 확인합니다.

그런 다음, 다음과 같이 update 단계를 실행할 수 있습니다.

root@kitploit:~
./mvnw spring-boot:run@update

이렇게 하면 샘플 데이터베이스에서 감지된 취약한 해시를 업데이트하려고 시도합니다.

샘플 애플리케이션은 제공된 VulnerabilityCheck 클래스를 사용하여 각 비밀번호 해시를 확인하고 업데이트합니다.

데이터베이스 구성

경고: 애플리케이션을 31보다 낮은 라운드 수를 사용하도록 업데이트한 후에만 이 단계를 진행하세요. OWASP는 현재 10을 권장하지만, 일부 고성능 시스템에서는 16까지 사용되기도 합니다.

이 도구에는 테스트 목적의 인메모리 샘플이 포함되어 있습니다. 이를 데이터와 통합되는 자체 클래스로 교체해야 합니다.

이렇게 하려면 먼저 이 저장소를 클론하세요.

그런 다음 sample 패키지의 코드를 애플리케이션의 비밀번호 데이터에 접근할 수 있는 코드로 교체하세요. 기존 비밀번호를 확인하여 취약한지 여부를 판별하는 코드를 작성하고 싶을 것입니다. 영향을 받는 해시를 업데이트하는 코드를 작성해야 할 것입니다. 두 경우 모두 VulnerabilityCheck를 사용하여 주어진 해시를 확인하고 업데이트할 수 있습니다.

팁: 위 코드를 작성할 때 업데이트해야 하는 비밀번호 수를 고려하세요. 데이터베이스 연결이 실패할 수 있고, 컴퓨터가 충돌할 수 있으며, 메모리가 부족할 수 있다는 점을 반드시 염두에 두세요. 예를 들어 수백만 개의 레코드를 한 번에 메모리로 가져오는 것은 권장되지 않습니다.

비밀번호 해시를 업데이트한 후에는 이제 최신 Spring Security로 업데이트할 수 있습니다. Spring Security의 비밀번호 업데이트 기능을 사용하는 경우, 사용자가 로그인하면 비밀번호가 새로 구성한 라운드 값으로 자동으로 다시 해시됩니다.

FAQ

Q: 내 해시가 취약한지 어떻게 알 수 있나요?

A: Spring Security의 BCrypt 클래스를 사용하여 작업 계수(work factor) 31로 해시된 경우 취약합니다. 시스템에서 Spring Security가 관리하는 비밀번호 해시를 확인하여 이를 확인할 수 있습니다. 해시가 '{bcrypt}$2a$31', '{bcrypt}$2b$31', '{bcrypt}$2y$31', '{bcrypt}$2$31', '$2a$31', '$2b$31', '$2y$31' 또는 '$2$31'로 시작하면 해당 비밀번호는 취약하므로 업데이트해야 합니다.

Q: 애플리케이션을 어떻게 변경해야 하나요?

A: OWASP는 BCrypt에 대해 작업 계수 10을 권장합니다. 일부 고성능 시스템에서는 16까지 사용합니다. 모든 시스템은 다르며 BCrypt는 필요에 따라 시간이 지남에 따라 작업 계수를 늘릴 수 있도록 설계되었습니다.

Q: 애플리케이션에서 어디를 변경해야 하나요?

A: 다음과 같이 BCryptPasswordEncoder를 생성하여 작업 계수를 설정하고 있을 가능성이 높습니다.

root@kitploit:~
new BCryptPasswordEncoder(31)

빈 정의에 다음과 같이 나타날 수 있습니다.

root@kitploit:~
@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder(31);
}

해당 문자열을 찾아 업데이트하면 됩니다. 작업 계수가 애플리케이션에서 외부 속성으로 구동될 수 있으므로, 이 경우 외부 구성에서 변경해야 한다는 점에 유의하세요.

Q: 방금 Spring Security를 업데이트했는데 일부 또는 모든 로그인 및 사용자 등록이 멈춰 있습니다. 무슨 일이 발생했나요?

A: Spring Security 5.5.7+, 5.6.4+, 5.7.0+부터 작업 계수 31을 나타내는 비밀번호 해시 -- 예를 들어 '{bcrypt}$2a$31', '{bcrypt}$2b$31', '{bcrypt}$2y$31', '{bcrypt}$2$31', '$2a$31', '$2b$31', '$2y$31' 또는 '$2$31'로 시작하는 해시 -- 는 각 해시 계산을 완료하는 데 2~3일이 걸립니다. 이를 완화하려면 Spring Security가 더 낮은 라운드 수를 사용하도록 변경해야 합니다. 그런 다음 이 도구를 사용하여 취약한 비밀번호 해시를 업데이트하세요.

Q: 권장되는 세 단계(BCryptPasswordEncoder 구성 변경, 비밀번호 해시 업데이트, Spring Security 업데이트)를 모두 완료했습니다. 그런데 수정된 비밀번호 해시가 새로 구성한 작업 계수로 업데이트되지 않습니다. 어떻게 해야 하나요?

UserDetailsPasswordService 유형의 빈이 게시되어 있는지 확인하세요. 이 빈은 비밀번호를 새 BCrypt 로그 라운드로 업데이트하는 데 사용됩니다.

Q: Spring Security는 이 도구 없이 업그레이드 시점에 취약한 비밀번호를 단순히 업데이트할 수 없는 이유는 무엇인가요?

첫째, 최신 Spring Security에서는 작업 계수 31의 비밀번호 해시가 올바르게 계산되므로 각각 완료하는 데 2~3일이 걸립니다. 이것이 애플리케이션이 감수하기에 합리적인 비용이라고 가정하는 것은 비현실적인 기대입니다.

둘째, Spring Security는 작업 계수 증가(예: 10에서 12로)만 지원하며 감소(예: 31에서 10으로)는 지원하지 않습니다.

도구 다운로드