SDL Security Bug Bar(샘플)

참고: 이 예제 문서는 일러스트레이션 목적으로만 사용됩니다. 아래에 표시된 내용에는 보안 프로세스를 만들 때 고려해야 할 기본 조건이 간략하게 설명되어 있습니다. 이는 작업 또는 조건에 대한 완전한 목록이 아니며 그렇게 취급해서는 안 됩니다.

이 섹션에서 용어 정의를 참조하세요.

이 페이지에서

Server
클라이언트
용어 정의

서버 DoS 시나리오의 온전한 행렬은 서비스 거부 매트릭스를 참조하세요.

사용자 조작이 악용 프로세스의 일부인 경우 보통 서버 바는 적합하지 않습니다. 위험 취약성이 서버 제품에만 존재하고, 사용자 상호 작용이 필요한 방식으로 악용되며, 서버 손상을 유발하는 경우, 클라이언트 심각도 피벗의 시작 부분에서 제공되는 광범위한 사용자 상호 작용의 NEAT/데이터 정의에 따라 심각도 수준이 ‘위험’에서 ‘중요’ 수준으로 하향될 수 있습니다.

서버

위험

서버 요약: 네트워크 웜 또는 서버를 "소유"한 경우에 피할 수 없는 사례입니다.

  • 권한 상승: 임의의 코드를 실행하거나 또는 부여된 것보다 더 많은 권한을 얻을 수 있는 기능입니다.

    • 원격 익명 사용자

      • 예제:

        • 무단 파일 시스템 액세스: 파일 시스템에 대한 임의 쓰기

        • 임의 코드 실행

        • SQL 삽입(코드 실행 허용)

    • 모든 쓰기 액세스 위반(AV), 악용될 수 있는 읽기 액세스 위반(AV) 또는 원격 익명 호출 가능 코드의 정수 오버플로

중요

