A02 2021 – Cryptographic Failures

HW·2024년 9월 29일

Cryptographic Failures

민감한 데이터가 노출되는 주요 원인으로, 적절한 암호화가 이루어지지 않아 발생하는 취약점


언제 발생?

  • 평문 전송: 데이터가 암호화되지 않고 전송됨
    예: HTTP 프로토콜 사용

  • 약한 알고리즘: 구식 또는 위험한 암호화 알고리즘 사용
    예: MD5, SHA1.

  • 잘못된 키 관리: 기본 키 사용, 키 재사용, 암호화 키가 코드에 포함됨

  • 불충분한 엔트로피: 난수 생성에 필요한 충분한 엔트로피 부족


예방 조치

  • 데이터 분류: 민감한 데이터 식별 및 즉시 폐기

  • 암호화 적용: 저장 및 전송 중 모든 민감 데이터 암호화

  • 최신 알고리즘 사용: 강력한 표준 알고리즘과 적절한 키 관리

  • 보안 프로토콜 사용: TLS 및 HSTS를 통한 데이터 전송 시 암호화 강제

  • 비밀번호 해싱: 강력한 해싱 함수 사용해 비밀번호 저장

  • IV 관리: 초기화 벡터는 적절하게 선택하고 재사용 방지

  • 보안 감사: 구성과 설정의 효과성을 정기적으로 검증


공격 시나리오 예시

  • 시나리오 #1
    어떤 애플리케이션이 데이터베이스에서 신용카드 번호를 자동 데이터베이스 암호화 기능으로 암호화하지만, 데이터를 조회할 때 자동으로 복호화된다. 이로 인해 SQL injection 취약점이 악용되어 신용카드 번호가 평문으로 노출될 수 있다.

  • 시나리오 #2
    어떤 사이트가 모든 페이지에서 TLS를 사용하지 않거나 이를 강제하지 않거나 약한 암호화를 지원한다. 공격자는 안전하지 않은 무선 네트워크 등에서 네트워크 트래픽을 모니터링하고, HTTPS 연결을 HTTP로 다운그레이드하여 요청을 가로채고 사용자의 세션 쿠키를 탈취할 수 있다. 이후 이 쿠키를 재사용하여 사용자의 인증된 세션을 탈취하여 사용자의 개인 데이터에 접근하거나 수정할 수 있다. 나아가, 송금 수신자를 변경하는 등 전송되는 모든 데이터를 조작할 수 있다.

  • 시나리오 #3
    패스워드 데이터베이스가 모든 사용자의 패스워드를 salt를 추가하지 않은 해시 또는 단순 해시로 저장하고 있다. File upload 취약점으로 인해 공격자가 비밀번호 데이터베이스를 획득할 수 있다. 모든 salt가 없는 해시는 미리 계산된 해시의 rainbow table을 통해 노출될 수 있으며, 단순하거나 빠른 해시 함수로 생성된 해시는 salt가 추가된 경우에도 GPU를 사용해 쉽게 크랙될 수 있다.


CWE


CWE-261: Weak Encoding for Password

개요
CWE-261은 패스워드를 암호화할 때 약한 인코딩 방법을 사용하는 취약점을 나타낸다. 이는 공격자가 패스워드를 쉽게 복호화할 수 있는 가능성을 높인다.

취약점 설명
약한 인코딩을 사용하면 패스워드가 안전하게 저장되지 않아 공격자가 해시값을 복원하거나 쉽게 크랙할 수 있다. 이 취약점은 다음과 같은 경우에 발생한다.

  • 단순 해시 함수 사용 (예: MD5, SHA-1)
  • salt를 사용하지 않거나 불충분한 salt 사용

예방 조치

  • 강력한 해시 함수 사용: bcrypt, Argon2 등 강력한 해시 알고리즘을 사용하여 비밀번호를 해시한다.
  • salt 사용: 모든 패스워드에 대해 고유한 salt를 추가하여 해시 값을 생성한다.
  • 적절한 보안 정책 정의: 비밀번호 저장 및 관리에 대한 명확한 보안 지침을 수립한다.

