[OWASP Top 10 2021] 02 - Cryptographic Failures (암호화 실패)

·2025년 8월 6일
1

OWASP Top 10 2021

목록 보기
2/10

02 - Cryptographic Failures

https://owasp.org/Top10/A02_2021-Cryptographic_Failures/

개요

OWASP Top 10 2021 중 2위로 올라간 Cryptographic_Failures (암호화 실패) 이다.
이전에는 민감 데이터 노출 자체를 문제로 삼았지만, 이제는 그 원인인 암호화 실패에 초점을 맞춘다.

  • 암호화의 실패 혹은 암호화의 부재에 초점을 맞추고 있으며, 이는 민감 데이터의 노출로 이어진다.
  • Transport(전송) 또는 Rest(저장) 시 암호화 과정에서의 오류들이 주요 원인으로 등장한다.

주요 취약점 유형

  • 약한 암호화 알고리즘 사용
    • 익히 알려진 MD5, SHA-1, RC4 등은 더 이상 안전하지 않다.
  • 암호화 키 관리 실패
    • 암호화에 쓰이는 키를 코드 안에 하드코딩 형식으로 관리하거나, 키를 너무 자주 재사용하거나, 제대로 숨기지 않으면 위험하다.
    • 키가 노출되면 암호화 자체가 무력화된다.
  • 암호화 구성 오류
    • IV(Initialization Vector, 같은 문장을 여러번 암호화하게 되면 매번 똑같은 암호문이 나오는게 위험하기에, 매번 다르게 암호화하기 위해 시작점 역할을 하는 랜덤값이다.) 같은 요소를 재사용하거나, 잘못된 패딩(padding) 방식으로 암호화하면 공격자가 데이터를 추측하거나 복호화할 수 있다.
  • 민감 데이터 평문 저장
    • 비밀번호, 신용카드 번호, 주민번호 같은 민감한 정보를 암홓롸하지 않고 평문 그대로 저장파는 경우, 데이터가 유출되면 큰 피해로 이어진다.
  • TLS/SSL(웹사이트에 접속 암호화 규약) 미사용 또는 약한 구성
    • 웹사이트가 HTTPS를 지원하지 않거나, 구버전 TLS, 취약한 암호화 스위트를 쓰면 중간자 공격(MITM, 공격자가 네트워크 중간에 끼어들어 통신 내용을 훔치거나 바꾸는 공격기법)에 취약하다.
    • 공격자가 네트워크에서 통신 내용을 훔치거나 바꿀 수 있다.
    • 와이파이 공유기가 통신을 가로채서 로그인 세션 쿠키를 빼내어 해킹하는 경우가 이에 해당한다.

공격 시나리오 예시

  • SQL 인젝션으로 암호화 데이터 탈취
    • 데이터베이스가 자동 복호화를 하도록 설정되어 있는 경우 매우 위험하다.
    • 인젝션 공격을 통해 카드번호 등 민감 데이터를 평문으로 획득 가능하다.
  • 중간자 공격으로 쿠키 탈취
    • TSL을 강제하지 않거나, 약한 암호화를 사용하는 경우 취약하다.
    • HTTP와 HTTPS 둘 다 지원하면서 HTTPS 리디렉션, HSTS 미적용 시 공격 가능하다.
    • 중간자 공격을 통해 쿠키를 탈취하면, 이후 세션 탈취 및 권한 상승이 가능해진다.
  • 약한 해시로 인한 패스워드 복원
    • 단순한 해시 알고리즘을 사용하여 패스워드를 저장하면, 레인보우 테이블 공격 등을 통해 패스워드를 쉽게 복원 가능하다.

방지 방법

  • 강력한 암호화 알고리즘 사용
    • AES-256, RSA-2048 이상, SHA-256 이상을 사용한다.
  • 철저한 키 관리
    • 별도의 키 관리 시스템을 이용하여 키를 안전하게 저장하고, 정기적으로 키를 바꾸는 것이 안전하다.
  • 암호화 구성 검토
    • 랜덤 IV를 사용하고, 재사용하지 않는다. 표준화된 모드를 올바르게 사용해야 한다.
  • 민감 데이터 저장 시 해시 사용
    • 패스워드는 bcrypt, Argon2, PBKDF2 등 강력한 해시 알고리즘을 사용하고, salt를 추가해야 한다.
  • TLS/SSL 사용 및 구성 검토
    • HTTPS를 사용하고, 최신 TLS 버전과 안전한 암호화 스위트를 사용한다. 또한 HTTPS로 강제 접속을 해주는 HSTS 를 적용한다.

배운 점

  • 암호화에 대해 배울 때 MD5, SHA-1, RC4 와 같은 알고리즘을 배웠었다. 하지만, 이미 복호화 방법까지 잘 알려져 있기에 실무에서 이용한다면 오히려 취약해질 수 있음을 배웠다.
  • 단순히 암호화를 적용했다고 안심할 것이 아니라, 안전한 알고리즘, 안전한 키 관리, 안전한 구성 방식까지 고려해야 실질적인 보안이 된다.
  • 키값이나 비밀번호 등 중요한 정보들은 자주 바꾸는 것이 제일 안전함을 깨달았다.
  • 웹 서비스 통신을 할때 되도록이면 HTTPS 를 이용해야 함을 배웠다.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글