본문 바로가기

테스팅

2022년 테스팅 사례 공유 - 농업0000 정보 시스템 소스코드 시큐어 코딩 분석 테스팅 지원

2022년 고품질 SW개발 컨설팅 및 테스팅 지원 사업 테스팅 사례 공유 합니다.

(재)전주정보문화산업진흥원의 SW품질역량센터에서는

2011년 부터 전라북도 ICT/SW기업을 대상으로 품질 향상을 위한 컨설팅 및 테스팅을 지원하고 있습니다.

본 테스팅 사례는 농업0000 시스템 소스코드 시큐어 코딩 분석을 지원한 사례입니다.

 

목차

     

    1. 테스팅 개요

    - 기업명 : 000 소프트

    - 기업주소 : 전라북도 전주시 ***

    - 테스팅 내용 :  농업0000 정보 시스템 소스코드 시큐어 코딩 분석 테스팅 지원

    - 테스팅 목적 : 기업 개발 제품의 소스코드에 대한 보안성 테스트를 통한 보안 취약점 진단 및 가이드를 진행하고, 보안성을 강화를 통해서 고객에게 고품질 제품을 전달하기 위한 테스팅을 목표

     

    2. 테스팅 일정

    수 행 일 정 컨설팅 내용 담 당 자
    202248() 테스팅 요청 및 신청서 접수 기업담당자
    202248()
    ~
    2022421()
    시큐어 코딩 테스팅 기업담당자
    테스터(JICA)
    2022422() 테스팅 보고서 작성 테스터(JICA)

     

    3. 테스팅 결과 요약

    본 테스팅의 지원 내용은 다음과 같습니다.

     

    1) 시험 환경

    No 구 분 기본정보
    1 사용 도구 SPARROW SCE
    2 프로그래밍언어 자바
    3 테스트 서버 OS Windows Server 2009
    4 분석 유형 소스코드 보안 약점

     

    2) 시험 장소

    신청 기업 내에서 소스코드 분석 수행

     

    3) 점검 항목

    점검 항목은 분석하여 검출하는 기준으로서 품질 및 보안 (‘Quality’, ‘Security’) 품질 특성 기반으로 266개 항목을 설정함

    순번 분류 체커 위험도 항목 내용
    1 Security RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION 2 DNS 서버는 스푸핑 공격 대상이기 때문에 DNS명에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP주소로 도메인명을 지정할 수 있습니다.
    2 Security SECURITY.CALL.REMOVE.LOOP 3 Loop 에서 바로 컬렉션의 아이템을 삭제 할 경우를 검출 합니다.
    3 Security SECURITY.CALL.THROWS.FINALLY 3 메소드에서 throw 한 예외들에 대한 예외처리를 하지 않았을 경우를 검출 합니다.
    4 Security SECURITY.CALL.UNLOCK 2 unlock() 메소드를 finally 블럭 내에서 호출 하지 않은 경우를 검출합니다.
    5 Security SECURITY.LOOP_VARIABLE_FINAL 3 For 문에서 인스턴스를 초기화 할때 타입 앞에 final 한정자가 있는지를 검사합니다.
    6 Security SECURITY.METHOD.LOCALE 2 문자열에 toUpperCase(), 또는 toLowerCase()를 할 때 locale 설정이 없을 경우를 검출 합니다.
    7 Security SECURITY.METHOD.OVERRIDE 2 지정한 메소드가 public 이지만 final 이 아닐 경우를 검출합니다.
    8 Security SECURITY.METHOD.OVERRIDE.CLONEABLE 1 clone() 메소드에서 오버라이딩이 가능한 메소드가 호출 될 경우를 검출합니다.
    9 Security SECURITY.METHOD.OVERRIDE.GETPERMISSIONS 1 URLClassLoader 를 상속받은 클래스의 getPermissions 오버라이딩 함수에서 super.getPermissions 를 호출하지 않는 경우를 검출합니다.
    10 Security SECURITY.METHOD.OVERRIDE.STATIC 3 상속하는 클래스에 오버라이딩 메소드가 public 정적일 경우를 검출 합니다.
    11 Security SECURITY.METHOD.PROTECTED 2 메소드가 protected 한정자를 갖지만 하위 클래스에서 public 으로 오버라이딩 할 경우를 검출합니다.
    12 Security LEFTOVER_DEBUG_CODE.TOBE.JS 4 디버깅 목적으로 삽입된 코드를 검출합니다.
    13 Security FORMAT_STRING 3 System.out.format() 을 사용할 때 포맷 스트링을 사용하지 않거나 자료형과 맞지 않는 포맷 스트링을 사용하였을 경우를 검출합니다.
    14 Security WEAK_PASSWORD_ALGORITHM.STRING 3 소스 코드 내에 취약한 암호화 알고리즘 사용을 검출합니다.
    15 Security DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES 2 실수 값을 문자열 표현을 통해 비교하거나 검사하면 안됩니다.
    16 Security FORBIDDEN.INSECURE_RANDOM.JS 3 보안에 취약한 random 함수를 사용하였을때 검출합니다.
    17 Security SECURITY.CALL.SECURITY_CHECK 1 지정한 메소드 내에 보안 검사를 하는 메소드 호출이 있는지를 확인 합니다.
    18 Security INSUFFICIENT_SESSION_ID.CONFIG 3 짧은 세션 ID를 사용하면 위험합니다.
    19 Security SECURITY.CALL.REFLECTION 1 클래스, 메소드, 필드에 접근 권한을 설정할 수 있는 reflection 을 사용하였을 경우를 검출합니다.
    20 Security SECURITY.IMPROPER_RESTORATION_ON_FAILURE 3 try 블록에서 예외를 throw하고, 그 아래에서 필드에 값을 할당 하는 경우를 검출합니다.
    21 Security SECURITY.SYNCHRONIZE.ORDER 1 설정하고 해제하는 잠금 들이 같은 순서로 진행 될 경우 deadlock 이 발생할 수 있습니다.
    22 Security SET_HTTP_ONLY_COOKIES.WEB.CONFIG 2 httpCookieshttpOnlyCookiestrue로 설정되어야 합니다.
    23 Security XSS.WARNING 4 외부에서 입력한 문자열을 특정 조건부 필터링 등을 사용하여 결과 페이지를 생성할 경우 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출될 수 있습니다.

    .....

    * 모두 표기할 수 없어서 일부만 기재하였습니다.

     

    4) 결과 요약

    본 소스코드 품질 테스팅은 농업0000 정보 시스템을 대상으로 진행하였음. 품질에 대한 영향도 평가 기준에 따라 안전결함 주의보 확인.

    영향도 설 명
    위험 Level 1 ~ Level5 까지 21개 이상 결함이 발생할 경우. 시스템에 잠재적인 이슈로 인해 추후에 비즈니스 영역에 피해를 미칠 위험성이 존재
    주의 Level 1 ~ Level5 까지 10개 이상 ~ 21개 이내 결함이 발생할 경우. 시스템에 잠재적인 이슈로 인해 추후에 결함이 발생할 수 있는 상태
    안전 Level 1 ~ Level5 까지 10개 이내 결함이 발생할 경우. 서비스에 큰 영향을 미치지 않고 중요하지 않은 품질 정보가 노출된 상태

    소스코드 통계

    - 소스 파일 개수 405, 빌드 라인 수 131,512라인

     

    Top 10 이슈 검출 파일

     

    이슈분포

    - Level 1에서 38, Level 2에서 3, Level 3에서 10, 위험도가 낮은 수준인 Level 4에서 8, Level 5에서 0개 이슈 검출

     

    Top 10 이슈 검출 체커

    체커 타입

     체커 별 진단 결과

    ....

    체커 상세 진단

    진단(가이드) 내용

    해결 방법 제공

    ....

    진단 보고서 제공

    ...

     

     

    김영찬 (소프트웨어 품질 전문가)

    (재)전주정보문화산업진흥원(JICA)

    소프트웨어 개발자로 10년간 발로 코딩 하다가 한계를 느끼고, 

    2015년부터 소프트웨어 품질에 몸을 담고 기업을 돕고 있음

    email.  sweng@jica.or.kr  / tel. 063-281-4113

    주업무 : 소프트웨어 품질 컨설팅, 테스팅,  KOLAS 기술책임자, 개발자 네트워크 운영

    자격

      - SP, CMMI, VSE(ISO 29110), ISMS(ISO 27001) 인증 심사원

      - AIT, ISTQB FL, CSTS, 29119 외 다수