수제비 2022 정보처리기사 실기 교재 개념 정리한 내용입니다.
시큐어 코딩 가이드
: 설계 및 구현 단계에서 잠재적인 보안 취약점을 사전에 제거하고 외부 공격에 안전한 소프트웨어를 개발하는 기법
1. 입력데이터 검증 및 표현
1-1. XSS(cross site script)
: 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송되는 경우, 사용자가 열람하면 웹 페이지에 포함된 부적절한 스크립트가 실행되는 공격
공격 유형
- stored XSS
: 방문자들이 악성 스크립트가 포함된 페이지 읽어봄과 동시에 실행되면서 감염
- reflected XSS
: 공격용 악성 URL을 생성한 후 이메일로 사용자에게 전송, 사용자가 클릭 시와 동시에 접속 사이트에 민감정보를 공격자에게 전송
- DOM(document object model XSS)
: 공격자는 DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 URL을 발송, 클릭시 공격 피해 당하게
공격 절차
- XSS 취약점이 존재하는 서버에 XSS 코드 작성하여 삽입 저장
- 사용자가 XSS 코드에 접근, 해당 페이지에서 정보를 요청
- 사용자의 시스템에서 XSS 코드 실행
- XSS 코드 실행 결과가 공격자에게 전달, 결과를 가지고 웹 서버에서 2차 해킹 시도
1-2. CSRF(사이트 간 요청 위조)
: 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
공격 절차
- 공격자가 CSRF 스크립트가 포함된 게시물 등록
- 사용자가 해당 페이지 열람 요청
- 게시물을 읽은 사용자의 권한으로 공격자가 원하는 요청 발생
- 공격자가 원하는 CSRF 스크립트 결과가 발생
1-3. SQL 삽입
: 응용 프로그램의 보안 취약점을 이용해 악의적인 SQL 구문을 삽입,실행하여 DB의 접근을 통해 정보 탈취 및 조작
공격 유형
- form SQL injection
: HTML form 기반 인증에 취약점 있는 경우, 사용자 인증을 위한 쿼리문의 조건을 임의로 조작하여 인증 우회
- union SQL injection
: union 연산자 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격
- stored procedure SQL injection
: 저장 프로시저(stored procedure) 이용하여 공격
- mass SQL injection
: 한번의 공격으로 대량의 DB 값이 변조
- error-based SQL injection
: DB 쿼리에 대한 에러값을 기반으로 점진적으로 DB 정보를 획득(DB 쿼리에 대한 오류 메시지를 반환하지 않으면 공격 불가)
- blind SQL injection
: 쿼리 결과의 참 거짓을 통해 의도하지 않은 SQL문을 실행함으로써 DB 비정상적으로 공격
공격 절차
- 응용 프로그램의 취약점 탐지
- 악의적인 SQL 구문 삽입하여 인증 우회
- 권한 상승하여 DB 정보 탈취, 조작
2. 보안 기능
취약점
- 적절한 인증 없이 중요 기능 허용 : 보안검사 우회
- 부적절한 인가 : 접근제어 기능 없는 실행경로를 통해 정보,권한 탈취
- 취약한 암호화 알고리즘 사용 : 암호화된 환경설정 파일 해독하여 중요 정보 탈취
- 중요 정보 평문 저장 및 전송 : 암호화되지 않은 평문 데이터 탈취
- 하드 코드 된 비밀번호 : 프로그램 코드 내부에 패스워드 포함 시 관리자 정보가 노출될 수 있음
- 취약한 패스워드 요구 조건 : 사용자 계정 보안 취약점
3. 시간 및 상태
4. 에러 처리
- 오류 메시지 통한 정보 노출
- 오류 상황 대응 부재
- 적절하지 않은 예외 처리
5. 코드 오류(개발자의 실수)
- 널 포인터 역참조 : null이 될 수 없다는 가정을 위반했을 때 발생
- 정수를 문자로 변환 : 문자에 대한 저장 값이 올바르지 않음
- 부적절한 자원 해제 : 종료된 자원을 반환하지 못했을 때
- 초기화되지 않은 변수 사용
6. 캡슐화
- 잘못된 세션에 의한 데이터 정보 노출
- 제거되지 않고 남은 디버그 코드
- 민감한 데이터를 가진 내부 클래스 사용 : 권한이 없는 클래스를 사용하고자 할 때 발생
- 시스템 데이터 정보 노출 : 내부 데이터를 외부로 출력하도록 코딩했을 때 발생
7. API 오용
- DNS lookup에 의존한 보안 결정 : 도메인명에 의존하여 보안결정을 내리는 경우 발생
- 위험하다고 알려진 함수 사용
- 널(null) 매개변수 미검사
8. 세션 통제(session control)
- 불충분한 세션관리 : 세션 타임아웃을 길게 설정한 경우 공격자에 의해 사용자 권한이 도용
'STUDY' 카테고리의 다른 글
[정처기] 10과목 애플리케이션 테스트 관리 소프트웨어 테스트 총정리 (0) | 2022.10.19 |
---|---|
[정처기] 7과목 SQL 응용 트랜잭션 총정리 (0) | 2022.10.19 |
[정처기] 9과목 소프트웨어 개발 보안 구축 암호화 알고리즘 총정리 (1) | 2022.10.19 |
[정처기] 9과목 소프트웨어 개발 보안 용어 총정리 (1) | 2022.10.13 |
[정처기] 9과목 소프트웨어 개발 보안 구축 시스템 보안위협 총정리 (0) | 2022.10.13 |