Sparrow(정적분석도구)를 통해 SQL Injection에 관련된 소스코드 보안 취약점 문의
- 작성자 :
- 황*라
- 작성일 :
- 2025-04-04 10:46:33
- 조회수 :
- 122
- 구분 :
- 적용지원(기술지원)
- 진행상태 :
- 완료
Q
안녕하세요
현재 전자정부 프레임워크를 이용하여 개발된 ERP시스템을 운영 중인데
Sparrow(정적분석도구)를 통해 SQL Injection에 관련된 소스코드 보안 이슈가 보약 취약점으로 집계되었습니다.
Mybatis의 동적쿼리 구현을 위해 ${}문구를 사용한 것이 SQL Injection에 대한 취약점으로 집계되는데 Front로부터 받은 파라메터는 Query상에 직접적으로 사용하고 있지 않기에 SQL Injection과는 무관할 것으로 예상되며
(컨트롤/서비스단에서 재가공하여 생성된 변수만 동적쿼리에 사용)
실제 외부기관의 Bump Shuit tool을 통한 SQL Injection테스트에도 이상 없음을 확인 받았습니다.
사용자가 설정하는 값에 따라 실시간으로 동적쿼리를 수행, UI에 반영이 되어야 하는 구조라 반드시 동적쿼리를 사용해야 하는데
저희처럼 파라미터를 전달 받지 않고, 서비스단 내부에서만 동적쿼리를 생성하는 경우는 취약점 예외 대상이 가능한지,
아니면 시큐어코딩을 준수하며 개선 할 수 있는 방법, 또는 전자정부프레임워크를 사용하는 타운영사들의 대응방안에 대하여 여쭙고자 합니다.
감사합니다.
현재 전자정부 프레임워크를 이용하여 개발된 ERP시스템을 운영 중인데
Sparrow(정적분석도구)를 통해 SQL Injection에 관련된 소스코드 보안 이슈가 보약 취약점으로 집계되었습니다.
Mybatis의 동적쿼리 구현을 위해 ${}문구를 사용한 것이 SQL Injection에 대한 취약점으로 집계되는데 Front로부터 받은 파라메터는 Query상에 직접적으로 사용하고 있지 않기에 SQL Injection과는 무관할 것으로 예상되며
(컨트롤/서비스단에서 재가공하여 생성된 변수만 동적쿼리에 사용)
실제 외부기관의 Bump Shuit tool을 통한 SQL Injection테스트에도 이상 없음을 확인 받았습니다.
사용자가 설정하는 값에 따라 실시간으로 동적쿼리를 수행, UI에 반영이 되어야 하는 구조라 반드시 동적쿼리를 사용해야 하는데
저희처럼 파라미터를 전달 받지 않고, 서비스단 내부에서만 동적쿼리를 생성하는 경우는 취약점 예외 대상이 가능한지,
아니면 시큐어코딩을 준수하며 개선 할 수 있는 방법, 또는 전자정부프레임워크를 사용하는 타운영사들의 대응방안에 대하여 여쭙고자 합니다.
감사합니다.
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
Mybatis에서 쿼리문에서 ${}를 사용하는 경우
SQL Injection에 대한 취약점이 존재 합니다.
따라서 취약점이 있는 해당 구문을 표준프레임워크 공통컴포넌트 또는 다른 템플릿 프로젝트 등에서
사용 하고 있지 않습니다.
또한
일반적으로 표준프레임워크센터에서 배포된 소스를 커스텀 또는 확장하여 사용하기 때문에
개발 사업단 또는 기관에서 변경된 소스에 대해 별도 취약점 점검을 진행하셔야 합니다.
기재 하신 내용을 정리하면
정적분석 도구를 사용하여 확인시 기계적 분석으로 보안취약점 집계가 되었으나
웹에서 파라미터로 전달 받아서 쿼리를 구성하지 않기때문에
SQL Injection과 무관하고 하다고 자체 판단하시는듯 합니다.
문의 하신 내용으로만 볼때 타당해 보이나
센터는 KISA, NSR(국가보안기술연구소) 같은 보안전문 기관이 아니기 때문에
해당 부분에 대해 정확하고 충분한 조치인지 또는 취약점이 해결된 것인지
공식적으로 정확히 판단해 드리기는 어려울듯 합니다.
표준프레임워크센터에서는 아래 URL의 보안가이드에 따라 개발되었습니다.
해당 페이지를 확인하시어 관련된 사항을 조치해보시기 바랍니다.
https://www.egovframe.go.kr/home/ntt/nttRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=76&bbsId=171&nttId=1813
또한 Sql Injection에 관련된 내용은
행정안전부에서 제공하는 시큐어 코딩(보안 코딩) 가이드의 내용을 참고하실 수 있습니다.
해당 게시물의 첨부 파일에서 내용을 확인 가능합니다.
https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000015&nttId=88956
감사합니다.
표준프레임워크센터입니다.
Mybatis에서 쿼리문에서 ${}를 사용하는 경우
SQL Injection에 대한 취약점이 존재 합니다.
따라서 취약점이 있는 해당 구문을 표준프레임워크 공통컴포넌트 또는 다른 템플릿 프로젝트 등에서
사용 하고 있지 않습니다.
또한
일반적으로 표준프레임워크센터에서 배포된 소스를 커스텀 또는 확장하여 사용하기 때문에
개발 사업단 또는 기관에서 변경된 소스에 대해 별도 취약점 점검을 진행하셔야 합니다.
기재 하신 내용을 정리하면
정적분석 도구를 사용하여 확인시 기계적 분석으로 보안취약점 집계가 되었으나
웹에서 파라미터로 전달 받아서 쿼리를 구성하지 않기때문에
SQL Injection과 무관하고 하다고 자체 판단하시는듯 합니다.
문의 하신 내용으로만 볼때 타당해 보이나
센터는 KISA, NSR(국가보안기술연구소) 같은 보안전문 기관이 아니기 때문에
해당 부분에 대해 정확하고 충분한 조치인지 또는 취약점이 해결된 것인지
공식적으로 정확히 판단해 드리기는 어려울듯 합니다.
표준프레임워크센터에서는 아래 URL의 보안가이드에 따라 개발되었습니다.
해당 페이지를 확인하시어 관련된 사항을 조치해보시기 바랍니다.
https://www.egovframe.go.kr/home/ntt/nttRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=76&bbsId=171&nttId=1813
또한 Sql Injection에 관련된 내용은
행정안전부에서 제공하는 시큐어 코딩(보안 코딩) 가이드의 내용을 참고하실 수 있습니다.
해당 게시물의 첨부 파일에서 내용을 확인 가능합니다.
https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000015&nttId=88956
감사합니다.