SW 개발 보안 구현
시큐어 코딩 가이드
해킹 등의 공격을 유발할 가능성이 있는 보안 취약점을 사전에 제거하고,
외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
보안 약점 | 내용 | 대응 방안 |
입력데이터 검증 및 표현 | 프로그램 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 | 입력 데이터에 대한 유효성 검증, 실패 시 처리 설계 및 구현 |
보안 기능 | 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현 |
인증, 접근 통제, 권한 관리, 비밀번호 등 정책이 적절하게 반영되도록 설계 및 구현 |
시간 및 상태 | 거의 동시에 수행 지원하는 병렬 시스템 or 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태 부적절한 관리 | 공유 자원의 접근 직렬화, 병렬 실행 가능 Framework 사용, 블록문 내에서만 재귀함수 호출 |
에러 처리 | 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요정보 포함 | 중요 데이터 반환하지 않도록 설계 및 구현 |
코드 오류 | 개발자가 범할 수 있는 코딩 오류로 유발 됨 | 코딩 규칙 도출 후 검증 가능한 구성과 경고 순위 최상향 조정 |
캡슐화 | 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 유출 | 클래스내 private 접근자 지정 디버그 코드 제거 |
API 오용 | 의도된 사용에 반하는 방법으로 API 사용하거나, 보안에 취약한 API 사용 |
개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용 |
1. 입력데이터 검증 및 표현
취약점
XSS ( Cross Site Scripting)
검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송되는 경우에
사용자가 클릭해 열람해 부적절한 스크립트가 실행되는 공격
종류
- Stored XSS : 방문자들이 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 브라우저에서 실행되며 감염
- Reflected XSS : 공격용 악성 URL을 생성 후 이메일로 사용자에게 전송하면 사용자가 URL 클릭시 스크립트가 피해자로 반사되어, 접속 사이트에 민감 정보를 공격자에게 전송
- DOM XSS : DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송, 피해자가 URL 클릭시 피해를 당함.
대책
- 특수문자 등록을 방지하기 위해 특수문자 필터링
- HTML 태그 사용 금지(특히 < 사용시 <로 변환)
- 자바스크립트로 시작하는 문자열은 모두 문자열 변환
CSRF(사이트 간 요청 위조 : Cross Site Request Forgery)
사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
- 공격자는 CSRF 스크립트 포함된 게시물 등록
- 사용자가 해당 게시물을 열람 요청
- 게시물 읽은 사용자의 권한으로 공격자가 원하는 요청 발생
- 스크립트 결과 발생
대책
- 입력화면 폼을 작성시 POST 방식 사용
- 입력 폼과 입력처리 프로그램에서 세션별 CSRF 토큰을 사용하여 점검
- 중요기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 구현
SQL 삽입(SQL Injection)
응용 프로그램의 보안 취약점을 이용해 악의적인 SQL 구문을 삽입 + 실행시켜 DB의 정보를 탈취 or 조작
대책
- 바인딩 매개변수 방식 적용해 사전에 변수 타입을 명시
- 사용자로부터 입력되는 모든 값 체크해 필터링
- Servlet Filter 기능 적용
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
정보처리기사 실기 - 소프트웨어 개발 보안 구현 (SW 개발 보안 테스트 & 결함 관리) (0) | 2023.07.20 |
---|---|
정보처리기사 실기 - 소프트웨어 개발 보안 구현 (시스템 보안 구현) (0) | 2023.07.19 |
정보처리기사 실기 - SW 개발 보안 설계 (0) | 2023.07.15 |
정처기 실기 - 소프트웨어 개발 방법론 ( 객체 지향 분석 방법론) (0) | 2023.07.09 |
정처기 실기 - 소프트웨어 개발 방법론 (소프트웨어 생명주기 모델) (0) | 2023.07.04 |