취약한 해시 알고리즘으로 비밀번호 저장
Use of Password Hash With Insufficient Computational Effort
설명
비밀번호를 평문(plaintext)으로 저장하거나 빠른 해싱 알고리즘을 사용하는 경우, 공격자가 시스템에 접근할 경우 이를 쉽게 복구하여 악용할 수 있는 보안 취약점입니다.
잠재적 영향
무단 접근
비밀번호가 평문으로 저장되거나 안전하지 않은 해싱 알고리즘을 사용할 경우, 공격자는 이를 탈취하여 사용자 계정에 무단으로 접근할 수 있습니다. 이는 데이터 유출, 신원 도용, 금융 사기 등의 보안 사고로 이어질 수 있습니다.
크리덴셜 재사용(Credential Reuse)
사용자는 여러 서비스에서 동일한 비밀번호를 재사용하는 경우가 많습니다. 공격자가 탈취한 비밀번호를 이용해 다른 시스템에도 무단 접근할 가능성이 있습니다.
법적 및 규제 위반
다양한 산업 및 국가에서 사용자 데이터 보호를 위한 규제를 시행하고 있습니다. 비밀번호를 안전하게 저장하지 않을 경우 법적 처벌이나 기업의 신뢰도 하락을 초래할 수 있습니다.
해결 방법
안전한 해싱 알고리즘 사용
평문 저장을 절대 금지하고, 적절한 해싱 알고리즘을 사용해야 합니다.
빠른 해싱 알고리즘(MD5, SHA-1 등)은 취약하므로, Argon2, bcrypt, PBKDF2와 같은 느린 해싱 알고리즘을 사용합니다.
솔트(Salt) 적용
비밀번호 해싱 전에 무작위 값(Salt)을 추가하여 사전 공격(Dictionary Attack) 및 레인보우 테이블 공격(Rainbow Table Attack)을 방지해야 합니다.
FIPS-140 준수
보안 인증이 필요한 경우 PBKDF2와 같은 FIPS-140 인증 알고리즘을 사용할 수 있습니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
StandardPasswordEncoder는 보안성이 낮은 해싱 알고리즘을 사용하여 쉽게 크랙될 가능성이 있습니다.안전한 코드:
BCryptPasswordEncoder를 사용하여 비밀번호를 안전하게 해싱하며, 적응형(adaptive) 방식으로 보호 강도를 조정할 수 있습니다.
참조
Last updated