책 소개
요약
소프트웨어 취약점을 연구하고, 분석하고, 찾아내는 과정을 오래 하다 보면 미시적 관점에서 시스템을 바라보게 된다. 워낙 방대한 범위에서 위협이 존재하고, 수많은 소프트웨어를 분석하는 데 짧지 않은 시간이 걸리며, 기술적으로 쉽지 않은 내용을 이해하고 적용하는 것이 쉬운 일은 아니기 때문이다. 이 책은 자칫 편협한 시각에 갇혀 다양한 위협을 지나칠 수 있는 보안 담당자 혹은 보안 컨설턴트에게 위협을 정리하고 대응할 수 있는 눈을 갖는 데 도움을 줄 것이다.
이 책에서 다루는 내용
고객이 피해를 입기 전에 보안 문제들을 찾아서 해결하는 방법
실용적이고 실행 가능한 도구, 기술, 소프트웨어 개발자와 IT 전문가 그리고 보안 전문가를 위한 활용 방법
소프트웨어 중심의 위협 모델링의 미묘한 차이를 분석하고, 구축한 이후 단계에서 소프트웨어와 시스템에 적용한 사례 소개
복잡한 시스템을 관리할 때 보안을 강화하기 위해 위협 모델링 적용 방법
구조적, 조직적 체계를 사용한 잠재적 위협 관리
진화하는 보안 위협들을 발견하고 식별하는 방법
소프트웨어 유형, 운영 시스템, 마이크로 소프트와 기타 최고 IT 기업에서 효과가 입증되고 검증된 프로그램 방식과 기술에 관계없이, 구체적이고 실행 가능한 조언
이 책의 대상 독자
소프트웨어 개발자와 테스터
소프트웨어를 만드는 개발자들은 소프트웨어 엔지니어, 품질 보증, 다양한 프로그램, 또는 프로젝트 관리자를 포함한다. 개발자들이 프로젝트 그룹에 속해 있다면 초기 소프트웨어 프로세스에서 설계 문제를 확인하고 해결할 수 있는 방법을 배울 수 있다.
이 책은 고객의 요구 사항과 기대를 더욱 충족시키는 더 안전한 소프트웨어를 배포하게 한다. 소프트웨어를 모델링하거나 위협을 찾는 다른 방법 외에도 위협 모델링에 대한 간단하고 효과적이며 재미있는 접근 방법을 배울 수 있다. 또한 개발 프로세스에 맞게 취약점과 위협을 추적하는 방법을 알아본다. 그리고 요구 사항을 더 분명하게 만드는 데 도움을 주기 위해서 위협을 사용하는 방법을 배운다. 인증, 암호화, 유용성과 같이 오랜 역사를 가진 완화와 공격의 상호작용이 일어나는 위치에 대해서도 배운다.
이를 통해 추천되는 접근 방법들이 어떻게 현재 상태까지 발전해왔는지 이해할 수 있다. 이 밖에도 개발 프로세스에서 위협 모델링을 이끌어내는 방법 등 더 많은 것을 배울 수 있다.
시스템 설계, 운영, 관리
소프트웨어 구성 요소를 통합하고, 이를 통해 값을 전달하는 시스템을 만드는 사람들은 시스템을 설계하고 구성 요소를 선택할 때나 배포를 준비할 때 위협을 찾아내 발견하는 방법을 배울 수 있다. 이 책은 비즈니스, 고객, 규정 준수 요구 사항을 더욱 충족하는 더 안전한 시스템을 제공할 수 있다. 시스템을 구축하거나 구축한 시스템을 모델링하는 방법 외에도 위협 모델링에 대한 간단하고 효과적이며 재미있는 접근 방법을 배울 수 있다. 또한 시스템에 대한 보안이나 개인정보 보호 위협을 발견하는 방법을 배운다. 그리고 운영 중에 위협을 해결할 수 있는 방법을 알아본다. 직면한 위협의 보완 방법과 그러한 위협을 해결하는 방법도 배운다. 그리고 웹과 클라우드 시스템같은 기술의 범주에 있는 특정 위협과 계정에 대한 위협을 알아본다. 두 가지 모두 운영자에게 매우 중요하다. 이 책은 유용성의 문제를 다루고 조직 내에 있는 사람들과 고객들의 보안 활동에 영향을 주는 방법에 대한 관점을 바꾸게 해준다. 이 밖에도 시스템을 보호하는 데 사용할 수 있는 암호화 구성 요소 등 더 많은 것을 배운다.
보안 전문가
보안 업무를 하고 있다면 이 책에서 두 가지 중요한 방법을 배운다. 첫째, 생산성을 향상시켜주는 위협 모델링에 대한 구조화된 접근 방법을 배울 수 있고, 그렇게 함으로써 위협 모델링의 ‘명백한’ 부분들이 생각처럼 명백하지 않거나 옳지 않았음을 알게 된다. 둘째, 조직에서 사용 중인 개발, 운영, 배포 프로세스에 보안을 포함하는 방법을 배운다.
보안 전문가에게 이 책은 더 나은 위협 모델링을 하도록 도움을 줄 수 있다. 저자는 경험으로 설명한다. 부록에서 사례 연구를 작성하면서 부록 B와 요구 사항을 설명한 책의 내용에 참조하고 있고, 단지 소프트웨어 모델에서 갑자기 생각난 것이 아닌 위협을 찾고 있는 것을 발견하게 된다.
이 책의 구성
1부, '시작하기'는 시작에 관한 것으로, 책의 처음 부분(특히 1장)은 많은 보안 전문 지식이 없는 사람들을 위해 쓰여졌다. 책의 후반부는 이 책에서 얻을 수 있는, 또는 자신의 경험과 결합된 보안 지식을 기반으로 한다. 위협 모델링의 이해와 그 분야에 새로운 사람들을 위한 권장 방법을 얻을 수 있다. 또한 공격자나 자산 같은 다른 옵션들보다 소프트웨어 모델링이 시작하기에 더 좋은 이유와 함께 모델링 방법들을 배운다.
2부, '위협 발견'은 위협을 찾는 방법으로, 위협을 찾는 데 사용하는 기술과 도구를 제공한다. 이를 통해 사람들이 에너지를 쏟고 있는 다양한 기술들의 장단점을 검토하게 하고, 정보 기술 위협 모델링에 접근하는 다양한 방법들을 조사하고 분석한다. 그 방법은 처음부터 끝까지 읽거나 도움이 필요한 특정 지점으로 건너뛰는 방식으로 분류돼 있다.
3부, '위협 관리와 해결'에는 위협을 해결하는 방법, 위협을 해결하는 데 사용할 수 있는전술과 기술, 위험의 장단점을 만드는 방법 등이 포함돼 있다. 또한 해결된 위협을 검토하고 위협 모델링하는 데 도움이 되는 도구를 다룬다.
4부, '기술적이고 다루기 힘든 분야의 위협 모델링'은 수많은 위협 모델링과 분석을 마친 특정 기술과 어려운 영역에서의 위협 모델링이다. 웹과 클라우드, 계정과 정체성, 암호화, 자신만의 보안 요구 사항 분석을 시작할 수 있는 요구 사항 문서(Cookbook) 등을 포함한다.
5부, '한 단계 더 나아가기'는 위협 모델링의 다음 단계로의 전진이다. 특정 조직에 대한 위협 모델링 프로세스를 만들고, 사용자 정의에 대한 방법을 고려하고 있는 경험 있는 위협 모델러, 보안 전문가, 프로세스 설계자 등을 대상으로 한다.
부록은 이제까지 배웠던 기술을 적용하는 데 도움을 주는 정보를 제공한다. “위협 모델은 무엇인가”, “자산은 무엇인가”와 같은 질문에 대한 일반적인 답변들을 포함하고 있다. 또한 위협을 찾는 데 도움을 줄 수 있는 위협 트리, 공격자와 공격자 페르소나 리스트, 1장에서 사용할 권한 상승(Elevation of Privilege) 게임에 대한 세부 사항, 마지막으로 상세한 위협 모델 예제들을 포함하고 있다. 그 다음으로 용어집, 참고 문헌, 찾아보기 등이 이어진다.
목차
목차
- 1 시작하기와 위협 모델
- 위협 모델 학습
- 무엇을 개발하고 있는가?
- 무엇이 잘못될 수 있는가?
- 각각의 위협 대응
- 작업 내용 확인
- 스스로 위협 모델링하기
- 착수와 위협 모델링을 위한 체크리스트
- 요약
- 2 위협 모델링 전략
- 위협 모델이란 무엇인가?
- 위협을 브레인스토밍하기
- 브레인스토밍 변형
- 문헌 연구
- 브레인스토밍 관점
- 위협 모델링을 위한 체계적인 접근 방식
- 자산에 초점 맞추기
- 공격자에 초점 맞추기
- 소프트웨어에 초점 맞추기
- 소프트웨어의 모델
- 다이어그램 유형
- 신뢰 경계
- 다이어그램에 포함시켜야 되는 것
- 복잡한 다이어그램
- 다이어그램의 레이블
- 다이어그램의 색
- 엔트리 포인트
- 다이어그램 검증
- 요약
- 2부 위협 발견
- 3 STRIDE
- STRIDE의 이해와 유용성
- 스푸핑 위협
- 동일한 시스템의 프로세스나 파일 스푸핑
- 시스템 스푸핑
- 사람 스푸핑
- 조작 위협
- 파일 조작
- 메모리 조작
- 네트워크 조작
- 부인 위협
- 로그 공격
- 행위 부인
- 정보 유출 위협
- 프로세스를 통한 정보 유출
- 데이터 저장소 정보 유출
- 데이터 흐름에서 정보 유출
- 서비스 거부 위협
- 권한 상승 위협
- 프로세스 오류를 이용한 권한 상승
- 인증 오류를 통한 권한 상승
- 추가 사례: Acme-DB에 대한 STRIDE 위협
- STRIDE 변형
- STRIDE별 요소
- STRIDE별 상호작용
- DESIST
- 종료 기준
- 요약
- 4 공격 트리
- 공격 트리 작업
- 위협을 찾기 위한 공격 트리 사용
- 새로운 공격 트리 생성
- 트리 표현
- 사람이 이해하기 쉬운 표현
- 구조적인 표현
- 공격 트리 사례
- 실제 공격 트리
- 사기 공격 트리
- 선거 운영 평가 위협 트리
- 마인드맵
- 공격 트리의 관점
- 요약
- 5 공격 라이브러리
- 공격 라이브러리의 속성
- 라이브러리와 체크리스트
- 라이브러리와 문헌 분석
- CAPEC
- 종료 기준
- CAPEC에 대한 관점
- OWASP Top 10
- 요약
- 6 프라이버시 도구
- 솔로브의 프라이버시 분류 체계
- 인터넷 프로토콜에 대한 프라이버시 고려 사항
- 프라이버시 영향 평가(PIA)
- 니미티 슬라이더와 개인정보 톱니바퀴
- 맥락상 무결성
- 맥락상 무결성 의사결정 휴리스틱
- 추가된 맥락상 무결성 휴리스틱
- 맥락상 무결성에 대한 관점
- LINDDUN
- 요약
- 3부 위협 관리와 해결
- 7 위협 처리와 관리
- 위협 모델링 프로젝트 시작
- 위협 모델링의 시기
- 무엇으로 시작하고 끝내야 되는가
- 시작하는 곳
- 완화를 위해 깊이 파고들기
- 완화의 차수
- 체스 게임
- 우선순위 결정
- 곰에게서 도망치기
- 표와 리스트로 추적
- 위협 추적
- 가정하기
- 외부 보안 노트
- 시나리오에 특화된 위협 모델링의 구성 요소
- 고객/벤더 신뢰 경계
- 새로운 기술
- API 위협 모델링
- 요약
- 8 방어 전략과 기술
- 위협을 완화하기 위한 전략과 기술
- 인증: 위장에 대응
- 무결성: 무단 변조에 대응
- 부인 방지: 부인에 대응
- 기밀성: 정보 노출에 대응
- 가용성: 서비스 거부에 대응
- 권한 관리: 권한 상승에 대응
- 전략과 기술의 함정
- 패턴을 활용한 위협 해결
- 표준 구축
- CAPEC 위협 대응
- 프라이버시 위협에 대응
- 최소화
- 암호화
- 컴플라이언스와 정책
- 요약
- 9 위협 대응의 트레이드오프
- 전통적 위험 관리 전략
- 위험 회피
- 위험 대응
- 위험 수용
- 위험 전이
- 위험 무시
- 위험 관리를 위한 완화 방법 선택
- 설계 변경
- 표준 완화 기술 적용
- 맞춤형 완화 방법의 설계
- 퍼징은 완화 방법이 아니다
- 위협 특화적인 우선순위 적용 방식
- 단순 접근 방식
- 버그 막대를 이용한 버그 순위 결정
- 비용 예상 접근 방식
- 위험 수용을 통한 완화
- 비즈니스 수용을 통한 완화
- 사용자 수용을 통한 완화
- 완화 전략에서의 군비 경쟁
- 요약
- 10 위협 대응 검증
- 위협 완화 테스팅
- 테스트 프로세스 통합
- 완화 방식을 테스트하는 방법
- 침투 테스팅
- 획득한 코드 확인
- 소프트웨어 모델 작성
- 소프트웨어 모델 사용
- 위협 모델링 품질 보증
- 모델/실제 일치
- 작업과 프로세스 완료
- 버그 체크
- 위협 대응의 프로세스 측면
- 위협 모델링은 테스팅에 권한을 부여; 테스팅은 위협 모델링에 권한을 부여
- 검증/변환
- 가정할 때마다 문서화
- 표와 리스트
- 요약
- 11 위협 모델링 도구
- 일반적으로 유용한 도구
- 화이트보드
- 오피스 프로그램
- 버그 추적 시스템
- 오픈소스 도구
- TRIKE
- SeaMonster
- 권한 상승
- 상용 도구
- ThreatModeler
- Corporate Threat Modeler
- SecurITree
- Little-JIL
- 마이크로소프트 SDL 위협 모델링 도구
- 아직 존재하지 않는 도구
- 요약
- **
- 4부 기술적이고 다루기 힘든 분야의 위협 모델링
- 12 요구 사항 문서
- 왜 문서('Cookbook')인가?
- 요구 사항, 위협, 대응 방안의 상호작용
- 비즈니스 요구 사항
- 경쟁자보다 더 뛰어난 점
- 산업 요구 사항
- 시나리오 기반 요구 사항
- 요구 사항을 위한 프레임으로서의 예방/탐지/대응
- 예방
- 탐지
- 대응
- 요구 사항을 위한 프레임으로서 사람/프로세스/기술
- 사람
- 프로세스
- 기술
- 직접 개발 시 요구 사항과 기술 구입 시 요구 사항
- 컴플라이언스 기반 요구 사항
- 클라우드 보안 연합
- NIST 발표 200
- PCI-DSS
- 개인정보 보호 요구 사항
- 공정한 정보 관행
- 개인정보 보호 설계
- 개인 식별을 위한 일곱 가지 법률
- 개발자를 위한 마이크로소프트 개인정보 보호 표준
- STRIDE 요구 사항
- 인증
- 무결성
- 부인 방지
- 비밀성
- 가용성
- 권한 부여
- 비요구 사항
- 운영상 비요구 사항
- 경고와 지시
- 마이크로소프트의 ‘10가지 불변 법칙’
- 요약
- 13 웹과 클라우드 위협
- 웹 위협
- 웹사이트 위협
- 웹 브라우저와 플러그인 위협
- 클라우드 사용자 위협
- 내부 위협
- 공동 사용자 위협
- 컴플라이언스에 대한 위협
- 법적 위협
- 포렌식 대응에 대한 위협
- 기타 위협
- 클라우드 공급자 위협
- 사용자의 직접적인 위협
- 사용자 행동에 의한 위협
- 모바일 위협
- 요약
- 14 계정과 식별
- 계정 수명주기
- 계정 생성
- 계정 유지
- 계정 제거
- 계정 수명주기 체크리스트
- 인증
- 로그인
- 로그인 실패
- '당신이 가진 것'의 위협
- '당신의 어떤 것'의 위협
- '당신이 알고 있는 것'의 위협
- 인증 체크리스트
- 계정 복구
- 시간과 계정 복구
- 이메일 계정 복구
- 지식 기반 인증
- 사회적 인증
- 공격자 기반 계정 복구 분석
- 다중 채널 인증
- 계정 복구 체크리스트
- 이름, ID, 사회보장번호
- 이름
- 신분증
- 사회보장번호와 기타 국가 신분 번호
- 신분 도용
- 이름, ID, 사회보장번호 체크리스트
- 요약
- 15 인적 요인과 유용성
- 사람 모델
- 사람에 대한 행동주의자 모델 적용
- 사람에 대한 인지 과학 모델
- 사람에 대한 체험 모델
- 소프트웨어 시나리오 모델
- 소프트웨어 모델링
- 소프트웨어 모델링 설계
- 전자 사회공학 공격 모델링
- 위협 도출 기술
- 브레인스토밍
- 위협 모델링의 세레모니 접근법
- 세레모니의 발견 학습 분석
- 4단계 프레임워크에 유용성 통합
- 인적 요인을 해결하기 위한 도구와 기술
- 인적 요인을 금지하는 신화
- 좋은 결정을 위한 디자인 패턴
- 친절한 학습 환경을 위한 디자인 패턴
- 사용자 인터페이스 도구와 기술
- 환경설정
- 명시적 경고
- 관심을 사로잡는 패턴
- 인적 요인 테스트
- 양성과 악성 시나리오
- 생태 유효 기간
- 유용성과 세레모니에 대한 관점
- 요약
- 16 암호화 체계에 대한 위협
- 암호화의 기본 요소
- 기초 기본 요소
- 개인정보보호 기본 요소
- 현대의 암호화 기본 요소
- 대표적인 위협 배우
- 암호 체계 공격
- 암호화를 사용한 구축
- 선택
- 업그레이드 준비
- 키 관리
- 복호화 전의 인증
- 암호화에 관해 기억해야 할 사항
- 전문가에 의해 설계된 암호 체계를 사용하라
- 전문가에 의해 만들어지고 테스트된 암호화 코드를 사용하라
- 암호화는 만병통치약이 아니다
- 모든 것은 세상에 다 알려질 것이라 생각하라
- 계속 키를 관리하라
- 비밀 시스템: 케르크호프스와 그의 원리
- 요약
- 5부 한 단계 더 나아가기
- 17 조직에 위협 모델링 적용
- 위협 모델링을 소개하는 방법
- 개인 기여자 설득
- 경영진 설득
- 누가 무엇을 하는가?
- 위협 모델링과 프로젝트 관리
- 전제 조건
- 산출물
- 각자의 역할과 책임
- 그룹 상호작용
- 위협 모델링 팀의 다양성
- 개발 수명주기 안에서의 위협 모델링
- 개발 프로세스 문제
- 조직 문제
- 조직에 맞게 프로세스 바꾸기
- 위협 모델링에 대한 반대 극복
- 자원에 대한 반대 의견
- 값에 대한 반대 의견
- 계획에 대한 반대 의견
- 요약
- 18 실험적 접근
- 경계선 찾기
- 운영상의 위협 모델
- FlipIT
- 킬 체인
- '넓은 거리' 분류 체계
- 적대적 기계학습
- 비즈니스 위협 모델링
- 위협 모델링 방법에 대한 위협
- 위험한 산출물
- 위협 모델 보고서
- 위험한 접근 방식
- 실험 방법
- 문제 정의
- 측정할 측면 찾기와 측정
- 결과 연구
- 요약
- 19 성공을 위한 설계
- 흐름 이해
- 흐름과 위협 모델링
- 사람들을 방해하는 것
- 인지 부하를 주의하라
- 작성자 맹점을 피하라
- 자산과 공격자
- 참여자들에 대해 알기
- 경계 대상
- 최선은 선의의 적
- 관점 마무리
- 위협 모델은 달라졌다
- 예술성에 관해
- 요약
- 지금부터의 위협 모델
- 지금부터의 위협 모델
- 부록 A 유용한 도구
- 부록 B 위협 트리
- 부록 C 공격자 목록
- 부록 D 권한 상승: 카드
- 부록 E 사례 연구
도서 오류 신고
정오표
정오표
2016-04-22
p205. 24행
네트워크와 관련해서 SSL 터널링, IPSec를 네트워크 변조 이슈를 해결하기 위해 사용할 수 있다.
→
네트워크와 관련하여 네트워크 기밀성 이슈를 해결하기 위해 SSL 터널링, IPSec을 사용할 수 있다.
p597. 12행
signkey(phone)
→
signkey(phone)(nonce_phone)
p597. 6행
정보 노출 위협은 암호화 기능을
→
정보 노출 위협은 암호학적 기능을