본문 바로가기

IT/News

[4092731] Microsoft 보안 공지

요약

Microsoft는 Azure Cloud Services의 컴퓨터 키 생성 방법 업데이트와 관련된 정보를 제공하기 위해 이 보안 공지를 발표했습니다. 이 시나리오는 Azure Cloud Services 웹 역할을 사용하는 고객에게 영향을 줄 수 있습니다. 기존 배포 환경의 컴퓨터 키는 불충분한 엔트로피와 더 이상 사용되지 않는 암호화 알고리즘을 통해 생성된 것입니다.

이 문제를 해결하기 위해 Microsoft는 암호화 수준이 강력한 난수 생성을 사용하는 것을 포함하여 새 Azure Cloud Services 웹 역할 배포에서 컴퓨터 키를 생성하는 데 사용되는 알고리즘의 업데이트를 발표했습니다. 모든 기존 웹 역할은 다시 배포한 경우가 아니면 이전에 생성된 컴퓨터 키를 그대로 사용합니다. 구체적인 특정 정보를 얻게 되면 공격자는 더 이상 사용되지 않는 알고리즘이 생성한 컴퓨터 키를 추측할 수 있습니다. 경우에 따라, 취약한 컴퓨터 키가 보안 기능 우회를 허용할 수도 있습니다.

이 공지에서는 고객이 이러한 시나리오의 영향을 받는지 여부와 취해야 하는 조치(있는 경우)를 확인할 수 있는 지침을 제공합니다.

영향받는 클라우드 서비스

웹 역할을 사용하는 Azure 배포는 이 문제의 영향을 받습니다. CS 패키지의 Web.config에 고유한 컴퓨터 키를 제공한 경우는 예외입니다. Azure 작업자 역할, 가상 머신 및 모든 다른 Azure 제품은 영향을 받지 않습니다.

질문과 대답

1. 취약성의 영향을 받는지 어떻게 알 수 있습니까?

CS 패키지의 Web.config에 고유한 컴퓨터 키를 제공한 경우가 아니면 모든 Azure Cloud Service 웹 역할은 이 문제의 영향을 받습니다. Azure Cloud Service 작업자 역할, 가상 머신 및 모든 다른 Azure 제품은 영향을 받지 않습니다.

ASP.NET은 다음을 포함한 여러 가지 용도로 컴퓨터 키를 사용합니다.

  • 웹 양식 보기 상태 데이터 손상 방지
  • ASP.NET 웹 양식 세션 쿠키 생성 및 유효성 검사
  • CSRF 방지 토큰 생성
  • machinekey.protect 및 machinekey.unprotect 메서드를 사용한 암호화

2. 영향을 받는 응용 프로그램을 수정하기 위한 전제 조건이 있나요?

예. 웹 역할이 더 이상 사용되지 않는 버전의 .NET용 Azure SDK를 통해 배포된 경우 향상된 컴퓨터 키 생성 알고리즘을 사용하지 않습니다. 지원되는 버전을 확인하려면 https://azure.microsoft.com/ko-kr/downloads/archive-net-downloads/를 참조하세요. 지원되는 버전으로 업그레이드하려면 위에 언급된 사이트의 링크를 클릭하여 지원되는 SDK 버전을 다운로드하고 이 버전으로 프로젝트를 다시 배포하세요. 프로젝트가 지원되는 SDK로 배포되었음을 확인한 후에는 이 공지에 나와 있는 추가 단계를 수행하세요.

3. 영향받는 응용 프로그램을 수정하려면 어떻게 해야 합니까?

새 컴퓨터 키를 생성하려면 .cspkg 및 .cscfg를 새 클라우드 서비스로 다시 배포하거나, 스테이징 슬롯에 작업을 배포하고 스왑 배포를 수행하거나(VIP 스왑), 고유한 컴퓨터 키를 삽입한 다음 동시 업그레이드를 수행해야 합니다. 일반적인 업데이트 배포 작업으로는 충분하지 않습니다. 아래에서는 완화 방법에 대해 간략하게 설명하고 자세한 단계를 안내합니다.

옵션 1: 작업을 새 클라우드 서비스에 배포합니다. 트래픽이 새 클라우드 서비스를 가리키도록 CNAME을 업데이트합니다. 이전 사이트로 향하는 트래픽이 없으면 이전 클라우드 서비스를 삭제해도 됩니다.

옵션 2: 클라우드 서비스를 스테이징 슬롯에 배포하고 스왑 배포를 수행합니다.

옵션 3: Web.config에 고유한 컴퓨터 키를 생성하고 동시 업데이트를 수행합니다. 이렇게 하면 모든 인스턴스가 한 번에 업데이트되므로 응용 프로그램의 가동이 중지됩니다.

가동 중지 시간을 피하려면 옵션 1을 사용하는 것이 좋습니다. 또한 컴퓨터 키를 변경하는 동안 세션이 중단될 수 있으므로 사용률이 낮은 시간대에 완화 조치를 수행하는 것이 좋습니다.

