[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 4월 21일 목요일

[EP]웹 보안 취약성 관한 교육..

나른한 오후에 보안 교육을 받았다.. 1차, 2차 교육이 있었는데 오늘이 2차고, 1차는 어제였다.. 어제는 개인휴가였기 때문에 오늘 듣게 되었다..

어찌보면, 해당 회사에서 근무하면서 거의 매년 또는 전/후반기에 교육을 듣게 된다.. 특별한 케이스가 아니면, 교육의 내용이 엄청 바뀌지는 않는 듯 하다..

하지만, 내가 블로그를 시작한게 올해부터였기 때문에 처음으로 포스팅을 해본다.. 만약, 추후 교육을 또 받았는데 바뀐것이 많다면, 추가 포스팅을 해보도록 하겠다.. 지금 기준에서는 거창한 포스팅은 아니기 때문에 세부적인 내용은 개발자 스스로 조금 더 검색을 해서 확인을 해야된다.. 이 글은 이런게 있다 정도의 개념이라고 보면 된다.. 무엇보다 해당 회사도 그렇지만, 약 30여개의 보안항목 중에 실질적으로 중요도를 높여서 확인하는 것은 9개 정도이다.. 가장 큰 이유는 각 회사마다 업무에 따른 중요도의 기준이 틀리 듯 이곳의 중요도 기준이 그러하다..

상주하고 있는 인력이 교육을 해주셨는데 마음이 급하셨는지 회사 소개 및 본인 소개는 없었다.. 타이틀 소개와 목차 소개 후 바로 본론으로 고고.. 그렇다면 교육에서 언급한 9가지 항목에 대해서 간단한 소개와 대응 방안을 보도록 하자..

다시 말하지만, 이건 간단한 소개정도이고 실질적인 적용은 자신이 다니는 회사에 맞게 검색을 더 해야되며, 소스를 더 찾아봐야 된다.. 요즘 웹 개발에 있어서 이정도를 주로 보안 취약성으로 많이 본다?? 정도가 딱 알맞다..

1. SQL 인젝션
  • 기본정의 : SQL 내에 있는 파라미터를 조작해서 쿼리처럼 실행이 되도록 해서 DB 제어를 한다.
  • 해결방법 : preparedStatement 를 사용해서 변수 바인딩을 하거나 특수문자 필터링 처리를 한다.

2. XSS [크로스 사이트 스크립트]
  • 기본정의 : 웹 사이트 내에서 임의의 스크립트를 실행한다.
  • 해결방법 : replaceAll 등을 통해서 필터링 처리를 하거나 꼭 사용해야 하는 특수문자라면 필터링 처리를 했다가 데이터를 받는 부분에서 다시 복원하는 방식으로 사용한다.

3. 파일 업로드
  • 기본정의 : 시스템 컨트롤이 가능한 파일을 업로드 하는경우를 뜻한다.
  • 해결방법 : 허용된 확장자만 업로드가 되도록 코딩을 하거나 추축불가능한 파일명 및 경로사용 내지는 서버사이드 구현을 통해 사전 위험도를 관리한다.

4. 파일 다운로드
  • 기본정의 : 지정된 파일외에 서버내 파일을 다운로드해서 임의로 사용하는 것을 뜻한다.
  • 해결방법 : 사용하는 모듈을 Index 화해서 사용하거나 요청하는 user 의 권한을 확인 후 처리하도록 한다.

5. 불충분한 인가
  • 기본정의 : 접근 권한에 대한 체크로직이 없어서 접근하게 되는 경우를 뜻한다.
  • 해결방법 : userID 및 권한 등을 추가적으로 검증하는 로직을 추가한다.

6. 쿠키변조
  • 기본정의 : 쿠키 값 변조를 통해서 접근 및 권한상승을 임의로 한다.
  • 해결방법 : 서버 측 session 을 사용해서 값을 전달한다. 

7. 디렉터리 인덱싱
  • 기본정의 : 불필요 파일로 인해서 web 구조를 파악하게 하는 것이다.
  • 해결방법 : 각 server 측 특성에 맞도록 인덱싱 기능을 제거해서 관리하도록 한다. 무엇보다 불필요 파일에 대해서 관리를 철저히 하도록 한다.

8. 프로세스 검증누락
  • 기본정의 : 기존 프로세스  흐름을 우회해서 처리가 가능하도록 한다.
  • 해결방법 : server side 검증 로직을 추가하거나 기존 단계에 대한 검증여부를 재차 확인한다. javascript 보다는 server 에서 처리를 하는쪽을 권장한다.

9. 정보누출
  • 기본정의 : 주요 정보 노출로 인한 2차 공격이 가능해진다.
  • 해결방법 : server 설정을 변경하거나 jsp, javascript, json 등의 처리를 할 때 표시되는 정보를 삭제하거나 마스킹 처리를 하도록 한다.

9가지 항목은 위와 같다.. 그런데 해당 교육을 받으면서 아쉬움이 좀 있었다면, 실제 업무에서 사용하고 있는 소스의 일부분을 발췌해서 대응 방안을 보여줬으면 어떨까 싶다..

물론 같이 일하는 개발자들이 각자의 소스에 맞게끔 수정해서 적용하고 사용하고 있긴 하지만 예시가 너무 틀에박힌 샘플성이 아니었으면 하는 마음이었다.. 그럼 조금이나마 집중도가 올라가지 않았을까..??..

또한, 교육이 끝난 후 개인적으로 질문을 한 것이 있었다.. 근데 머가 떨린다고 그렇게 어버버 했는지 모르겠다.. 이놈의 울렁증.. ㅡ;;ㅡ 무튼.. 질문의 요는 "취약성에 대해서 유틸화 해서 각 인스턴스마다 각자 사용하고 있는데 그 유틸 파일에 대한 최신화를 업체에서 해주거나 검증이 가능한가..??" 였다..

위와 같은 질문을 한 배경을 간단히 얘기하자면 과거에 XSS 취약성 문제로 기본적으로 되어있던 유틸 파일을 통해서 수정을 했었다.. 그런데 나중에 추가 보안 요청을 해온 이유중에 하나가 요즘에는 어떠어떠한 부분도 필터링에 포함이 되어야 하는데 그 부분이 누락되었다는 것이다.. 그래서 질문을 한 것이다.. 혹시나 하면서..

솔직히 기대를 안하고 한 질문이긴 한데 어떤 대답이 나올지 짐작이 되기 때문이었다.. 그런데 역시나 답은 이러했다.. "현 상황을 알고는 있으며, 최신화를 통한 공통화를 시킬까 했지만 현 상황으로는 안된다" 라고 말이다..

답변을 해주신 분에게 감정이 있거나 혹은 서운하거나 그러진 않았다.. 다만 해당 회사 뿐 아니라 모든 회사들이 보안이 어쩌고 21세기가 어쩌고 미래를 어쩌고 IT 선진화 등등 보기 좋은 말은 그렇게들 하면서도 정작 내부적으로 작은 프로세스 혹은 유틸 등 무엇인가를 바꾸기엔 대중에게 내놓는 슬로건과는 거리가 있다는게 아쉬울 뿐이었다..

그 간격이 조금이라도 빠른 시일내에 좁혀지길 바랄 뿐이다..

댓글 없음:

댓글 쓰기