SW 개발 보안 구현
시큐어 코딩 가이드
- 설계 및 구현 단계에서 해킹 등의 공격을 초래할 가능성이 있는 잠재적인 보안 취약점(Vulnerability)을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
- 소프트웨어 보안 약점(Weakness)을 방지하기 위한 시큐어 코딩 가이드에 따른 개발 수행이 필요
입력데이터 검증 및 표현
- 프로그램 입력값에 대한 검증 누락과 부적절한 검증, 잘못된 형식 지정
- 사용자와 프로그램 입력데이터에 대한 유효성 검증 체계를 수립하고 실패 시 처리 설계 및 구현
보안 기능
- 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현
- 인증과 접근 통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영되도록 설계 및 구현
시간 및 상태
- 거의 동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
- 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출
에러 처리
- 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요정보가 포함
- 에러 또는 오류 상황을 처리하지 않거나, 불충분하게 처리되어 중요정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현
코드 오류
- 개발자가 범할 수 있는 코딩 오류로 인해 초래
- 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위를 최상향 조정한 후 경고 메시지 코드 제거
캡슐화
- 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출
- 디버그 코드 제거와 필수 정보 외의 클래스 내부 데이터 접근자 프라이빗(Private)으로 지정
API 오용
- 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용
- 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용
입력 데이터 검증 및 표현
입력 데이터 검증 및 표현 개념
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
- 입력 데이터로 인해 발생하는 문제를 예방하기 위해서는 소프트웨어 개발의 구현 단계에서 유효성 검증 체계를 갖추고, 검증되지 않은 데이터의 입력을 처리할 수 있도록 구현해야 함
입력 데이터 검증 및 표현 취약점
입력 데이터 검증 및 표현 취약점
XSS(Cross Site Scripting)
- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
- 특수문자 등록을 방지하기 위해 특수문자 필터링, HTML 태그 사용 금지(특히, < 문자사용 시 <로 변환처리), 자바스크립트로 시작하는 문자열은 모두 문자열 변환처리
사이트 간 요청 위조(CSRF, Cross Site Request Forgery)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
- 입력화면 폼 작성 시 GET 방식보다 POST 방식 사용, 입력 폼과 입력처리 프로그램에서 세션별 CSRF 토큰을 사용하여 점검, 중요기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 구현
SQL 삽입(SQL Injection)
- 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스(DB)의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격
- 바인딩 매개변수 방식 적용하여 사전에 변수 타입을 명시적으로 지정, 사용자로부터 입력될 수 있는 모든 값을 체크하여 필터링, Servlet Filter 기능 적용(Java에서만 적용)
XSS
XSS 공격 유형
저장형(Stored) XSS : 방문자들이 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 악성 스크립트가 브라우저에서 실행되면서 감염되는 기법
반사형(Reflected) XSS : 공격용 악성 URL을 생성한 후 이메일로 사용자에게 전송하면 사용자가 URL 클릭 시 즉시 공격 스크립트가 피해자로 반사되어 접속 사이트에 민감정보를 공격자에게 전송하는 기법
문서 객체 모델(DOM, Document Object Model) 기반 XSS : 공격자는 DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을, 이메일을 통해 발송하고 피해자가 URL 클릭 시 공격 피해를 당하는 기법
XSS 공격 절차
- 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 삽입 저장
- 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근
- 사용자가 XSS 코드가 저장된 페이지에 정보를 요청
- 사용자의 시스템에서 XSS 코드 실행
- XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 결과를 가지고 웹 서버에서 2차 해킹 시도
SQL 삽입(SQL Injection)
SQL 삽입 공격 유형
Form SQL Injection : HTML Form 기반 인증을 담당하는 애플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리 문의 조건을 임의로 조작하여 인증을 우회하는 기법
Union SQL Injection : 쿼리의 UNION 연산자를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법
Stored Procedure SQL Injection : 저장 프로시저를 이용하여 공격하는 기법
Mass SQL Injection : 기존 SQL Injection의 확장된 개념으로 한 번의 공격으로 대량의 DB 값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격 기법
Error-Based SQL Injection : DB 쿼리에 대한 에러 값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 공격 기법
Blind SQL Injection : DB 쿼리에 대한 오류 메시지를 반환하지 않으면 공격할 수 없는 Error-Based SQL과 달리 오류 메시지가 아닌 쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL 문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법
SQL 삽입 공격 절차
- 응용 프로그램의 취약점 탐지
- 악의적인 SQL 구문 삽입하여 인증 우회
- 권한이 상승하여 DB의 정보 탈취 및 조작 실행
CSRF(Cross Site Request Forgery)
CSRF 공격 유형
GET-Based CSRF : 악성 링크나 이미지 태그 등을 사용하여 사용자의 브라우저에서 특정 GET 요청을 실행하도록 유도하는 기법
POST-Based CSRF : 사용자의 세션을 이용해 악성 POST 요청을 보내도록 유도하는 기법
CSRF 공격 절차
- 공격자는 CSRF 스크립트가 포함된 게시물을 등록
- 사용자는 CSRF 스크립트가 포함된 메시지의 게시물 열람 요청
- 게시물을 읽은 사용자의 권한으로 공격자가 원하는 요청 발생
- 공격자가 원하는 CSRF 스크립트 결과가 발생
'정보처리 > 정보시스템구축관리' 카테고리의 다른 글
소프트웨어 개발 보안 구축 구현 3/5 (0) | 2025.03.26 |
---|---|
소프트웨어 개발 보안 구축 구현 2/5 (0) | 2025.03.25 |
소프트웨어 개발 보안 구축 설계 7/7 (0) | 2025.03.23 |
소프트웨어 개발 보안 구축 설계 6/7 (0) | 2025.03.22 |
소프트웨어 개발 보안 구축 설계 5/7 (0) | 2025.03.21 |