공격 패턴

Attack patterns

컴퓨터 과학에서 공격 패턴컴퓨터 보안과 관련된 코드의 버그 또는 오류를 찾기 위한 엄격한 방법의 그룹입니다.

공격 패턴은 테스트 목적으로 자주 사용되며 잠재적인 취약성을 방지하는 데 매우 중요합니다.공격 패턴 자체는 소프트웨어 애플리케이션의 보안 강화를 위해 고려해야 할 영역을 강조하기 위해 사용할 수 있습니다.또한 물리적으로 또는 참조적으로 공격을 방지하기 위한 공통 솔루션 패턴을 제공합니다.이러한 관행을 방어적 코딩 패턴이라고 할 수 있습니다.

공격 패턴은 시스템의 보안에 대한 공격을 시뮬레이션하기 위해 적용할 수 있는 일련의 반복 가능한 단계를 정의합니다.

분류

공격 패턴을 분류하는 방법은 여러 가지가 있습니다.한 가지 방법은 아키텍처, 물리 및 외부와 같은 일반적인 범주로 그룹화하는 것입니다(자세한 내용은 아래 참조).공격 패턴을 분류하는 다른 방법은 특정 기술 또는 기술 유형(데이터베이스 공격 패턴, 웹 애플리케이션 공격 패턴, 네트워크 공격 패턴 등) 또는 SQL Server 공격 패턴, Oracle 공격 패턴, .Net 공격 패턴, Java 공격 패턴 등)별로 분류하는 것입니다.

일반 카테고리 사용

아키텍처 공격 패턴은 시스템 아키텍처 설계의 결함을 공격하기 위해 사용됩니다.프로토콜, 인증 전략, 시스템 모듈화의 약점 등이 이에 해당합니다.이것들은 실제 비트 조작 공격보다 논리 베이스의 공격입니다.

물리적인 공격 패턴은 코드 자체를 대상으로 합니다.예를 들어 SQL 주입 공격, 버퍼 오버플로, 레이스 조건, 뉴스에서 널리 알려진 일반적인 형태의 공격 이 있습니다.

외부 공격 패턴에는 트로이 목마 공격, 바이러스 의 공격이 포함됩니다.이것들은 공격 대상 프로그램과는 비교적 독립적으로 동작하기 때문에 일반적으로 소프트웨어 설계 접근법으로는 해결할 수 없습니다.그러나 소프트웨어 일부의 취약성으로 인해 취약한 코드를 실행하는 시스템에서 이러한 공격이 성공할 수 있습니다.예를 들어 Slammer 웜이 스스로 [1]전파되도록 한 Microsoft SQL Server의 취약한 버전이 있습니다.이러한 공격에 대한 접근법은 일반적으로 취약한 코드를 수정하는 것입니다.

구조.

공격 패턴은 설계 패턴의 구조와 매우 유사합니다.이 형식을 사용하면 공격 패턴의 개발을 표준화하는 데 도움이 되며 각 패턴에 대한 특정 정보가 항상 동일한 방법으로 문서화되도록 할 수 있습니다.

공격 패턴을 기록하는 권장 구조는 다음과 같습니다.

  • 패턴명

해당 패턴을 나타내기 위해 일반적으로 사용되는 패턴에 부여된 라벨입니다.

  • 유형 및 하위 유형

패턴 유형 및 연관된 하위 유형은 패턴을 분류하는 데 도움이 됩니다.이를 통해 사용자는 보안 작업에서 처리해야 하는 패턴 그룹을 신속하게 찾아 식별할 수 있습니다.

각 패턴에는 공격 패턴의 카테고리를 식별하는 타입과 0 이상의 서브타입이 있습니다.일반적인 유형에는 주입 공격, 서비스 거부 공격, 암호 분석 공격 등이 있습니다.예를 들어 DoS(Denial Of Service)의 일반적인 서브타입의 예로는 DOS(Resource Stargation), DOS-System Crash(DOS 시스템 크래시), DOS-Policy Overse(DOS 정책 남용) 등이 있습니다.

이 필드의 또 다른 중요한 용도는 진정한 패턴이 불필요하게 반복되지 않도록 하는 것입니다.많은 경우 새로운 공격과 새로운 공격을 혼동하기 쉽습니다.새로운 부정 이용은 항상 같은 공격 패턴에 대해 생성됩니다.Buffer Overflow Attack pattern 。Buffer Overflow 취약성을 이용하는 많은 알려진 공격 및 바이러스가 있습니다.하지만 모두 같은 패턴을 따릅니다.따라서 유형 및 하위 유형 분류 메커니즘은 패턴을 분류하는 방법을 제공합니다.작성 중인 패턴에 고유한 유형 및 하위 유형이 없는 경우 기존 패턴에 대한 새로운 악용일 수 있습니다.

