코스 개요

1일차

IT 보안 및 안전한 코딩

  • 보안의 특성
  • IT 보안 관련 용어
  • 위험의 정의
  • IT 보안의 다양한 측면
  • 다른 애플리케이션 영역의 요구사항
  • IT 보안과 안전한 코딩 비교
  • 취약점에서 봇넷 및 사이버 범죄로
    • 보안 결함의 특성
    • 난이도의 이유
    • 감염된 컴퓨터에서 표적 공격으로
  • 보안 결함 분류
    • Landwehr의 분류법
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • OWASP Top Ten 비교 2003 - 2013

Microsoft® Secure Development Lifecycle (SDL) 소개

  • 학습 목표
  • 공격을 받는 애플리케이션...
    • 사이버 범죄의 진화
    • 공격이 애플리케이션에 집중됨
    • 대부분의 취약점은 작은 ISV 앱에서 발생함
  • Microsoft SDL의 유래...
    • Microsoft의 보안 타임라인...
    • SDL을 따르는 애플리케이션은?
  • Microsoft Secure Development Lifecycle (SDL)
    • Microsoft Secure Development Lifecycle (SDL)
    • 사전 SDL 요구사항: 보안 교육
    • 1단계: 요구사항
    • 2단계: 설계
    • 3단계: 구현
    • 4단계: 검증
    • 5단계: 출시 - 대응 계획
    • 5단계: 출시 - 최종 보안 검토
    • 5단계: 출시 - 아카이브
    • 사후 SDL 요구사항: 대응
    • LOB 앱을 위한 SDL 프로세스 가이드라인
    • 민첩 개발 방법론을 위한 SDL 가이드라인
    • 안전한 소프트웨어 개발은 프로세스 개선을 요구함

안전한 설계 원칙

  • 공격 표면
    • 공격 표면 감소
    • 공격 표면 - 예시
    • 공격 표면 분석
    • 공격 표면 감소 - 예시
  • 프라이버시
    • 프라이버시
    • 애플리케이션 동작 및 우려 사항 이해
  • 다층 방어
    • SDL 핵심 원칙: 다층 방어
    • 다층 방어 - 예시
  • 최소 권한 원칙
    • 최소 권한 - 예시
  • 안전한 기본 설정
    • 안전한 기본 설정 - 예시

안전한 구현 원칙

  • 학습 목표
  • Microsoft Secure Development Lifecycle (SDL)
  • 버퍼 오버플로우 기초
    • Intel 80x86 프로세서 - 주요 레지스터
    • 메모리 주소 배치
    • C/C++에서 x86 상의 함수 호출 메커니즘
    • 지역 변수와 스택 프레임
    • 스택 오버플로우
      • 스택의 버퍼 오버플로우
      • 연습 - 소개
      • 연습 BOFIntro
      • 연습 BOFIntro - 스택 배치 결정
      • 연습 BOFIntro - 간단한 공격
  • 입력 검증
    • 입력 검증 개념
    • 정수 문제
      • 음수의 표현
      • 정수 오버플로우
      • 산술 오버플로우 - 출력 예측!
      • 연습 IntOverflow
      • Math.Abs(int.MinValue)의 값은?
    • 정수 문제 완화
      • 정수 문제 완화
      • 산술 오버플로우 방지 - 덧셈
      • 산술 오버플로우 방지 - 곱셈
      • C#에서 checked 키워드를 사용한 오버플로우 감지
      • 연습 - C#에서 checked 키워드 사용
      • C#에서 오버플로우로 트리거되는 예외
    • 사례 연구 - .NET의 정수 오버플로우
      • 실제 세계의 정수 오버플로우 취약점
      • 정수 오버플로우 취약점을 이용한 공격
    • 경로 탐색 취약점
      • 경로 탐색 완화

2일차

안전한 구현 원칙

  • 주입 공격
    • 일반적인 SQL Injection 공격 방법
    • Blind 및 Time-based SQL injection
    • SQL Injection 보호 방법
    • 명령어 주입
  • 취약한 인증 - 비밀번호 관리
    • 연습 - 해시된 비밀번호의 약점
    • 비밀번호 관리 및 저장
    • 비밀번호 저장을 위한 특수 목적 해시 알고리즘
  • 크로스 사이트 스크립팅 (XSS)
    • 크로스 사이트 스크립팅 (XSS)
    • CSS 주입
    • 다른 HTML 태그를 통한 주입 활용
    • XSS 예방
  • 함수 수준 접근 제어 누락
    • 파일 업로드 필터링
  • 실용적인 암호화
    • 대칭 암호화를 통한 기밀성 보장
    • 대칭 암호화 알고리즘
    • 블록 암호 - 작동 모드
    • 해시 또는 메시지 다이제스트
    • 해시 알고리즘
    • 메시지 인증 코드 (MAC)
    • 대칭 키를 사용한 무결성 및 진위성 보장
    • 공개 키 암호화를 통한 기밀성 보장
    • 경험칙 - 개인 키 소유
    • 비밀번호 관리에서의 일반적인 실수
    • 연습 - 하드 코딩된 비밀번호
    • 결론

안전한 검증 원칙

  • 기능 테스트와 보안 테스트 비교
  • 보안 취약점
  • 우선 순위 설정
  • SDLC에서의 보안 테스트
  • 테스트 계획 단계 (리스크 분석)
  • 범위 설정 및 정보 수집
    • 이해 관계자들
    • 자산
    • 공격 표면
    • 테스트를 위한 보안 목표
  • 위협 모델링
    • 위협 모델링
    • 공격자 프로필
    • 공격 트리를 기반한 위협 모델링
    • 오용/남용 사례를 기반한 위협 모델링
    • 오용/남용 사례 - 간단한 웹 쇼핑몰 예시
    • MS SDL의 STRIDE 요소별 접근 방식
    • 보안 목표 식별
    • 다이어그램 - DFD 요소 예시
    • 데이터 흐름도 - 예시
    • 위협 열거 - MS SDL의 STRIDE 및 DFD 요소
    • 리스크 분석 - 위협 분류
    • DREAD 위협/리스크 순위 모델
  • 보안 테스트 기술 및 도구
    • 일반적인 테스트 접근 방식
    • SDLC의 다양한 단계에 대한 기법
  • 코드 검토
    • 소프트웨어 보안을 위한 코드 검토
    • 오염 분석
    • 휴리스틱
  • 정적 코드 분석
    • 정적 코드 분석
    • 연습 - 정적 코드 분석 도구 사용
  • 구현 테스트
    • 수동 런타임 검증
    • 수동 보안 테스트와 자동화된 보안 테스트 비교
    • 침투 테스트
    • 스트레스 테스트
  • 퍼징
    • 자동화된 보안 테스트 - 퍼징
    • 퍼징의 난점
  • 웹 취약점 스캐너
    • 연습 - 취약점 스캐너 사용
  • 환경 점검 및 강화
    • 일반적인 취약성 점수 시스템 - CVSS
    • 취약점 스캐너
    • 공개 데이터베이스
  • 사례 연구 - 폼 인증 우회
    • NULL 바이트 종료 취약점
    • 코드의 폼 인증 우회 취약점
    • 폼 인증 우회를 이용한 공격

지식 출처

  • 안전한 코딩 출처 - 시작 키트
  • 취약점 데이터베이스
  • .NET 보안 코딩 가이드라인 (MSDN)
  • .NET 보안 코딩 체크리스트
  • 권장 도서 - .NET 및 ASP.NET
 14 시간

참가자 수


참가자당 가격

회원 평가 (5)

예정된 코스

관련 카테고리