참고: 옵션 1 및 옵션 2를 통해 새 컴퓨터 키를 확보하면 응용 프로그램 IP 주소가 변경됩니다.

4. 컴퓨터 키를 사용하여 MachineKey.Encode()/MachineKey.Protect()로 영구적 데이터를 암호화했는데 데이터를 복구하려면 어떻게 해야 하나요?

컴퓨터 키를 사용하여 MachineKey.Encode()/MachineKey.Protect()로 데이터를 암호화한 경우, web.config에 정의된 이전 컴퓨터 키 및 알고리즘을 사용하여 MachineKey.Decode()/MachineKey.Unprotect()를 개별적으로 호출하는 방식으로 데이터의 암호를 해독한 후 마이그레이션 단계를 수행해야 합니다. 마이그레이션 단계가 완료된 후 MachineKey.Encode()/MachineKey.Protect() 및 MachineKey.Decode()/MachineKey.Unprotect()를 호출하면 web.config에서 업데이트된 컴퓨터 키 및 알고리즘이 사용됩니다.

5. 응용 프로그램에 새 컴퓨터 키 알고리즘이 사용되고 있다는 것을 어떻게 알 수 있습니까?

클라우드 서비스에 배포 환경이 하나뿐인 경우 Azure 관리 포털에 있는 클라우드 서비스의 인증서 탭에서 Azure 컴퓨터 키 인증서가 충분한지 확인합니다. 이 인증서가 있으면 배포 환경에서 컴퓨터 키 알고리즘을 사용 중인 것입니다.