서버 요약: 기본값이 아닌 위험 시나리오 또는 위험 시나리오를 방지하는 데 도움이 되는 완화 기능이 있는 사례입니다.

  • 서비스 거부: 적은 양의 데이터를 전송하여 "악용하기 쉽습니다"이거나 그렇지 않으면 신속하게 유도되어야 합니다.

    • 익명

      • 지속적 DoS

        • 예제:

          • 단일 악성 TCP 패킷을 보내면 블루 스크린(BSoD)이 발생합니다.

          • 서비스 오류를 발생시키는 적은 수의 패킷을 보내는 경우

      • 임시 DoS(증폭 포함)

        • 예제:

          • 일정 시간 동안 시스템을 사용할 수 없게 하는 적은 수의 패킷을 보내는 경우

          • 웹 서버(예: IIS)가 1분 이상 다운됨

          • 단일 원격 클라이언트는 세션을 설정하고 열어 두어 서버에서 사용 가능한 모든 리소스(세션, 메모리)를 사용합니다.

    • 인증됨

      • 높은 값의 자산에 대한영구 DoS

        • 예제:

          • 도메인 인증 사용자가 도메인 컨트롤러에서 DoS를 수행할 수 있는 경우와 같이, 서버 역할(인증서 서버, Kerberos 서버, 도메인 컨트롤러)에서 높은 값의 자산에 대한 서비스 실패를 야기하는 적은 수의 패킷을 보내는 경우

  • 권한 상승: 임의의 코드를 실행하거나 또는 의도한 것보다 많은 권한을 얻을 수 있는 기능입니다.

    • 원격 인증된 사용자

    • 로컬 인증 사용자(터미널 서버)

      • 예제:

        • 무단 파일 시스템 액세스: 파일 시스템에 대한 임의 쓰기

        • 임의 코드 실행

    • 관리자가 아닌 원격 인증 사용자 또는 로컬 인증된 사용자가 액세스할 수 있는 코드의 모든 쓰기 AV, 악용 가능한 읽기 AV 또는 정수 오버플로(관리자 시나리오는 정의상 보안 문제는 없지만 안정성 문제는 여전히 존재)

  • 정보 공개(대상 지정)

    • 공격자가 노출되도록 의도하거나 설계하지 않은 시스템 정보를 포함하여 시스템의 어떤 곳에서 나온 정보를 찾고 읽을 수 있는 경우

      • 예제:

        • PII(개인 식별 정보) 공개

          • PII(이메일 주소, 전화 번호, 신용 카드 정보) 공개

          • 공격자는 사용자 동의 없이 또는 변환 방식으로 PII를 수집할 수 있습니다.

  • 스푸핑

    • 엔터티(컴퓨터, 서버, 사용자, 프로세스)는 자신이 선택한 특정 엔터티(사용자 또는 컴퓨터) 가장할 수 있습니다.

      • 예제:

        • 웹 서버는 SSL(클라이언트 인증서 인증)을 부적절하게 사용하여 공격자가 선택한 사용자로 식별될 수 있도록 합니다.

        • 새 프로토콜은 원격 클라이언트 인증을 제공하도록 설계되었지만 악의적인 원격 사용자를 원하는 다른 사용자의 선택으로 볼 수 있는 프로토콜에 결함이 있습니다.

  • 변조

    • 영향을 받는 소프트웨어를 다시 시작한 후 수정이 지속되는 공통 또는 기본 시나리오"높은 값의 자산" 데이터 수정

    • 공통 또는 기본 시나리오에서 사용되는 사용자 또는 시스템 데이터를 영구적으로 또는 지속적으로 수정

      • 예제:

        • 인증된 SQL 삽입과 같은 공통 또는 기본 시나리오에서 애플리케이션 데이터 파일 또는 데이터베이스 수정

        • 공통 또는 기본 시나리오의 프록시 캐시 손상

        • 공통 또는 기본 시나리오에서 사용자 동의 없이 OS 또는 애플리케이션 설정 수정

  • 보안 기능: 제공된 보안 기능을 중단하거나 무시합니다.
    보안 기능의 취약성 등급은 기본값으로 "중요"라 지정되어 있지만 이 등급은 SDL 버그 바에 설명된 다른 고려 사항에 따라 조정될 수 있습니다.

    • 예제:

      • 사용자에게 동의를 구하지 않고 방화벽을 사용하지 않도록 설정 또는 우회

      • 방화벽을 다시 구성하고 다른 프로세스에 대한 연결 허용

보통
  • 서비스 거부

    • 익명

      • 기본/공통 설치를 증폭하지 않는 임시 DoS

        • 예제:

          • 세션을 설정하고 열려있는 상태로 유지하여 서버에서 사용 가능한 모든 리소스(세션, 메모리)를 사용하는 여러 원격 클라이언트

    • 인증됨

      • 지속적 DoS

        • 예제:

          • 로그인한 Exchange 사용자는 특정 메일 메시지를 보내고 Exchange 서버를 중단할 수 있으며, 쓰기 AV, 악용 가능한 읽기 AV 또는 정수 오버플로 때문에 충돌이 발생하지 않습니다.

      • 기본/공통 설치에서 증폭을 사용하는 임시 DoS

        • 예제:

          • 일반 SQL Server 사용자는 일부 제품에서 설치된 저장 프로시저를 실행하고 몇 분 동안 CPU의 100%를 사용합니다.

  • 정보 공개(대상 지정)

    • 공격자가 시스템 정보를 비롯하여 특정 위치에서 시스템에 대한 정보를 쉽게 읽을 수 있도록 하는 경우입니다.

      • 예제:

        • 익명 데이터를 대상으로 공개

        • 파일의 존재 여부를 대상으로 하는 공개

        • 파일 버전 번호를 대상으로 공개

  • 스푸핑

    • 엔터티(컴퓨터, 서버, 사용자, 프로세스)는 구체적으로 선택할 수 없는 다른 임의의 엔터티로 가장할 수 있습니다.

      • 예제:

        • 클라이언트는 서버에 올바르게 인증하지만 서버는 동시에 서버에 연결된 다른 임의의 사용자의 세션을 다시 실행합니다.

  • 변조

    • 특정 시나리오에서 사용자 또는 시스템 데이터를 영구적으로 또는 지속적으로 수정

      • 예제:

        • 특정 시나리오에서 애플리케이션 데이터 파일 또는 데이터베이스 수정

        • 특정 시나리오의 프록시 캐시 손상

        • 특정 시나리오에서 사용자 동의가 없는 OS/애플리케이션 설정 수정

    • OS/애플리케이션/세션을 다시 시작한 후에도 유지되지 않는 공통 또는 기본 시나리오의 데이터를 임시로 수정합니다.

  • 보안 보증:

    • 보안 보증은 보안 기능이거나 고객이 보안 보호를 제공할 것으로 예측하는 다른 제품 기능 중 하나입니다. 통신에는 고객이 기능의 무결성을 사용할 수 있는 메시지(명시적 또는 암시적)가 있으며,이로 인해 보안이 보장됩니다. 보안 게시판은 고객의 의존 또는 신뢰를 약화시키는 보안 보증의 단점을 위해 릴리스됩니다.

      • 예제:

        • 일반 "사용자" 권한으로 실행되는 프로세스는 관리자 암호/자격 증명이 의도적으로 권한 있는 메서드를 통해 제공되지 않는 한 "관리자" 권한을 얻을 수 없습니다.

        • 사용자가 기본 보안 설정을 명시적으로 변경하지 않은 경우 Internet Explorer에서 실행되는 인터넷 기반 JavaScript는 호스트 운영 체제를 컨트롤할 수 없습니다.