이 섹션은 공격을 자동화할 수 있는지 여부를 나타내기 위해서도 사용됩니다.공격을 자동화할 수 있는 경우는, 다음에 설명하는 「공격 코드의 샘플」섹션에 샘플 정보를 제공하는 것을 추천합니다.

  • 일명 일명

특정 공격은 여러 다른 이름으로 알 수 있습니다.이 필드는 다른 이름을 나열하는 데 사용됩니다.

  • 묘사

이것은 공격 자체와 공격의 발생원에 대한 설명입니다.기본적으로 다른 필드에 쉽게 들어가지 않는 정보를 기록하는 데 사용할 수 있는 자유 형식 필드입니다.

  • 공격자의 의도

이 필드는 공격자의 의도된 결과를 나타냅니다.이것은 공격자 자체의 주요 타깃과 목표를 나타냅니다.예를 들어 DOS의 공격자 의도 – 대역폭 부족 공격은 대상 웹 사이트를 합법적인 트래픽에 연결할 수 없도록 만드는 것입니다.

  • 동기

이 필드에는 공격자가 이 공격을 시도한 이유가 기록됩니다.조직에 금전적 손해를 입히기 위해 시스템을 크래시하거나 공격자가 금전적 이익을 얻기 위해 중요한 데이터를 도용하는 경우가 있습니다.

이 필드는 공격자가 공격의 물리적 결과가 아닌 [Attacker Intent]필드에 나열된 의도를 달성하려는 이유를 설명하는 점에서 [Attacker Intent]필드와 약간 다릅니다.

  • 부정 이용 가능한 취약성

이 필드는 애초에 공격 기회를 만드는 특정 유형의 취약성을 나타냅니다.Integer Overflow 공격의 예로는 대상 변수가 착신 값을 관리할 수 있는지 확인하기 위해 정수 기반 입력 필드가 착신 데이터 값의 크기를 확인하지 않는 경우가 있습니다.이는 공격을 수행하기 위해 관련 부정 이용에 이용되는 취약성입니다.

  • 참가자

참가자는 이 공격이 성공하기 위해 필요한1개 이상의 엔티티입니다여기에는 공격 대상 시스템과 공격 대상자의 도구 또는 시스템 구성 요소가 포함됩니다.엔티티의 이름에는 공격에서의 그들의 역할과 그들이 서로 어떻게 상호작용하는지에 대한 간단한 설명이 첨부되어야 한다.

  • 프로세스 다이어그램

이들은 공격이 실행되는 방법을 시각적으로 설명하기 위한 공격의 1개 이상의 다이어그램입니다.이 다이어그램은 적절한 형태를 취할 수 있지만 데이터 흐름과 관련된 컴포넌트를 보여주는 시스템 또는 클래스 다이어그램과 유사할 것을 권장합니다.

  • 의존관계 및 조건

모든 공격에는 동작하는 컨텍스트와 공격을 가능하게 하는 조건이 필요합니다.이 항에서는 공격이 성공하기 위해 필요한 조건과 다른 시스템 또는 상황에 대해 설명합니다.예를 들어 공격자가 Integer Overflow 공격을 실행하려면 취약한 응용 프로그램에 액세스할 수 있어야 합니다.그것은 대부분의 공격에서 흔할 것이다.다만, 리모트 RPC 서버상에서 타겟이 실행되고 있을 때만 취약성이 드러나는 경우는, 여기서도 주의할 필요가 있습니다.

  • 공격 코드 예시

공격 코드를 시연할 수 있는 경우 이 섹션에서는 데모 코드를 저장할 위치를 제공합니다.Denial of Service 공격 등 특정 코드를 사용할 수 없는 경우가 있습니다.단, Overflow 및 Cross Site Scripting 유형의 공격에서는 샘플코드가 매우 편리합니다.

  • 기존 악용

부정 이용은 자동화 또는 수동으로 할 수 있습니다.자동화된 부정 이용은 바이러스, 웜 및 해킹 도구로 자주 볼 수 있습니다.공격에 대해 알려진 기존 부정 이용 사항이 있는 경우 이 섹션을 사용하여 해당 부정 이용에 대한 참조를 나열해야 합니다.이러한 레퍼런스는, 사내의 놀리지 베이스등의 내부나, 다양한 CERT 나 바이러스 데이타베이스등의 외부입니다.

악용은 취약성과 혼동해서는 안 됩니다.공격이란 취약성을 이용하는 자동화된 공격 또는 수동 공격입니다.예를 들어 특정 제품에서 발견된 취약성의 목록이 아닙니다.

  • 후속 공격

후속 공격은 이 특정 공격 패턴에 의해 활성화될 수 있는 기타 모든 공격입니다.예를 들어 버퍼 오버플로 공격 패턴은 보통 권한 상승 공격, 서브버전 공격 또는 트로이 목마/백도어 공격에 대한 설정이 뒤따릅니다.이 필드는 공격을 조사하고 실행 또는 설정되었을 가능성이 있는 다른 공격을 특정할 때 특히 유용합니다.

  • 경감 유형

