요약
Intel, AMD, ARM을 포함하여 많은 최신 프로세서와 운영 체제에 영향을 주는 “예측 실행 부채널 공격”이라는 공개적으로 보고된 취약성 종류가 확인되었습니다.
참고 이 문제는 Android, Chrome, iOS, MacOS 같은 다른 시스템에도 영향을 미칩니다. 따라서 해당하는 공급업체로부터 지침을 받는 것이 좋습니다.Microsoft에서는 이러한 취약성을 완화할 수 있도록 다수의 업데이트를 출시했으며 클라우드 서비스 보호를 위한 조치도 취했습니다. 자세한 내용은 다음 절을 참조하세요.
Microsoft는 이러한 취약성이 현재 고객을 공격하는 데 사용되었음을 나타내는 정보는 접수하지 못했습니다. Microsoft는 고객을 보호하기 위해 칩 제조업체, 하드웨어 OEM, 응용 프로그램 공급업체 등 업계 파트너와 계속 긴밀히 협력하고 있습니다. 제공되는 모든 보호 기능을 활용하려면 하드웨어나 펌웨어 및 소프트웨어를 업데이트해야 합니다. 여기에는 장치 OEM의 마이크로코드가 포함되며, 일부의 경우에는 바이러스 백신 소프트웨어 업데이트도 포함됩니다.Microsoft 보안 공지 ADV180002를 참조하세요. 이 취약성 종류를 완화하기 위한 일반적인 지침은 예측 실행 부채널 취약성 완화를 위한 일반 지침을 참조하세요.
이 취약성에 대한 자세한 내용은Microsoft는 2019년 5월에 ADV190013 - 마이크로아키텍처 데이터 샘플링 취약성 완화를 위한 Microsoft 지침을 공개했습니다. SQL Server는 ADV190013에 설명된 문제와 관련된 보안 패치가 없습니다. ADV190013에 영향을 받는 환경에 대한 지침은 본 문서의 권장 사항에서 확인할 수 있습니다. 이 보안 공지는 Intel 프로세서에만 적용됩니다.
업데이트를 구하고 설치하는 방법
이 업데이트는 WSUS(Windows Server Update Services) 또는 Microsoft 업데이트 카탈로그 웹 사이트를 통해서도 제공됩니다. 참고: 이 업데이트는 Windows 업데이트에서 자동으로 다운로드 및 설치되지는 않습니다.
사용 가능한 SQL 패치
게시 시점을 기준으로, 다음과 같은 업데이트된 SQL Server 빌드를 다운로드할 수 있습니다.
서비스 릴리스
4057122 SQL Server 2017 GDR용 보안 업데이트에 대한 설명: 2018년 1월 3일 4058562 SQL Server 2017 RTM CU3용 보안 업데이트 설명: 2018년 1월 3일 4058561 SQL Server 2016 SP1 CU7용 보안 업데이트에 대한 설명: 2018년 1월 3일 4057118 SQL Server 2016 GDR SP1용 보안 업데이트에 대한 설명: 2018년 1월 3일 4058559 SQL Server 2016 CU용 보안 업데이트 설명: 2018년 1월 6일 4058560 SQL Server 2016 GDR용 보안 업데이트에 대한 설명: 2018년 1월 6일 4057117 SQL Server 2014 SP2 CU10용 보안 업데이트에 대한 설명: 2018년 1월 16일 4057120 SQL Server 2014 SP2 GDR용 보안 업데이트에 대한 설명: 2018년 1월 16일 4057116 SQL Server 2012 SP4 GDR용 보안 업데이트에 대한 설명: 2018년 1월 12일 4057115 SQL Server 2012 SP3 GDR용 보안 업데이트에 대한 설명: 2018년 1월 4057121 SQL Server 2012 SP3 CU용 보안 업데이트에 대한 설명: 2018년 1월 4057114 SQL Server 2008 SP4 GDR용 보안 업데이트에 대한 설명: 2018년 1월 6일 4057113 SQL Server 2008 R2 SP3 GDR용 보안 업데이트에 대한 설명: 2018년 1월 6일
이 문서는 업데이트된 빌드를 추가로 사용할 수 있게 되는 대로 업데이트될 예정입니다.
참고
-
Microsoft는 SQL Server를 대상으로 “스펙터(Spectre)” 및 “멜트다운(Meltdown)” 예측 실행 부채널 취약성을 완화하기 위해 필요한 업데이트를 모두 출시했습니다 “사용 가능한 SQL 패치” 절에 나와 있지 않은 “스펙터” 및 “멜트다운” 예측 실행 부채널 취약성에 추가로 노출된 것으로 보고된 사실은 현재까지 없습니다.
-
모든 후속 SQL Server 2014, SQL Server 2016, SQL Server 2017 서비스 팩 및 누적 업데이트에 픽스가 포함될 예정입니다. 예를 들어 SQL Server 2016 SP2에는 스펙터(Spectre) 및 멜트다운(Meltdown) 픽스가 이미 포함되어 있습니다.
-
Windows 빌드의 경우 사용 가능한 Windows 빌드에 대한 최신 정보는 다음 지침을 참조하세요.
스펙터/멜트다운 부채널 취약성에 대한 Windows Server 지침
마이크로아키텍처 데이터 샘플링 취약성에 대한 Windows Server 지침
Linux 빌드의 경우 Linux 공급업체에 문의하여 특정 Linux 배포판에 해당하는 업데이트된 최신 빌드를 확인하세요.
-
이러한 SQL Server 업데이트는 스펙터 및 멜트다운 취약성을 최대한 신속하게 해결하기 위해 처음에 Microsoft 다운로드 센터에 기본 제공 모델로 공개되었습니다. 이러한 업데이트는 3월에 Microsoft 업데이트를 통해 제공될 예정이지만 영향을 받는 고객은 Microsoft 업데이트를 통해 제공될 때까지 기다리지 말고 업데이트를 바로 설치하는 것이 좋습니다.
영향을 받는 지원되는 SQL Server 버전
모든 고객은 주기적인 패치 적용 주기의 일부로, 아래 나와 있는 SQL Server 업데이트를 설치하는 것이 좋습니다. 확장 포인트가 차단되어 있고 동일한 서버에서 실행되는 모든 타사 코드가 승인되었으며 신뢰할 수 있는 안전한 환경에서 SQL Server를 실행하는 고객은 이 문제의 영향을 받지 않습니다.
x86 및 x64 프로세서 시스템에서 실행되는 다음 버전의 SQL Server에는 적용 가능한 업데이트가 마련되어 있습니다.
-
SQL Server 2008
-
SQL Server 2008 R2
-
SQL Server 2012
-
SQL Server 2014
-
SQL Server 2016
-
SQL Server 2017
IA64(Microsoft SQL Server 2008)에 대한 영향은 확인되지 않았습니다. Microsoft Analytic Platform Service(APS)는 Microsoft SQL Server 2014 또는 Microsoft SQL Server 2016을 기반으로 하지만 구체적인 영향을 받지는 않습니다. APS와 관련된 몇 가지 일반 지침은 이 문서 뒷부분에 나와 있습니다.
권장 사항
다음 표에는 SQL Server가 실행되는 환경과 사용 중인 기능에 따라 고객이 해야 할 일이 나와 있습니다. 픽스를 프로덕션 환경에 배포하기 전에 일반적인 절차에 따라 배포하여 새 이진 파일을 테스트하는 것이 좋습니다.
시나리오 번호 |
시나리오 설명 |
우선 순위 권장 사항 |
1 |
Azure SQL Database 및 Data Warehouse |
조치를 취할 필요가 없습니다(세부 정보는 여기 참조). |
2 |
SQL Server가 물리적 컴퓨터나 가상 머신에서 실행되고 있음 그리고 다음 중 해당되는 조건이 없음
|
CVE 2017-5753으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. 마이크로아키텍처 데이터 샘플링 취약성(CVE-2018-12126, CVE-2018-12130, CVE-2018-12127, CVE-2018-11091)으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. KVAS(커널 가상 주소 섀도잉) 및 간접 분기 예측 완화 하드웨어 지원(IBP)은 사용하도록 설정하지 않아도 됩니다(아래 내용 참조). SQL Server 패치는 다음에 예정된 업데이트 기간에 정상적인 패치 적용 정책의 일부로 설치해야 합니다.이러한 호스트에서도 하이퍼 스레딩을 계속 사용할 수 있습니다. |
3 |
SQL Server가 물리적 컴퓨터나 가상 머신에서 실행되고 있음 그리고 악의적일 수 있는 코드를 실행하는 다른 응용 프로그램이 같은 컴퓨터에서 함께 호스트됨 그리고/또는 SQL Server 확장성 인터페이스에서 신뢰할 수 없는 코드를 사용 중임(코드 목록은 이 문서의 뒷부분 참조)
|
CVE 2017-5753으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. 마이크로아키텍처 데이터 샘플링 취약성(CVE-2018-12126, CVE-2018-12130, CVE-2018-12127, CVE-2018-11091)으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. SQL Server 패치를 적용합니다(아래 설명 참조). 그러면 CVE 2017-5753으로부터 컴퓨터를 보호할 수 있습니다. KVAS(커널 가상 주소 섀도잉)를 사용하도록 설정하는 것이 좋습니다(아래 설명 참조). 그러면 CVE 2017-5754로부터 컴퓨터를 보호할 수 있습니다. 간접 분기 예측 완화 하드웨어 지원(IBP)을 사용하도록 설정하는 것이 좋습니다(아래 설명 참조). 그러면 CVE 2017-5715로부터 컴퓨터를 보호할 수 있습니다. Intel 프로세서를 사용 중인 경우 호스트에서 하이퍼 스레딩을 사용하지 않도록 설정하는 것이 좋습니다. |
4 |
SQL Server가 물리적 컴퓨터에서 실행되고 있음 그리고 악의적일 수 있는 코드를 실행하는 다른 응용 프로그램이 같은 컴퓨터에서 함께 호스트되지 않음 그리고 SQL Server 확장성 인터페이스가 신뢰할 수 있는 코드를 실행하는 데 사용되고 있음. 예:
예외:
|
CVE 2017-5753으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. 마이크로아키텍처 데이터 샘플링 취약성(CVE-2018-12126, CVE-2018-12130, CVE-2018-12127, CVE-2018-11091)으로부터 보호받으려면 모든 OS 업데이트를 설치하는 것이 좋습니다. KVAS(커널 가상 주소 섀도잉)를 사용하도록 설정하는 것이 좋습니다(아래 설명 참조). 그러면 CVE 2017-5754로부터 컴퓨터를 보호할 수 있습니다. 간접 분기 예측 완화 하드웨어 지원(IBP)을 사용하도록 설정하는 것이 좋습니다(아래 설명 참조). 그러면 CVE 2017-5715로부터 컴퓨터를 보호할 수 있습니다. Intel 프로세서를 사용 중인 환경에서는 하이퍼 스레딩을 사용하지 않도록 설정하는 것이 좋습니다. SQL Server 패치는 다음에 예정된 업데이트 기간에 정상적인 패치 적용 정책의 일부로 설치해야 합니다. |
5 |
SQL Server가 Linux OS에서 실행되고 있음 |
유통업체에서 Linux OS 업데이트를 받아 적용합니다. Linux SQL Server 패치를 적용합니다(아래 설명 참조). 그러면 CVE 2017-5753으로부터 컴퓨터를 보호할 수 있습니다. Linux KPTI(커널 페이지 테이블 격리) 및 IBP(CVE 2017-5754 및 CVE 2017-5715)를 사용하도록 설정할지 여부에 대한 지침은 아래 설명을 참조하세요. 위에 설명한 3번 및 4번 시나리오의 경우 Intel 프로세서를 사용 중인 환경에서는 하이퍼 스레딩을 사용하지 않도록 설정하는 것이 좋습니다. |
6 |
Analytics Platform System(APS) |
APS가 이 공지에 나와 있는 SQL Server의 확장 기능을 지원하지는 않지만 APS 어플라이언스에 Windows 패치를 설치하는 것이 좋습니다. KVAS/IBP는 사용하도록 설정하지 않아도 됩니다. |
성능 공지
따라서 업데이트 적용 시 해당 응용 프로그램의 성능을 직접 평가하는 것이 좋습니다.
모든 고객은 업데이트된 버전의 SQL Server 및 Windows를 설치하는 것이 좋습니다. SQL 작업에 대한 Microsoft의 테스트 결과에 따르면 이 경우 기존 응용 프로그램의 성능에 미치는 영향이 무시할 만한 수준이 되거나 최소화됩니다. 그러나 프로덕션 환경에서 배포하기 전에 모든 업데이트를 테스트하는 것이 좋습니다.
Microsoft에서 여러 환경의 다양한 SQL 작업에 대한 KVAS(커널 가상 주소 섀도잉), KPTI(커널 페이지 테이블 간접 참조) 및 간접 분기 예측 완화(IBP)의 영향을 측정한 결과 일부 작업은 성능이 크게 저하되는 것으로 나타났습니다. 그러므로 이러한 기능을 프로덕션 환경에 배포하기 전에 기능을 사용하도록 설정함에 따라 성능에 발생하는 영향을 테스트하는 것이 좋습니다. 이러한 기능을 사용하도록 설정하면 기존 응용 프로그램의 성능에 매우 큰 영향을 주는 경우 고객은 같은 컴퓨터에서 실행되는 신뢰할 수 없는 코드에서 SQL Server를 격리하는 방식이 응용 프로그램에 더 효율적인 완화 방법인지 여부를 고려할 수 있습니다.
간접 분기 예측 완화 하드웨어 지원(IBP)으로 인한 성능상의 영향과 관련된 자세한 내용은 여기에 자세히 나와 있습니다.
이 절의 내용은 자세한 내용이 공개되는 대로 업데이트될 예정입니다.
KVAS(커널 가상 주소 섀도잉, Windows) 및 KPTI(커널 페이지 테이블 간접 참조, Linux) 사용
KVAS와 KPTI는 CVE 2017-5754(GPZ 공개 정보에는 “멜트다운(Meltdown)” 또는 “세 번째 변종”으로도 나와 있음)로 인한 위험을 완화합니다.
SQL Server는 물리적 컴퓨터, 공용/개인 클라우드 환경의 VM, Linux 및 Windows 시스템 등 여러 환경에서 실행됩니다. 운영 환경에 관계없이 프로그램 자체는 컴퓨터나 VM에서 실행됩니다. 따라서 컴퓨터나 VM을 보안 경계라고 합니다.
경계 내의 모든 코드가 해당 경계의 모든 데이터에 액세스할 수 있다면 별도의 조치를 취할 필요가 없습니다. 그렇지 않은 경우 해당 경계는 다중 테넌트 방식입니다. 이 문서에서 설명하는 취약성이 발생하면 권한이 축소된 코드를 비롯한 모든 코드가 해당 경계의 모든 프로세스에서 실행되어 경계 내의 다른 모든 데이터를 읽을 수 있게 됩니다. 따라서 경계 내에서 신뢰할 수 없는 코드를 실행하는 프로세스는 이러한 취약성을 이용해 다른 프로세스의 데이터를 읽을 수 있습니다. 여기서 신뢰할 수 없는 코드란 SQL Server 확장성 메커니즘을 사용하는 신뢰할 수 없는 코드일 수도 있고 신뢰할 수 없는 코드를 실행 중인 경계 내의 다른 프로세스일 수도 있습니다.
다중 테넌트 경계의 신뢰할 수 없는 코드로부터 컴퓨터를 보호하려면 다음 방법 중 하나를 수행합니다.
-
신뢰할 수 없는 코드를 제거합니다. SQL Server 확장성 메커니즘의 경우 신뢰할 수 없는 코드를 제거하는 자세한 방법은 아래 설명을 참조하세요. 같은 경계 내의 다른 응용 프로그램에서 신뢰할 수 없는 코드를 제거하려는 경우에는 해당 경계를 두 VM으로 분리하는 등 대개 응용 프로그램별로 변경을 수행해야 합니다.
-
KVAS 또는 KPTI를 설정합니다. 이렇게 하면 성능에 영향이 발생합니다. 자세한 내용은 이 문서 앞에 설명되어 있습니다.
Windows에서 KVAS를 사용하도록 설정하는 방법에 대한 자세한 내용은 KB4072698을 참조하세요. Linux에서 KPTI를 사용하도록 설정하는 방법에 대한 자세한 내용은 운영 체제 총판에 문의하세요.
KVAS 또는 KPTI를 사용하는 것이 좋은 시나리오의 예
시스템 관리자 계정이 아닌 계정으로 SQL Server를 호스트하는 온-프레미스 물리적 컴퓨터를 사용 중인 고객은 SQL Server를 통해 실행되도록 임의의 R 스크립트를 제출할 수 있습니다. SQL Server는 보조 프로세스를 사용하여 sqlservr.exe 외부에서 이러한 스크립트를 실행합니다. Sqlservr.exe 프로세스 내의 데이터 공개와 시스템 커널 메모리 내의 데이터 공개를 방지하려면 KVAS 및 KPTI를 둘 다 사용하도록 설정해야 합니다.
참고 SQL Server 내에서 확장성 메커니즘을 사용 중이라고 해서 SQL Server가 자동으로 안전하지 않은 상태가 되는 것은 아닙니다. 고객이 각 종속성을 파악하여 신뢰한다면 이러한 메커니즘을 SQL Server 내에서 안전하게 사용할 수 있습니다. 그뿐 아니라 올바르게 작동하려면 확장성 메커니즘이 필요할 수도 있는 다른 SQL 기반 제품도 있습니다. 예를 들어 SQL Server를 기반으로 하는 패키지형 응용 프로그램의 경우 정상적으로 작동하려면 연결된 서버 또는 CLR 저장 프로시저가 필요할 수 있습니다. 이러한 구성 요소는 완화 작업의 일환으로 제거하지 않는 것이 좋습니다. 대신 각 사용 사례를 검토하여 초기 작업으로 이 코드를 파악하고 신뢰하는지 여부를 확인합니다. 이 지침은 현재 환경 상태가 KVAS를 사용하도록 설정해야 하는 상황(성능상 더 큰 영향을 줌)인지를 고객이 확인하는 데 도움을 주기 위해 제공됩니다.간접 분기 예측 완화(IBP) 하드웨어 지원 사용
IBP는 CVE 2017-5715(GPZ 공개 정보에는 스펙터(Spectre) 또는 “두 번째 변종”의 두 구성 요소 중 하나로도 나와 있음)로 인한 위험을 완화합니다.
Windows에서 KVAS를 사용하도록 설정하는 이 문서의 지침을 따르는 경우 IBP도 사용하도록 설정됩니다. 그러나 IBP의 경우 하드웨어 제조업체에서 제공하는 펌웨어 업데이트도 설치해야 합니다. 즉, 고객은 Windows에서 보호 기능을 사용하도록 설정하는 KB4072698의 지침을 따라야 할 뿐 아니라 하드웨어 제조업체에서 업데이트도 받아서 설치해야 합니다.
IBP를 사용하는 것이 좋은 시나리오의 예
온-프레미스 물리적 컴퓨터에서 신뢰할 수 없는 사용자가 임의의 JavaScript 코드를 업로드하고 실행하는 데 사용할 수 있는 응용 프로그램을 SQL Server와 함께 호스트하고 있습니다. SQL 데이터베이스에 기밀 데이터가 있는 경우 프로세스 간 정보 공개 방지를 위한 조치로 IBP를 사용하는 것이 좋습니다.
IBP 하드웨어 지원이 제공되지 않는 경우에는 신뢰할 수 없는 프로세스와 신뢰할 수 있는 프로세스를 서로 다른 물리적 컴퓨터나 가상 머신으로 분리하는 것이 좋습니다.
Linux 사용자의 경우에는 운영 체제 총판에 두 번째 변종(CVE 2017-5715) 방지 관련 정보를 문의하세요.
마이크로아키텍처 데이터 샘플링 취약성에 대한 완화 기능을 사용하는 것이 좋은 시나리오의 예
동일한 실제 호스트에 있는 서로 다른 두 가상 머신에서 각기 다른 두 비즈니스 응용 프로그램을 호스트하는 두 SQL Server 인스턴스를 온-프레미스 서버가 실행 중인 예를 고려해 보겠습니다. 이러한 두 비즈니스 응용 프로그램이 SQL Server 인스턴스에서 저장된 데이터를 읽을 수 없어야 한다고 가정할 경우, 이러한 취약성 악용에 성공한 공격자는 컴퓨터에서 별도의 프로세스로 실행되는 신뢰할 수 없는 코드를 사용하거나 SQL Server 확장성 메커니즘을 통해 실행되는 신뢰할 수 없는 코드를 사용하여 트러스트 경계에서 권한 있는 데이터를 읽을 수 있습니다(SQL Server의 확장성 옵션은 아래 섹션 참조). 공유 리소스 환경(예: 일부 클라우드 서비스 구성에 존재하는 환경)에서는 이 취약성으로 인해 한 가상 머신이 다른 가상 머신의 정보에 부적절하게 액세스하는 것이 허용될 수 있습니다. 비탐색 시나리오나 독립 실행형 시스템에서 이 취약성을 이용하려면 공격자가 시스템에 사전에 액세스하거나 대상 시스템에서 특수 제작된 응용 프로그램을 실행할 수 있어야 합니다.
신뢰할 수 없는 SQL Server 확장성 메커니즘
SQL Server에는 여러 가지 확장성 기능 및 메커니즘이 포함되어 있습니다. 이러한 메커니즘은 대부분 기본적으로 사용하지 않도록 설정되지만 고객은 각 프로덕션 인스턴스의 확장성 기능 사용 방식을 검토하는 것이 좋습니다. 그리고 최소한의 이진 파일 집합에서만 이러한 각 기능을 사용하도록 제한하고, 고객은 임의의 코드가 SQL Server와 동일한 컴퓨터에서 실행되지 않도록 액세스를 제한하는 것이 좋습니다. 그와 동시에 각 이진 파일을 신뢰할지 여부를 결정하고 신뢰할 수 없는 이진 파일은 비활성화하거나 제거해야 합니다.
-
SQL CLR 어셈블리
-
SQL Server와 동일한 물리적 컴퓨터에서 독립 실행형 R/Machine Learning Studio를 통해 실행되거나 외부 스크립트 메커니즘을 통해 실행되는 R 및 Python 패키지
-
SQL Server와 동일한 물리적 컴퓨터에서 실행되는 SQL Agent 확장 포인트(ActiveX 스크립트)
-
연결된 서버에서 사용되는 타사 OLE DB 공급자
-
타사 확장 저장 프로시저
-
서버 내에서 실행되는 COM 개체(sp_OACreate를 통해 액세스)
-
xp_cmdshell을 통해 실행하는 프로그램
SQL Server에서 신뢰할 수 없는 코드를 사용할 경우 취할 완화 조치:
시나리오/사용 사례 |
완화 조치 또는 제안되는 단계 |
CLR을 사용하도록 설정하여 SQL Server 실행(sp_configure ‘clr enabled', 1) |
|
SQL Server 내에서 Java/R/Python 외부 스크립트 실행(sp_configure 'external scripts enabled', 1) |
|
연결된 서버 사용(sp_addlinkedserver) |
|
확장 저장 프로시저 사용(sp_addextendedproc) |
확장 저장 프로시저는 더 이상 사용되지 않으므로 사용되는 프로시저를 모두 제거하고 프로덕션 시스템에서 사용하지 않도록 합니다. |
xp_cmdshell을 사용하여 SQL Server에서 이진 파일 호출 |
이 기능은 기본적으로 해제되어 있습니다. 신뢰할 수 없는 이진 파일을 호출하는 데 사용되는 모든 xp_cmdshell을 검토하여 제한합니다. 아래 문서의 설명에 따라 sp_configure를 통해 이 끝점에 대한 액세스를 제어할 수 있습니다.
|
sp_OACreate를 통해 COM 개체 사용 |
이 기능은 기본적으로 해제되어 있습니다. sp_OACreate를 통해 호출되는 COM 개체는 서버에 설치된 코드를 실행합니다. 신뢰할 수 없는 이진 파일에 대한 이와 같은 호출을 검토합니다. 아래 문서의 설명에 따라 sp_configure를 통해 설정을 확인할 수 있습니다. Ole Automation Procedures 서버 구성 옵션
|