낮음
  • 정보 공개(대상 미지정)

    • 런타임 정보

      • 예제:

        • 임의 힙 메모리 유출

  • 변조

    • OS/애플리케이션을 다시 시작한 후에도 유지되지 않는 특정 시나리오의 데이터를 임시로 수정합니다.

광범위한 사용자 작업은 다음과 같이 정의됩니다.

  • "사용자 상호 작용"은 클라이언트 기반 시나리오에서만 발생할 수 있습니다.

  • 메일 미리 보기, 로컬 폴더 보기 또는 파일 공유와 같은 일반적이고 간단한 사용자 동작은 광범위한 사용자 상호작용이 아닙니다.

  • "광범위"에는 특정 웹 사이트(예: URL 입력)로 수동으로 이동하거나 예/아니요 결정을 클릭하는 사용자가 포함됩니다.

  • "광범위하지 않음"에는 전자 메일 링크를 클릭하는 사용자가 포함됩니다.

  • NEAT 한정자(경고에만 적용됨) 시연하자면 UX는 다음과 같습니다.

    • Necessary(필요: 정말 사용자에게 의사 결정을 표시해야 하나요?)

    • Eeplained(설명됨: UX가 이 결정을 내리는 데 필요한 모든 정보를 사용자에게 제공하나요?)

    • Actionable(실행 가능: 무해한 시나리오와 악성 시나리오 모두에서 좋은 결정을 내리는 데 사용할 수 있는 일련의 단계가 있나요?)

    • Tested(테스트됨: 여러 사용자가 경고를 검토하여 경고에 응답하는 방법을 이해하고 있는지 확인하였나요?)

  • 확인: 광범위한 사용자 상호 작용의 효과가 심각도를 낮추는 것은 아니지만, 광범위한 사용자 상호 작용은 버그 바에 나타나는 구절의 특정 상황에서 심각도를 감소시킵니다. 이는 사용자가 상호 작용함으로 인해 빠르게 확산하는 워머블(wormable) 공격을 고객이 차별화하는 데 도움을 주고 공격을 늦추기 위한 의도입니다. 사용자 상호 작용 때문에 이 버그 바를 사용하여 권한 상승을 ‘중요’ 수준 아래로 낮출 수 없습니다.

클라이언트

위험