클라우드 서비스에 배포 환경이 두 개(프로덕션 및 스테이징)인 경우에는 웹 역할에 대해 원격 데스크톱을 사용하도록 설정하고 IIS 구성을 확인해야 합니다. 컴퓨터 키 인증서가 있으면 새 컴퓨터 키 알고리즘을 사용 중인 것입니다. 각 배포 환경에 있는 웹 역할마다 이러한 확인 작업을 수행해야 합니다. VM(가상 머신)에 연결할 수 없는 경우 지원 티켓(#7의 지침 참조)을 제출하면 지원 팀이 해당 배포 환경에서 새 컴퓨터 키를 사용 중인지 확인하는 과정을 도와 드릴 수 있습니다.

6. "Microsoft Azure Service Management for MachineKey" 인증서는 무엇입니까?

향상된 알고리즘을 사용하여 컴퓨터 키를 암호화하는 데 사용되는 인증서입니다.

7. "Microsoft Azure Service Management for MachineKey" 인증서는 누가 관리하며 인증서가 만료되면 어떻게 됩니까?

이 인증서는 Azure가 관리합니다. 이 인증서는 새 알고리즘을 사용하여 새 컴퓨터 키를 생성하기 위해 한 번 사용되며 고객은 인증서 만료 날짜에 대해 신경쓰지 않아도 됩니다. 만료 날짜는 아무런 영향도 주지 않습니다.

8. 인증서를 VM에서 삭제하거나 제거할 수 있습니까?

아니요. 인증서는 제거할 수 없습니다.

9. 완화 단계에 대해 궁금한 점이 있으면 어떻게 해야 합니까?

표준 에스컬레이션 프로세스에 따라 클라우드 서비스 아래에 지원 사례를 제출하세요. Azure Portal에서 에스컬레이션하려면 다음 단계를 따르세요.

  1. Azure Portal에서 도움말 + 지원으로 이동합니다.
  2. 문제 유형으로 기술을 선택합니다.
  3. 구독을 선택한 다음 서비스에서 클라우드 서비스(웹 역할/작업자 역할) 서비스를 선택합니다.
  4. 다음 을 클릭하고 컴퓨터 키 인증서 업데이트를 문제 유형으로 선택한 후 지원 티켓 세부 정보를 작성합니다.

완화를 수행하는 자세한 단계

옵션 1: 클라우드 서비스를 다시 배포합니다.

  1. Azure Portal을 통해 재배포 수행:
    1. .cspkg 및 .cscfg를 사용하여 새 클라우드 서비스를 만듭니다. 여기에서 자세한 내용을 참조하세요.
    2. 트래픽이 새 클라우드 서비스를 가리키도록 CName 또는 레코드를 변경합니다.
    3. 트래픽이 새 클라우드 서비스를 가리키면 이전 클라우드 서비스를 삭제합니다.
  2. PowerShell을 통해 재배포 수행:

    1. .cspkg 및 .cscfg를 사용하여 새 클라우드 서비스를 만듭니다. 여기에서 자세한 내용을 참조하세요.(영문)

      예: New-AzureService -ServiceName "yourServiceName" -Label "MyTestService" -Location "South Central US"

    2. .cspkg 및 .cscfg를 사용하여 새 배포를 만듭니다. 여기에서 자세한 내용을 참조하세요(영문) .

      예: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Production" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    3. 트래픽이 새 클라우드 서비스를 가리키도록 CName 또는 레코드를 변경합니다.

    4. 트래픽이 새 클라우드 서비스를 가리키면 업데이트된 컴퓨터 키가 없는 이전 클라우드 서비스를 삭제합니다. 여기에서 자세한 내용을 참조하세요.(영문)

      예: Remove-AzureService -ServiceName "yourOldServiceName"

  3. Rest API를 통해 재배포 수행:

    1. 새 클라우드 서비스를 만듭니다. 여기에서 자세한 내용을 참조하세요(영문).

      예: https://management.core.windows.net//services/hostedservices

    2. 배포 만들기 API(영문)를 사용하여 새 배포를 만듭니다. .cspkg 및 .cscfg를 찾아야 하는 경우 Get-Package API(영문)를 호출하면 됩니다.

      예: https://management.core.windows.net//services/hostedservices//deploymentslots/production

    3. 트래픽이 새 클라우드 서비스를 가리키면 업데이트된 컴퓨터 키가 없는 이전 클라우드 서비스를 삭제합니다. 여기에서 자세한 내용을 참조하세요.(영문)

      예: https://management.core.windows.net//services/hostedservices/

옵션 2: 스왑 배포

옵션 2를 사용하려면 빈 스테이징 슬롯이 있어야 합니다. 스테이징 슬롯에 현재 배포 환경이 있으면 이를 삭제한 후 다음 단계를 수행하면 됩니다.

  1. Azure Portal을 통해 스왑 배포 수행:

    1. .cspkg 및 .cscfg를 스테이징 슬롯에 업로드하여 클라우드 서비스 배포를 업데이트합니다. 여기에는 컴퓨터 키를 생성하는 데 사용되는 새 인증서가 포함됩니다. 여기에서 자세한 내용을 참조하세요.

    2. 프로덕션 슬롯과 스테이징 슬롯을 스왑합니다. 여기에서 자세한 내용을 참조하세요.

    3. 스테이징 슬롯과 이전 프로덕션 배포를 삭제합니다. 여기에서 자세한 내용을 참조하세요.(영문)

  2. PowerShell을 통해 스왑 배포 수행.

    1. cspkg 및 cscfg를 스테이징 슬롯에 배포합니다. 여기에서 자세한 내용을 참조하세요(영문) .

      예: New-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging" -Package "YourCspkgFile.cspkg" -Configuration "YourConfigFile.cscfg"

    2. 프로덕션 슬롯과 스테이징 슬롯을 스왑합니다. 여기에서 자세한 내용을 참조하세요.(영문)

      예: Move-AzureDeployment -ServiceName "yourServiceName"

    3. 스테이징 슬롯과 이전 프로덕션 배포를 삭제합니다.

      예: Remove-AzureDeployment -ServiceName "yourServiceName" -Slot "Staging"

  3. Rest API를 통해 스왑 배포 수행:

    1. 배포 만들기 API(영문)를 사용하여 스테이징 슬롯에 새 배포를 만듭니다. .cspkg 및 .cscfg를 찾아야 하는 경우 Get-Package API(영문)를 호출하면 됩니다.

      예: https://management.core.windows.net//services/hostedservices//deploymentslots/staging

    2. 스왑 배포(영문)를 사용하여 프로덕션 슬롯과 스테이징 슬롯을 스왑합니다.

      예: https://management.core.windows.net//services/hostedservices/

    3. 스테이징 슬롯과 이전 프로덕션 배포를 삭제합니다.

      예: https://management.core.windows.net//services/hostedservices//deploymentslots/staging

옵션 3: Web.config에 고유한 컴퓨터 키를 생성하고 동시 배포를 수행합니다.

  1. PowerShell에서 새 컴퓨터 키 XML 요소를 생성합니다(부록 A 참조).

  2. 새 컴퓨터 키를 사용하여 WebConfig를 업데이트합니다. 지침을 참조하세요.

  3. 클라우드 서비스를 다시 패키지합니다.

  4. 새 컴퓨터 키가 포함된 .cscfg를 사용하여 upgrade-deployment(영문)를 수행합니다. 모드를 _simultaneous_로 설정해야 합니다. 그렇지 않으면 응용 프로그램이 비정상 상태가 될 수 있습니다.

고지 사항

이 공지에서 제공되는 정보는 어떠한 보증도 없이 "있는 그대로" 제공됩니다. Microsoft는 상품성과 특정 목적에 대한 적합성의 보증을 포함하여 명시적이거나 묵시적인 모든 보증을 부인합니다. Microsoft Corporation 또는 그 공급자는 모든 직접적, 간접적, 부수적, 파생적 손해 또는 영업 이익 손실 또는 특수한 손실에 대하여 어떠한 경우에도 책임을 지지 않으며, 이는 Microsoft Corporation 또는 그 공급자가 그와 같은 손해의 가능성을 사전에 알고 있던 경우에도 마찬가지입니다. 일부 지역에서는 파생적 또는 부수적 손해에 대한 책임의 배제 또는 제한을 허용하지 않으므로 위 제한은 귀하에게 적용되지 않을 수도 있습니다.