2. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 2
ISMS 인증 기준 및 종류
• ISMS 적합성 평가 범위
(미래부 고시)
3. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 3
ISMS 정보보호 대책
• 시스템 개발 보안
- 어플리케이션 보안
- 분석 및 설계 보안 관리, 구현 및 이행 보안 관리, 변경관리
진단 : 취약점 진단, 위험 식별
대응 : 시큐어 코딩, 위험 제거
주요자산
어플리케이션
공격 방어
시큐어코딩취약점 점검
위험 식별 위험 제거
지속적인 관리체계 기반의 보안품질 향상
4. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 4
시큐어 코딩 (Secure Coding) 의 개요
• 시큐어 코딩 개념
- 개발 단계에서 보안 취약점 제거는 운영단계에서 수행하는 것보다 훨씬 효율적으로 적용 될 수 있음
- 소스코드를 작성하는 구현단계에서 보안 취약점 잔존을 최소화 하기 위한 활동
- SW 개발과정에서 개발자의 실수, 논리적 오류 등으로 인한 SW 내재된 보안 취약점을 최소화 하는 한편,
- 해킹 등 보안위협에 대응 할 수 있는 안전한 SW를 개발하기 위한 일련의 과정
• 시큐어 코딩 필요성
- 보안 패치가 발표되기 이전의 보안 취약점을 이용하는 Zero Day 공격 증가
- 사이버 공격의 약 75%가 응용 프로그램(SW)의 취약점을 악용한 것임
- 소스코드 보안 취약점을 이용한 사이버 공격은 IDS, IPS 등 일반적인 보안장비로 대응 불가
- 보안취약점을 이용한 악성코드 수가 기하급수적으로 늘어나고 있는 추세
- SW 설계단계에서 제품 출시까지 보안취약점 등 결함을 제거하는 시점에 따른 비용차이는 30배 차이로 발생
개발시점 보안취약점 제거 > 개발완료후 보안취약점 제거
5. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 5
시큐어 코딩 (Secure Coding) 의 개요
• 시큐어 코딩 기반의 정보시스템 운영지침 및 소프트웨어 개발 보안가이드
6. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 6
시큐어 코딩 (Secure Coding) 의 개요
• 소프트웨어 보안약점 유형
- 7가지 유형으로 분류
입력데이터 검증 및 표현
보안기능
시간 및 상태
에러처리
코드오류
캡슐화
API 오용
8. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 8
Soanrqube ?
• 소냐큐브 특징
- Continuous Inspection (지속적 검증)
Overall health
Focus on the Leak
Enforce Quality Gate
Analyze pull requests
Branch Analysis
Dig into issues
Highlight hot spots
- DevOps Integration (데브옵스 System 연계)
Build Systems
CI Engines
Pass/Fail Notification
Full Web API
Promotion Pipelines
- Multi-Language (20+ 개발언어)
- Detect Tricky Issues (이슈Ticket 연계)
- Open Source
9. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 9
지속적 점검 위한 시큐어 코딩 관리환경 구축
• 시큐어 코딩 점검개선을 위한 관리환경
- 적용현황
1차 검증: CVS SVN GIT 형상관리 전환간 시큐어 코딩 진단프로세스 검증, (16.10~17.03)
2차 검증: 아틀라시안 ALM 기반의 Sonarqube 적용 (17.06~17.12)
- 적용방안
정부가이드라인 적용 가이드라인 (PDM / FindBugs 및 SunarQube 적용규칙 합산) 적용
공개SW를 활용한 소프트웨어 개발보안 점검가이드 참고 (2016.02, 행정자치부/KISA 발행)
- 특징
BitBucket 플러그인 연계 도입 (SonarQube)
개발서버 Auto Commit 시점, 1일 1회 시큐어코딩 품질검토, 자동 실행
이클립스 통합환경 (소나린트 적용)
10. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 10
시큐어코딩 등록을 위한 Rule Set Configuration
• 선행조건
- 플러그인 설치
ISMS는 Findbugs, PDM, Find Security Bugs 룰을 기반으로 구성되므로 관련 플러그인을 설치함
Administration >> System >> Update Center 화면에서 플러그인을 설치
Find Bugs (Find Security Bugs가 포함됨)
PMD
Plug-in 설치구조
11. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 11
시큐어코딩 등록을 위한 Rule Set Configuration
• ISMS 룰 구성
- ISMS 코드 품질 룰은 Find Bugs, Find Security Bugs, 그리고 PMD의 집합으로 구성됨
- 따라서 룰을 목록에서 찾아 품질 프로파일에 포함시킴 (대상 선정)
12. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 12
시큐어코딩 등록을 위한 Rule Set Configuration
• Find Bugs 및 Find Security Bugs 룰셋 (적용가능대상 검토)
13. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 13
시큐어코딩 등록을 위한 Rule Set Configuration
• PMD 룰 셋 (적용가능 대산 검토)
14. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 14
시큐어코딩 등록을 위한 Rule Set Configuration
• 품질 프로파일 생성
- Quality Profiles (품질프로파일) >> Create (생성) 메뉴를 이용함
15. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 15
시큐어코딩 등록을 위한 Rule Set Configuration
• 프로젝트에 프로파일 적용
- Language 별로 품질 프로파일을 프로젝트에 적용할 수 있으며
- 모든 프로젝트에 적용하는 방식과 특정 프로젝트에 적용하는 방식을 선택할 수 있음
16. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 16
시큐어코딩 등록을 위한 Rule Set Configuration
• 룰셋 구성
- 분석룰은 Quality Profile을 기준으로 관리할 수 있음
- Quality profile을 생성하여 profile에 rule를 정의한 후
- 완성된 profile을 프로젝트에 지정하는 절차를 따름
17. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 17
시큐어코딩 등록을 위한 Rule Set Configuration
• 룰 셋 편집
- Rules >> Rules 페이지에서 룰 편집 기능을 제공함
- 언어, 품질 등급 (Type), Tags, Status, Quality Profile등을 혼합하여 룰을 편집 가능
예 : Java 언어, Bug/Code Smell 타입, Deprecated 상태 룰을 표현함
18. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 18
시큐어코딩 등록을 위한 Rule Set Configuration
• 룰 셋 편집
- Rules >> Rules 페이지에서 룰 편집 기능을 제공함
- 언어, 품질 등급 (Type), Tags, Status, Quality Profile등을 혼합하여 룰을 편집 가능
예 : Java 언어, Bug/Code Smell 타입, Deprecated 상태 룰을 표현함
• 룰 추가
- 편집하고 싶은 품질 프로파일을 선택하여, "inactive" 클릭 후 품질 프로파일에 포함되지 않은 룰의 목록확인
- 룰의 우측 Activate 버튼을 누르면 선택된 품질 프로파일 "KUH Quality Profile"에 해당 룰이 추가됨
19. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 19
시큐어코딩 등록을 위한 Rule Set Configuration
• 룰 추가
- 옵션창이 나타나 Severity와 룰의 옵션을 선택할 수 있음
- Activate 버튼을 누르면 선택된 룰이 품질 프로파일에 추가됨
20. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 20
시큐어 코딩, 맞춤형 프로파일 개발
• 행안부 가이드라인 기준 적용룰 (권고 47가지 포함) 적용
- 관련내용의 점검 주안점
정부규격 만족을 위해 Sonar 규칙만으로는 달성하기 어려워 건국대학교병원에 적용가능한 시큐어코딩 등록
프로파일을 별로로 개발하여 적용함
행자부 47개 보안약점 관련 공개SW 룰 분석을 통해 SonarQube 프로파일 등록 처리
21. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 40
시큐어 코딩, 맞춤형 프로파일 등록 규칙 리스트
• ISMS 기준, 등록된 설정 규칙 (14)
- Misplaced Null Check : Critical
- Security - Method returns internal array : Critical
- Empty Catch Block : Critical
- 파라미터 allowCommentedBlocks이(가) false(으)로 설정되었습니다.
- Close Resource : Critical
- 파라미터 types이(가) Connection,Statement,ResultSet(으)로 설정되었습니다.
- 파라미터 closeTargets이(가) close(으)로 설정되었습니다.
- Broken Null Check : Critical
- Avoid Print Stack Trace : Major
- Avoid Catching NPE : Major
- Avoid Catching Generic Exception : Major
- Security - Array is stored directly : Critical
- Security - Potential XSS in Servlet : Major
- Security - XSSRequestWrapper is a weak XSS protection : Major
23. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 42
시큐어 코딩, 맞춤형 프로파일 등록 규칙 리스트
• ISMS 기준, 등록된 설정 규칙 (42)
- Security - Potential Path Traversal (file write): Major
- Security - Potential Path Traversal (file read) : Major
- Security - Potential LDAP Injection : Critical
- Security - Cookie without the secure flag : Major
- Security - Potential HTTP Response Splitting : Info
- Security - Hard Coded Password : Major
- Security - Hard Coded Key : Major
- Security - Tainted filename read : Info
- Security - Message digest is custom : Major
- Security - Potentially sensitive data in a cookie: Info
- Security - Potential Command Injection : Critical
- Security - Blowfish usage with short key : Major
- Security - Servlet reflected cross site scripting vulnerability : Major
- Security - Servlet reflected cross site scripting vulnerability in error page: Major
24. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 43
시큐어 코딩, 맞춤형 프로파일 등록 규칙 리스트
• ISMS 기준, 등록된 설정 규칙 (53)
- Security - A prepared statement is generated from a nonconstant String : Major
- Security - Nonconstant string passed to execute or addBatch method on an SQL
statement : Major
- Security - Relative path traversal in servlet : Major
- Security - Absolute path traversal in servlet : Major
- Style - Read of unwritten public or protected field : Info
- Correctness - Read of unwritten field : Major
- Bad practice - toString method may return null : Major
- Multi-threading - Synchronize and null check on the same field: Major
- Correctness - Store of null value into field annotated @Nonnull : Major
- Style - Parameter must be non-null but is marked as nullable : Info
- Correctness - Method with Optional return type returns explicit null: : Major
25. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 44
시큐어 코딩, 맞춤형 프로파일 등록 규칙 리스트
• ISMS 기준, 등록된 설정 규칙 (68)
- Correctness - Non-virtual method call passes null for non-null parameter : Major
- Style - Possible null pointer dereference on branch that might be infeasible : Info
- Correctness - A known null value is checked to see if it is an instance of a type:
Major
- Style - Method relaxes nullness annotation on return value : Info
- Style - Method tightens nullness annotation on parameter : Info
- Style - Load of known null value : Info
- Style - Immediate dereference of the result of readLine(): Info
- Correctness - Value is null and guaranteed to be dereferenced on exception path:
Major
- Correctness - Null value is guaranteed to be dereferenced : Major
- Bad practice - equals() method does not check for null argument: Major
- Style - Dereference of the result of readLine() without nullcheck: Info
- Correctness - close() invoked on a value that is always null: Major
- Bad practice - Clone method may return null : Major
- Bad practice - Method with Boolean return type returns explicit null : Major
- Correctness - Method does not check for null argument : Major
26. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 45
시큐어 코딩, 맞춤형 프로파일 등록 규칙 리스트
• ISMS 기준, 등록된 설정 규칙 예 (81)
- Correctness - Null pointer dereference in method on exception path : Major
- Malicious code - Public static method may expose internal representation by
returning array : Info
- Bad practice - Dubious catching of IllegalMonitorStateException : Major
- Correctness - An apparent infinite recursive loop : Major
- Security - HTTP Response splitting vulnerability: Major
- Security - HTTP cookie formed from untrusted input : Major
- Correctness - equals method always returns true : Major
- Correctness - equals method always returns false : Major
- Bad practice - Random object created and used only once : Major
- Security - Empty database password : Major
- Security - Hardcoded constant database password : Major
- Correctness - instanceof will always return false : Critical
- Style - Method returns null for Boolean type : Info
27. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 21
시큐어 코딩, 점검결과 품질 게이트
• 품질 게이트
- 특정 임계치, 경계값에 따른 후속조치 처리 가능
- 수시로 확인하기 때문에 별다른 연계는 적용하지 않았음 (기본값 등록 처리함)
28. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 22
아틀라시안 ALM 기반환경에서의 SonarQube 연계
• Agile ALM (Application Lifecycle Management) 프로세스 연동 적용
- 프로세스 적용간 시큐어 코딩 검토 등록
29. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 23
Bamboo 기반의 SonarQube 연동
• Bamboo를 이용해 프로젝트에서 SonarQube에서 분석하는 방법
30. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 24
Bamboo 기반의 SonarQube 연동
• Bamboo 기반의 SonarQube 적용실행 환경
- 개발빌드와 자동으로 연계된 시큐어코딩 및 SW품질검사 과정
31. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 25
SonarQube 기반의 시큐어코딩 점검결과
• 시스템의 실시간 소스 형상변경 기반 점검 결과
32. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 26
SonarQube 기반의 시큐어코딩 점검결과
• 예) 소스 취약점 리스트
33. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 27
SonarQube 기반의 시큐어코딩 점검결과
• 점검결과 버그 유형의 상세 프로파일 점검 결과
- 해당 소스와 상세 룰 설정에 따른 점검내역이 조회됨
34. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 28
SonarQube 기반의 시큐어코딩 점검결과
• 시큐어코딩 룰기반의 소스이슈의 원인, 그리고 수정권고 사항에 대한 참고
35. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 29
SonarQube 기반의 시큐어코딩 점검결과
• 점검 룰에 따른 권고사항 수정시 모니터링
36. ISMS 시큐어코딩을 위한 소나큐브의 활용, 건국대학교병원 이제관 기술사 30
Sonaqube, IT거버넌스를 위한 지속적 정보보호 관리체계의 기여
• Lessons Learned
- 최종결과 : ISMS 인증관리 체계 달성, 지속적 개발보안 유지
- 보안 관리체계 품질 보안 향상
- 어플리케이션 보안 개선의 관점
실시간 변경되는 형상에 대한 수작업이 아닌 자동화 요건마련
소스코드의 품질기준 마련
보안코드에 대한 경각심 마련
내부 소스에 대한 감사 및 분석의 기준 마련
- 지속적 운영환경의 관점
내부 운영조직 및 외부운영 조직을 겸한 기관 필수 적용
오픈소스 기반의 활용을 통한 구축환경의 절감
권고사항의 기술적 충족도 달성
반복적인 업무에 대한 피로도 절감, 지속적 사후개선 가능
• 결론
- Sonarqube 점검환경 도입은 업무의 효율적 자동화를 지원
- 제품이 아닌 서비스로서의 보안유지 방향
- 오픈소스 활용기반의 Best Practices 공유 확대 필요성