클라이언트 요약:

  • Network Worms 또는 피할 수 없는 일반적인 검색/사용 시나리오에서는 경고 또는 프롬프트 없이 클라이언트를 "소유"하게 됩니다.

  • 권한 상승(원격): 임의의 코드를 실행하거나 또는 의도한 것 보다 많은 권한을 얻는 기능

    • 예제:

      • 권한 없는 파일 시스템 액세스: 파일 시스템에 쓰기

      • 광범위한 사용자 작업 없이 임의의 코드 실행

      • 원격으로 호출 가능한 코드의 모든 쓰기 AV, 악용 가능한 읽기 AV, 스택 오버플로 또는 정수 오버플로(광범위한 사용자 작업 제외)

중요

클라이언트 요약:

  • 경고나 프롬프트가 있는 클라이언트를 ‘소유’한 경우 또는 프롬프트 없이 광범위하게 작업하는 경우의 일반적인 탐색/사용 시나리오. 이는 프롬프트의 품질/유용성 및 사용자가 프롬프트를 클릭할 가능성을 판별하지 않지만 일부 형태의 프롬프트는 존재합니다.

  • 권한 상승(원격)

    • 광범위한 사용자 작업으로 임의 코드 실행

      • 모든 쓰기 AV, 악용 가능한 읽기 AV 또는 원격 호출 가능 코드(광범위한 사용자 작업 포함) 내 정수 오버플로

  • 권한 상승(로컬)

    • 로컬 낮은 권한 사용자는 다른 사용자, 관리자 또는 로컬 시스템으로 자신의 권한을 상승할 수 있습니다.

      • 모든 쓰기 AV, 악용 가능한 읽기 AV 또는 로컬 호출 가능 코드의 정수 오버플로

  • 정보 공개(대상 지정)

    • 공격자가 의도하지 않거나 노출되도록 설계되지 않은 시스템 정보를 비롯하여 시스템 정보를 찾고 읽을 수 있는 경우.

    • 예제:

      • 권한 없는 파일 시스템 액세스: 파일 시스템에서 읽기

      • PII 공개

        • PII(이메일 주소, 전화 번호) 공개

      • 전화 홈 시나리오

  • 서비스 거부

    • 시스템 손상 DoS에서 시스템 및/또는 구성 요소를 다시 설치해야 합니다.

      • 예제:

        • 웹 페이지를 방문하면 레지스트리가 손상되어 컴퓨터를 부팅할 수 없게 됩니다.

    • DoS 구동

      • 조건:

        • 인증되지 않은 시스템 DoS

        • 기본 노출

        • 기본 보안 기능 또는 경계 완화 없음(방화벽)

        • 사용자 상호 작용 없음

        • 감사 및 처벌 흔적 없음

        • 예제:

          • 휴대폰으로 구동되는 Bluetooth 시스템 DoS 또는 SMS

  • 스푸핑

    • 사용자가 기본/공통 시나리오에서 유효한 신뢰 결정을 내리는 데 사용해야 하는 UI와는 다르지만 시각적으로 동일한 UI를 제공하는 공격자용 기능입니다. 트러스트 결정은 특정 엔터티(시스템 또는 특정 로컬 또는 원격 원본)에서 일부 정보를 제공하는 경우 사용자가 작업을 수행하는 모든 시간에 그것을 신뢰하면서 작업하는 것으로 정의합니다.

      • 예제:

        • 브라우저가 실제로 기본/공통 시나리오에서 표시하는 URL과 다른 사이트의 URL을 브라우저의 주소 표시줄에 표시하는 경우

        • 브라우저의 주소 표시줄 위에 주소 표시줄과 동일하게 보이는 창을 표시하지만 기본/공통 시나리오에서 위조된 데이터를 표시하는 경우

        • 실제로 로드되는 파일이 아니라 "이 프로그램을 실행하시겠습니까?" 대화 상자의 다른 파일 이름을 기본/공통 시나리오에 표시하는 경우

        • "가짜" 로그인 프롬프트를 표시하여 사용자 또는 계정 자격 증명을 수집하는 경우

  • 변조

    • OS/애플리케이션을 다시 시작한 후에도 유지되는 공통 또는 기본 시나리오에서 신뢰 결정을 내리는 데 사용되는 모든 사용자 데이터 또는 데이터를 영구적으로 수정합니다.

      • 예제:

        • 웹 브라우저 캐시 손상

        • 사용자 동의 없이 중요한 OS/애플리케이션 설정 수정

        • 사용자 데이터 수정

  • 보안 기능: 제공된 보안 기능을 중단하거나 바이패스합니다.

    • 예제:

      • 사용자에게 알리거나 동의를 받고 방화벽 사용 안 함 또는 바이패스

      • 방화벽을 다시 구성하고 다른 프로세스에 대한 연결 허용

      • 약한 암호화 사용 또는 일반 텍스트로 저장된 키 유지

      • AccessCheck 바이패스

      • 예를 들어 드라이브의 일부를 암호화하지 않는 Bitlocker 바이패스

      • Syskey 바이패스는 암호 없이 syskey를 디코딩하는 방법입니다.

