시큐어코딩
- home
- 보안소식
- 시큐어코딩
41. [캡슐화] 잘못된 세션에 의한 데이터 정보노출
2019.12.30 11:37
안녕하세요, 지에스인포입니다.
이번에는 행자부 개발보안 가이드라인 47개 항목 중 캡슐화의 1번째 항목인 '잘못된 세션에 의한 데이터 정보노출'에 대해
알아보겠습니다.
분석 및 설계 단계 보안 요구항목과 구현 단계 47개 보안약점 기준 - 소프
트웨어 개발보안 가이드 (행정자치부 / 한국인터넷진흥원)
잘못된 세션에 의한 데이터 정보노출은 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에 속해있는 주요 항목입니다. 분석, 설계 단계의 보안 요구항목에서는 '캡슐화'의 '세션통제'라는 항목으로, 구현 단계 보안약점에서는 '캡슐화'의 '잘못된 세션에 의한 데이터 정보노출'이라는 항목으로 명시가 되어있습니다.
#잘못된 세션에 의한 데이터 정보누출이란?
잘못된 세션에 의한 데이터 정보노출이란 다중 스레드 환경에서 싱글톤 객체 필드에 경쟁조건이 발생할 수 있는 보안약점입니다. 이런 다중 스레드 환경인 Java의 서블릿 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여, 서로다른 세션에서 데이터를 공유하지 않도록 해야합니다. 그렇지 않은 경우 보안상 문제를 유발 할 수 있는데요.
예를 들어 살펴보겠습니다.
Controller에 멤버 변수를 사용하는 경우 (JAVA)
위 소스 코드는 Controller에 멤버 변수를 사용하는 JAVA 소스 코드입니다.
Controller에 멤버 변수를 사용하면 공유가 발생하여 동기화 오류가 발생할 수 있는데요. 이러한 경우 스레드간에 공유가 발생하여 시스템에 문제가 발생할 수 있습니다.
#잘못된 세션에 의한 데이터 정보노출을 막기 위한 보안 대책은?
잘못된 세션에 의한 데이터 정보노출을 막기 위한 대책으로는 싱글톤 패턴을 사용하는 경우, 변수 범위에 주의를 기울여야 합니다. 특히 Java에서는 HttpServlet 클래스의 하위클래스에서 멤버 필드를 선언하지 않도록 하고, 필요한 경우 지역 변수를
선언하여 사용하기를 권장드리고 있습니다.
오늘은 "잘못된 세션에 의한 데이터 정보노출"에 대해 살펴봤습니다.
다음은 시큐어코딩 42번째 항목, "제거되지않고 남은 디버그 코드"에 대해 알아보도록 하겠습니다.
댓글 0
본사주소 : 서울특별시 금천구 가산디지털1로 181, 가산더블유센터 1508호 COPYRIGHT ⓒ ALL RIGHT RESERVED.