결론
CWE-261은 패스워드 보안에 심각한 위협이 되므로, 강력한 인코딩 및 해시 방법을 사용해야 한다.


CWE-310: Cryptographic Issues

개요
CWE-310은 암호화에 관련된 일반적인 취약점을 나타내며, 부적절한 암호화 알고리즘 사용으로 인해 데이터가 노출될 수 있다.

취약점 설명
암호화가 잘못 구현되면 공격자는 데이터에 접근하거나 변조할 수 있다. 이러한 취약점은 다음과 같은 상황에서 발생한다.

  • 취약한 암호화 알고리즘 사용
  • 잘못된 키 관리 및 생성 절차

예방 조치

  • 강력한 알고리즘 사용: AES, RSA 등 표준 암호화 알고리즘을 사용한다.
  • 키 관리 체계 확립: 키의 생성, 저장, 폐기 과정에서 강력한 보안 조치를 시행한다.

결론
CWE-310은 데이터 보호를 위협할 수 있는 심각한 문제로, 적절한 암호화 기술과 관리가 필수적이다.


CWE-323: Reusing a Nonce, Key Pair in Encryption

개요
CWE-323는 암호화 과정에서 nonce나 키 쌍을 재사용하는 취약점을 나타낸다. 이로 인해 공격자가 암호화된 데이터를 복원할 수 있는 가능성이 높아진다.

취약점 설명
nonce는 각 암호화에 대해 고유해야 하며 재사용 시 암호화 보안이 깨질 수 있다. 이러한 취약점은 다음과 같은 경우에 발생한다.

  • 동일한 키와 nonce 조합을 여러 번 사용하는 경우

예방 조치

  • 고유한 nonce 사용: 각 암호화 연산에 대해 고유한 nonce를 생성하여 사용한다.
  • 키 주기: 키를 정기적으로 변경하여 보안을 강화한다.

결론
CWE-323은 암호화 보안에 심각한 위협이 되며, nonce와 키의 재사용을 피하는 것이 중요하다.


CWE-324: Use of a Key Past its Expiration Date

개요
CWE-324는 만료된 키를 사용하는 취약점을 나타낸다. 이로 인해 데이터가 유출되거나 변조될 수 있다.

취약점 설명
암호화 키는 특정 기간 이후 사용되지 않아야 하며, 만료된 키 사용은 공격자가 암호화된 데이터에 접근할 수 있는 기회를 제공한다. 이 문제는 다음과 같은 상황에서 발생한다.

  • 키의 유효성 검사를 하지 않는 경우

예방 조치

  • 키 관리 정책 설정: 키의 생성, 유효성, 만료 기간을 정기적으로 검토한다.
  • 만료된 키 폐기: 만료된 키는 즉시 폐기하고 새 키로 교체한다.

결론
CWE-324는 암호화 보안의 중대한 취약점이며, 키 관리에 대한 철저한 검토가 필요하다.


CWE-347: Improper Verification of Cryptographic Signature

개요
CWE-347은 암호화 서명의 검증이 부적절하게 이루어지는 취약점을 나타낸다. 이로 인해 공격자가 데이터의 무결성을 위반할 수 있다.

취약점 설명
서명 검증이 제대로 이루어지지 않으면 공격자가 서명을 변조하거나 위조할 수 있다. 이러한 취약점은 다음과 같은 경우에 발생한다.

  • 서명 알고리즘의 취약점
  • 검증 로직의 결함

예방 조치

  • 강력한 서명 알고리즘 사용: RSA, ECDSA 등 안전한 서명 알고리즘을 사용한다.
  • 검증 로직의 철저한 점검: 서명 검증 절차를 철저히 테스트하고 검토한다.

결론
CWE-347은 데이터 무결성을 심각하게 위협하는 문제로, 신뢰할 수 있는 서명 검증을 보장해야 한다.

0개의 댓글