보통
  • 서비스 거부

    • 영구 DoS를 사용하려면 콜드 부팅이 필요하거나 블루 스크린/버그 확인이 발생합니다.

      • 예제:

        • Word 문서를 열면 컴퓨터의 블루 스크린/버그 확인이 발생합니다.

  • 정보 공개(대상 지정)

    • 공격자가 노출되도록 의도하거나 설계하지 않은 시스템 정보를 비롯하여 알려진 위치에서시스템에 대한 정보를 읽을 수 있는 경우

      • 예제:

        • 파일의 대상 존재 여부

        • 대상 파일 버전 번호

  • 스푸핑

    • 공격자가 사용자에게 신뢰에 익숙한 UI와 다르지만 시각적으로는 동일한 UI를 특정 시나리오에서 표시하는 능력입니다. "신뢰에 익숙한"은 사용자가 일반적으로 운영 체제 또는 애플리케이션과의 정상적인 상호 작용을 기반으로 잘 알고 있지만 일반적으로 "신뢰 결정"으로 생각하지 않는 것으로 정의됩니다.

      • 예제:

        • 웹 브라우저 캐시 손상

        • 사용자 동의 없이 중요한 OS/애플리케이션 설정 수정

        • 사용자 데이터 수정

낮음
  • 서비스 거부

    • 임시 DoS의 경우 애플리케이션을 다시 시작해야 합니다.

      • 예제:

        • HTML 문서를 열면 Internet Explorer의 작동이 중단됩니다.

  • 스푸핑

    • 공격자가 더 큰 공격 시나리오의 단일 부분인 UI와는 다르지만 시각적으로 동일한 UI를 제공할 수 있는 기능입니다.

      • 예제:

        • 사용자가 "악의적인" 웹 사이트로 이동되고 스푸핑 대화 상자에서 단추를 클릭하면 다른 브라우저 버그에 따라 취약해지게 됩니다.

  • 변조

    • OS/애플리케이션을 다시 시작한 후에도 유지되지 않는 모든 데이터를 임시로 수정합니다.

    • 정보 공개(대상 미지정)

      • 예제:

        • 임의 힙 메모리 유출

용어 정의

인증
네트워크 인증을 포함하는 모든 공격입니다. 이는 공격자를 식별할 수 있도록 일부 형식의 로깅이 발생할 수 있어야 함을 의미합니다.

익명
완료하기 위해 인증하지 않아도 되는 모든 공격자입니다.

client
단일 컴퓨터에서 로컬로 실행되는 소프트웨어 또는 네트워크를 통해 서버에서 제공되는 공유 리소스에 액세스하는 소프트웨어입니다.

기본/공통
독창적으로 활성화되거나 사용자의 10% 이상에 도달하는 모든 기능

scenario
사용자의 10% 미만에 도달할 수 있도록 특수한 사용자 지정 또는 사용 사례가 필요한 모든 기능입니다.

server
다른 컴퓨터에서 실행되는 클라이언트 프로세스의 요청을 기다리고 충족하는 소프트웨어를 실행하도록 구성된 컴퓨터입니다.

