정보보안 공부/웹

[웹] 민감데이터 노출 (Sensitive Data Exposure) 유형 및 대응방안

pxatd 2021. 7. 10. 12:03
728x90

민감 데이터 노출 OWASP 순위 상승

민감한 데이터 노출은 OWASP Top 10 2013 버전에서는 6위에 있었지만 2017 버전에서 3위로 그 중요도가 올라갔다. 그만큼 웹 상에서 다뤄지는 민감한 데이터가 많아졌다는 의미인 것 같다.

민감 데이터의 유형

-결제정보: 은행 계좌 번호, 신용카드 번호, 보안카드 번호 등
-건강정보: 진료 기록
-개인정보: 주민등록번호, 생년월일, 주소, 휴대폰번호, 이메일 주소 등

민감데이터노출 (Sensitive Data Exposure) 유형 및 대응방안

1.1 취약한 암호화
민감 정보를 암호화해서 보관하면 안전하다고 생각할 수 있지만, 암호화 및 복호화 방식이 취약하다면 위험성은 여전히 존재한다. 패스워드의 경우, 평문을 열람해야 할 이유가 없기 때문에 주로 SHA-256과 같은 해시 암호를 통해 일방향 암호화 하여 보관하므로 노출의 위험이 적지만, 복호화가 필요한 결제 정보같은 경우는 주의가 필요하다.

신용카드 번호나 계좌번호 등은 편리한 암호화 및 복호화를 위해 자동 암호화 도구를 이용해 어플리케이션 API 또는 DB Function을 통한 암복호화를 하는 경우가 많다. 이 경우 Injection공격에 취약해지므로 주의가 필요하다.

1.2 취약한 암호화 대응방안
대응방안으로는, 비대칭키를 통한 암호화가 필요하다. 공개키를 통해 암호화하고 신뢰할 수 있는 백앤드 어플리케이션에서만 개인키를 복호화 한다.

전송구간에서의 보안도 유의해야한다. 암호화되지 않은 통신방식을 적용하게 되면 스니핑 공격에 취약해지므로 반드시 암호화된 통신 (HTTPS)를 이용하도록 한다.


2.1 일부 페이지에서 평문 통신 사용
개발자의 실수 또는 어떤 특정한 이유로 특정 페이지에서 평문 통신을 사용하게 되면 스니핑 공격에 취약해진다.

2.2 일부 페이지에서 평문 통신 사용 대응 방안
가능하면 모든 페이지에서 HTTPS를 이용한 통신을 해야한다. 불가피하게 HTTP 통신을 사용해야 한다면 해당 페이지에서 민감 정보를 분리해야 한다.

3.1 솔트 없는 해쉬 암호 사용
해시 암호의 안전성을 강화하기 위해 사용되는 매커니즘 중 하나는 솔트 이다. 해시암호는 복호화할 수 없지만 솔트 없이 사용하면 같은 평문에 대한 같은 해시가 도출되므로 공격자는 다양한 평문을 해시한 후 저장된 해시와 비교하여 일치하는 평문을 찾아낼 수 있다. 주로 패스워드 저장에 이용되는 해시 암호를 솔트 없이 암호화하게 되면 생일 공격 (birthday attack)과 같은 해시 공격에 노출된다.

*birthday attack 생일공격
생일 모순 (birthday paradox)에 근거하여 해시 함수를 공격하는 방법이다. 생일 모순이란 임의로 모인 23명 중 생일이 같은 사람이 있을 확률은 50%이상이라는 것으로, 실제로 그렇게 많은 경우의 수가 아니더라도 해시 함수 출력으로 부터 해시 함수 입력을 찾아낼 수 있다는 이론에 근거하여 반복적인 대입으로 충돌키를 찾아내는 것이 생일공격이다.

3.2 솔트 없는 해쉬 암호 사용 대응 방안
해시 암호 사용시 반드시 솔트를 추가한다. 이 때 솔트는 각각의 평문에 대해 다른 솔트를 사용해야 한다. 솔트를 별도로 관리하여 각각 다른 솔트를 통해 해싱하면 더 안전한 패스워드 보관이 가능하다.



참고 자료
https://bibimnews.com/entry/%EB%AF%BC%EA%B0%90%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%85%B8%EC%B6%9CSensitive-Data-Exposure-OWASP-Top-10-2017-A3
https://mangkyu.tistory.com/98

728x90