오늘부터 공부한다
시큐어 코딩(Secure Coding) 본문
시큐어 코딩이란, 말 그대로 보안 코딩이다.
더 자세하게 설명하자면, 개발 단계에서 해킹과 같은 공격을 유발할 수 있는 취약점을 사전에 제거하고,
외부로부터의 공격에 안전하게 소프트웨어를 개발하는 방법이다.
시큐어 코딩은 수정이 손쉽고, 비용 효율성이 낮기 때문에 개발 초기 단계에서 시행한다.
※ 소프트웨어 업체는 SQL injection, XSS(Cross Site Scripting) 등 47개의 보안 취약점을 제거해야 함
시큐어 코딩을 위한 보안 방법론
1. 분석 단계
- 요구사항 중 보안 항목을 식별
- 보안 설계 검토 및 보안 설계서 작성
- 보안 통제 수립
2. 설계 단계
- 위험원 도출을 위한 위협 모델링
- 보안 설계 검토 및 보안 설계서 작성
- 보안 통제 수립
3. 구현
- 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수해서 개발
- 소스코드 보안 약점 진단 및 개선
4. 테스트
모의 침투 테스트, 동적분석을 위한 보안 취약점 진단 및 개선
5. 유지 보수
지속적인 개선(패치)
시큐어 코딩의 예시
대중적인 취약점인 SQL injection을 바탕으로 작성한다.
1) 개념
injection은 웹 애플리케이션에 대한 입력값 검증을 하지 않은 경우,
공격자가 입력 폼 및 파라미터를 조작하여 정보를 열람하거나 데이터를 조작하는 해킹기술이다.
DB에서 전달되는 SQL Query를 변경시키기 위해 웹 애플리케이션에서 입력 받은 파라미터를 변조하여 삽입함으로써
비정상적인 데이터베이스 접근을 시도하거나 재구성하여 원하는 정보를 열람하는 해킹 기술
2) 특징
- DB에 악성 코드를 대량 삽입
- Post나 HTTP header를 이용한 경우는 로그를 찾기 어려움
- 해킹 기법이 간단, 누구나 사용 가능
- 해킹 기법에 비해 효과가 매우 높고 위협적이다.
3) SQL injection에 걸리기쉬운 코딩
request 값을 검증 없이 바로 파라미터로 받을 때 injection이 발생한다.
이를 해결하기 위해서는 PreparedStatement를 이용하여 예방하도록 한다.
또는 inejction을 유발할 수 있는 따옴표나 세미콜론 등, SQL에 자주 사용되는 것들을
들어올 수 없게 해야한다.
4) 기타 SQL injection 방지 노력
-불필요한 권한을 삭제, DROP TABLE 같은 공격을 미연에 방지
- Mubatis framework와 같은 framework 사용시 별도의 보안 코딩 기법 사용
- 웹 페이지에 직접 SQL injection 공격을 시도하여 확인
- 코드에서 replace를 사용할 경우, 자바스크립트외에도 back-end쪽에서도 처리한다.
'소프트웨어 공학' 카테고리의 다른 글
빅데이터(Big Data) (0) | 2019.10.17 |
---|---|
결합도(Coupling)과 응집도(Cohesion) (1) | 2019.10.17 |
QA와 QC (0) | 2019.10.16 |
디자인 패턴 (0) | 2019.10.15 |
(OS)교착상태 (Deadlock) (0) | 2019.10.15 |