심각
손상 가능성이 가장 높은 것으로 평가되는 보안 취약성입니다.

중요
심각한 손상 가능성이 있지만 위험보다 적은 것으로 평가되는 보안 취약성입니다.

보통
적당히 손상될 가능성이 있지만 중요보다 적은 것으로 평가되는 보안 취약성입니다.

낮음
손상 가능성이 낮은 것으로 평가되는 보안 취약성입니다.

대상 정보 공개
의도적으로 원하는 정보를 선택(대상)할 수 있습니다.

임시 DoS
다음 조건이 충족될 경우 임시 DoS라고 할 수 입니다.

  • 공격으로 인해 대상이 정상적인 작업을 수행할 수 없습니다.

  • 공격에 대한 응답은 공격 크기와 거의 같습니다.

  • 대상은 공격이 완료된 직후에 정상적인 기능 수준으로 돌아갑니다. 각 제품에 대해 "잠시"의 정의를 정확하게 평가해야 합니다.

예를 들어 공격자가 지속적으로 네트워크를 통해 패킷 스트림을 전송하는 동안 서버는 응답하지 않으며 패킷 스트림이 중지된 후에 서버가 정상 상태로 돌아갑니다.

임시 DoS(증폭 포함)

증폭이 있는 임시 DoS는 다음 조건을 충족하는 상황입니다.

  • 공격으로 인해 대상이 정상적인 작업을 수행할 수 없습니다.

  • 공격에 대한 응답이 공격 크기 보다 큰 규모입니다.

  • 대상은 공격이 완료된 후 일반 기능 수준으로 돌아가지만 약간의 시간이 걸립니다(몇 분이 소요 될 수 있음).

예를 들어 악의적인 10 바이트 패킷을 보내고 네트워크에서 2048k 응답을 발생시킬 수 있다면 공격 증폭을 통해 대역폭에 DoS 공격을 하는 것입니다.

영구 DoS

영구적 DoS는 관리자가 시스템 전체 또는 일부를 시작, 다시 시작 또는 다시 설치 해야 하는 경우입니다. 시스템을 자동으로 다시 시작하는 모든 취약점은 영구적 DoS이기도 합니다.

서비스 거부(서버) 매트릭스

인증 대 익명 공격 기본/공통 및 시나리오 임시 DoS 대 영구 평가
인증됨 기본/공통 영구 보통
인증됨 기본/공통 임시 DoS(증폭 포함) 보통
인증됨 기본/공통 임시 DoS 낮음
인증됨 시나리오 영구 보통
인증됨 시나리오 임시 DoS(증폭 포함) 낮음
인증됨 시나리오 임시 DoS 낮음
익명 기본/공통 영구 중요
익명 기본/공통 임시 DoS(증폭 포함) 중요
익명 기본/공통 임시 DoS 보통
익명 시나리오 영구 중요
익명 시나리오 임시 DoS(증폭 포함) 중요
익명 시나리오 임시 DoS 낮음

내용 고지 사항

이 설명서는 Microsoft의 SDL 사례에 대한 완전한 참조가 아닙니다. 제품 팀이 재량에 따라 추가 보증 작업을 수행할 수 있습니다(반드시 문서화되지는 않음). 따라서 이 예제는 Microsoft가 모든 제품을 보호하기 위해 따르는 정확한 프로세스로 간주해서는 안 됩니다.

이 설명서는 "있는 그대로" 제공됩니다. URL 및 기타 인터넷 웹 사이트 참조를 포함하여 이 설명서에 제공된 정보와 견해는 예고 없이 변경될 수 있습니다. 해당 사용으로 인해 발생하는 모든 위험은 귀하의 책임입니다.

이 설명서는 Microsoft 제품의 지적 재산권에 대한 법적 권리를 제공하지 않습니다. 귀하는 참조를 위해 내부적으로 이 문서를 복사하고 사용할 수 있습니다.

© 2018 Microsoft Corporation. All rights reserved.

Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported에 따라 라이선스가 부여됨