경감 유형은 공격 패턴을 방지하기 위해 사용되는 경감 전략의 기본 유형입니다.이것은 일반적으로 보안 패턴과 방어 코드 패턴이라고 불립니다.경감 유형은 다양한 공격 패턴을 분류하는 수단으로도 사용할 수 있습니다.이 방법으로 공격 패턴을 분류함으로써 라이브러리를 개발하여 특정 경감 유형을 구현하고 이를 사용하여 공격 패턴의 전체 클래스를 완화할 수 있습니다.그런 다음 이러한 라이브러리를 다양한 응용 프로그램에서 사용하여 재사용할 수 있으므로 특정 유형의 공격에 대해 일관되고 신뢰할 수 있는 커버리지를 보장할 수 있습니다.

  • 권장되는 경감

이것은 공격 패턴이기 때문에 공격에 대한 권장 완화를 여기에 간략히 나열할 수 있습니다.이를 통해 사용자는 이 클래스의 공격에 대해 보다 철저한 경감 패턴을 얻을 수 있습니다.

  • 관련 패턴

이 섹션에서는 Related Patterns, Mitigation Patterns, Security Patterns, Architecture Patterns 등의 서브섹션에 대해 설명합니다.이들은 공격을 지원, 관련 또는 완화할 수 있는 패턴에 대한 참조로, 관련 패턴의 리스트에는 그 점에 주의해 주십시오.

Integer Overflow 공격 패턴과 관련된 패턴의 예를 다음에 나타냅니다.

경감 패턴– 필터링된 입력 패턴, 자기 방어 속성 패턴

관련 패턴: 버퍼 오버플로 패턴

  • 관련 경고, 목록 및 자료

섹션에서는 일반 취약성노출 목록의 목록, CERT, SANS 및 관련 공급업체 경고와 같은 관련 경고 목록 및 게시물에 대한 모든 참조를 나열합니다.이러한 목록은 가능한 한 최신 정보를 참조할 수 있도록 온라인 경보 및 목록에 하이퍼링크해야 합니다.

다양한 벤더 알림 사이트

추가 정보

  • 알렉산더, 크리스토퍼, 이시카와, 사라, 실버스타인, 머레이.패턴 언어뉴욕, 뉴욕: 옥스퍼드 대학 출판부, 1977년
  • 감마, E.; 헬름, R.; 존슨, R.; & Vlissides, J. 설계 패턴: 재사용 가능한 객체 지향 소프트웨어의 요소 ISBN0-201-6361-2, 애디슨-웨슬리, 1995
  • Thompson, Herbert; Chase, Scott, 소프트웨어 취약성 가이드 ISBN 1-5845-358-0, Charles River Media, 2005
  • Gegick, Michael & Williams, Laurie."소프트웨어 집약적인 시스템 설계의 보안 취약성에 대한 공격 패턴 매칭"ACM SIGSOFT 소프트웨어 엔지니어링 노트, 2005년 시큐어 시스템용 소프트웨어 엔지니어링 워크숍의 진행 - 신뢰성 높은 애플리케이션 구축 SESS '05, Volume 30, Issue 4, ACM Press, 2005
  • 하워드, M.; & 르블랑, D.시큐어 코드 ISBN 0-7356-1722-8, Microsoft Press, 2002.
  • 무어, A. P.; 엘리슨, R. J.; & 링거, R. C.정보보안과 생존위한 공격 모델링, 2001년 카네기 멜론 대학교 소프트웨어 엔지니어링 연구소
  • 호글런드, 그렉 & 맥그로, 게리소프트웨어 이용: 코드 해제 방법 ISBN 0-201-78695-8, Addison-Wesley, 2004
  • 맥그로, 게리소프트웨어 보안: ISBN 0-321-35670-5, Adison-Wesley, 2006년
  • 비에가, 존 & 맥그로, 게리안전한 소프트웨어 구축: 보안 문제를 피하는 방법 ISBN 0-201-72152-X, Adison-Wesley, 2001
  • 슈마허, 마르쿠스, 페르난데스-부글리오니, 에두아르도, 하이베르송, 듀안, 부쉬만, 프랭크, 소믈라드, 피터 보안 패턴 ISBN 0-470-8584-2, John Wiley & Sons, 2006
  • 코이졸, 잭, 리치필드, D.; 아이텔, D.; 앤리, C.; 에렌, S.; 메하타, 노스캐롤라이나, & 라일리H. Shellcoder's Handbook: 보안 취약점 검출이용 ISBN 0-7645-4468-3, Wiley, 2004
  • 슈나이어, 브루스Attack Tree: 보안 위협 모델링 Dobb's Journal, 1999년 12월

레퍼런스

  • fuzdb: [4]