문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
1일차
IT 보안과 안전 코딩
- 보안의 본질
- IT 보안 관련 용어
- 리스크의 정의
- IT 보안의 다양한 측면
- 다양한 애플리케이션 영역의 요구 사항
- IT 보안과 안전 코딩
-
취약점부터 봇넷 및 사이버 범죄까지
- 보안 결함의 본질
- 난점의 원인
- 감염된 컴퓨터부터 표적 공격까지
-
보안 결함의 분류
- Landwehr 분류 체계
- 7대 악의 왕국(The Seven Pernicious Kingdoms)
- OWASP Top Ten 2013
- OWASP Top Ten 비교 2003 – 2013
Microsoft® Security Development Lifecycle(SDL) 소개
- 아젠다
-
공격받는 애플리케이션...
- 사이버 범죄의 진화
- 공격은 애플리케이션에 초점을 맞추고 있습니다
- 대부분의 취약점은 작은 ISV 앱에 있습니다
-
Microsoft SDL의 기원...
- Microsoft의 보안 타임라인...
- 어떤 앱이 SDL을 따르는 것이 필수적인가?
-
Microsoft Security Development Lifecycle(SDL)
- Microsoft Security Development Lifecycle(SDL)
- Pre-SDL 요구 사항: 보안 교육
- Phase One: 요구 사항
- Phase Two: 설계
- Phase Three: 구현
- Phase Four: 검증
- Phase Five: 릴리스 – 응답 계획
- Phase Five: 릴리스 – 최종 보안 검토
- Phase Five: 릴리스 – 아카이브
- Post-SDL 요구 사항: 응답
- LOB 앱에 대한 SDL 프로세스 가이드라인
- 어진일 Agile Methodologies에 대한 SDL 가이드라인
- 안전한 소프트웨어 개발은 프로세스 개선을 요구합니다
안전한 설계 원리
-
공격 표면
- 공격 표면 축소
- 공격 표면 – 사례
- 공격 표면 분석
- 공격 표면 축소 – 사례
-
프라이버시
- 프라이버시
- 애플리케이션 행동 및 우려 사항 이해
-
심층 방어(Defense in depth)
- SDL 핵심 원리: 심층 방어
- 심층 방어 – 사례
-
최소 권한 원칙
- 최소 권한 – 사례
-
안전한 기본 설정(Secure defaults)
- 안전한 기본 설정 – 사례
안전한 구현 원리
- 아젠다
- Microsoft Security Development Lifecycle(SDL)
-
버퍼 오버플로우 기초
- Intel 80x86 프로세서 – 주요 레지스터
- 메모리 주소 레이아웃
- x86 기반 C/C++의 함수 호출 메커니즘
- 로컬 변수와 스택 프레임
-
스택 오버플로우
- 스택의 버퍼 오버플로우
- 연습 – 소개
- 연습 BOFIntro
- 연습 BOFIntro – 스택 레이아웃 결정
- 연습 BOFIntro – 간단한 익스플로잇
-
입력 검증
- 입력 검증 개념
-
정수 문제
- 음수 정수의 표현
- 정수 오버플로우
- 산술 오버플로우 – 출력을 추측해 보세요!
- 연습 IntOverflow
- Math.Abs(int.MinValue)의 값은 무엇인가요?
-
정수 문제 완화
- 정수 문제 완화
- 산술 오버플로우 방지 – 덧셈
- 산술 오버플로우 방지 – 곱셈
- C#에서 checked 키워드로 오버플로우 감지
- 연습 – C#에서 checked 키워드 사용
- C#에서 오버플로스로 인한 예외 발생
-
사례 연구 – .NET의 정수 오버플로우
- 실世界の 정수 오버플로우 취약점
- 정수 오버플로우 취약점 익스플로잇
-
경로 횡단 취약점
- 경로 횡단 완화
2일차
안전한 구현 원리
-
인젝션
- 전형적인 SQL 인젝션 공격 방법
- 블라인드 및 시간 기반 SQL 인젝션
- SQL 인젝션 보호 방법
- 명령어 인젝션
-
인증 손상 – 비밀번호 관리
- 연습 – 해시된 비밀번호의 취약점
- 비밀번호 관리 및 저장
- 비밀번호 저장을 위한 특수 목적 해시 알고리즘
-
크로스 사이트 스크립팅(XSS)
- 크로스 사이트 스크립팅(XSS)
- CSS 인젝션
- 익스플로잇: 다른 HTML 태그를 통한 인젝션
- XSS 방지
-
함수 수준 액세스 제어 누락
- 파일 업로드 필터링
-
실용 암호학
- 대칭 암호화를 통한 기밀성 제공
- 대칭 암호화 알고리즘
- 블록 시저 – 운영 모드
- 해시 또는 메시지 다이제스트
- 해시 알고리즘
- 메시지 인증 코드(MAC)
- 대칭 키를 통한 무결성 및 진위성 제공
- 공개 키 암호화를 통한 기밀성 제공
- 원칙 – 개인 키의 소유
- 비밀번호 관리의 전형적인 실수
- 연습 – 하드코딩된 비밀번호
- 결론
안전한 검증 원리
- 기능 테스트 vs. 보안 테스트
- 보안 취약점
- 우선순위 설정
- SDLC 내 보안 테스트
- 테스트 계획 단계(리스크 분석)
-
범위 설정 및 정보 수집
- 이해관계자
- 자산
- 공격 표면
- 테스트를 위한 보안 목표
-
위협 모델링
- 위협 모델링
- 공격자 프로필
- 공격 트리에 기반한 위협 모델링
- 남용/오용 사례에 기반한 위협 모델링
- 남용/오용 사례 – 단순한 웹숍 예제
- 요소별 STRIDE 접근 방식 기반 위협 모델링 – MS SDL
- 보안 목표 식별
- 다이어그램 – DFD 요소 예시
- 데이터 흐름 다이어그램 – 예시
- 위협 열거 – MS SDL의 STRIDE 및 DFD 요소
- 리스크 분석 – 위협 분류
- DREAD 위협/리스크 랭킹 모델
-
보안 테스트 기법 및 도구
- 일반 테스트 접근 방식
- SDLC의 다양한 단계에 대한 기법
-
코드 리뷰
- 소프트웨어 보안을 위한 코드 리뷰
- 테인트 분석(Taint analysis)
- 휴리스틱
-
정적 코드 분석
- 정적 코드 분석
- 연습 – 정적 코드 분석 도구 사용
-
구현 테스트
- 수동 런타임 검증
- 수동 vs. 자동 보안 테스트
- 침투 테스트
- 스트레스 테스트
-
퍼징(Fuzzing)
- 자동 보안 테스트 - 퍼징
- 퍼징의 과제
-
웹 취약점 스캐너
- 연습 – 취약점 스캐너 사용
-
환경 검사 및 강화
- 공통 취약점 평가 시스템 – CVSS
- 취약점 스캐너
- 공개 데이터베이스
-
사례 연구 – 폼 인증 우회
- NULL 바이트 종료 취약점
- 코드 내 폼 인증 우회 취약점
- 폼 인증 우회 익스플로잇
지식 소스
- 안전 코딩 소스 – 시작 키트
- 취약점 데이터베이스
- MSDN의 .NET 안전 코딩 가이드라인
- .NET 안전 코딩 치트시트
- 권장 도서 – .NET 및 ASP.NET
14 시간
회원 평가 (3)
경험 공유는 선생님의 지식과 가치가 있습니다.
Carey Fan - Logitech
코스 - C/C++ Secure Coding
기계 번역됨
트레이너의 지식 수준이 매우 높았습니다. 그는 우리가 궁금해하는 내용에 대해 확실히 알고 있었고, 우리의 질문에 대한 답변도 잘 알고 있었습니다.
Adam - Fireup.PRO
코스 - Advanced Java Security
기계 번역됨
주제는 현재적이며, 업데이트가 필요했습니다.
Damilano Marco - SIAP s.r.l.
코스 - Secure Developer Java (Inc OWASP)
기계 번역됨