본문 바로가기

IT/News

[3181759] Microsoft 보안 권고

요약

Microsoft는이 보안 권고를 발표하여 ASP.NET Core MVC 1.0.0의 공용 버전에있는 취약점에 대한 정보를 제공합니다. 이 권고는 또한 개발자가 응용 프로그램이 올바르게 업데이트되도록하기 위해 수행 할 수있는 작업에 대한 지침을 제공합니다.

Microsoft는 ASP.NET Core MVC 1.0.0의 공개 버전에서 View Components 가 현재 인증 된 사용자의 세부 정보를 포함하여 잘못된 정보를받을 수 있는 보안 취약점을 인식하고 있습니다. View 구성 요소가 취약한 코드에 의존하고 현재 사용자를 기반으로 의사 결정을 내리면 View 구성 요소가 잘못된 결정을 내리고 권한 상승이 발생할 수 있습니다.

완화 요소

View 구성 요소는 ViewComponent 클래스가 제공하는 User 속성을 사용하여 User 속성의 내용을 기반으로 결정을 내리거나 출력을 변경해야합니다. 제 3 자 코드에는 이러한 방식으로 작동하는보기 구성 요소가 포함될 수도 있습니다. Microsoft는 모든 개발자가 자신 또는 타사 소프트웨어로 구성 요소를 사용하지 못하도록 보호하기 위해 View 구성 요소 또는 그 안에 User 속성을 사용하는지 여부에 관계없이 패키지를 업데이트 할 것을 권장합니다.

영향을받는 소프트웨어

Microsoft ASP.NET Core 프로젝트는 다음 표의 영향을받는 패키지 버전을 사용하는 경우 취약점의 영향을받습니다.

** 영향을받는 패키지 및 버전 **
** 패키지 이름 ** ** 패키지 버전 **
Microsoft.AspNetCore.Mvc 1.0.0
Microsoft.AspNetCore.Mvc.Abstractions 1.0.0
Microsoft.AspNetCore.Mvc.ApiExplorer 1.0.0
Microsoft.AspNetCore.Mvc.Core 1.0.0
Microsoft.AspNetCore.Mvc.Cors 1.0.0
Microsoft.AspNetCore.Mvc.DataAnnotations 1.0.0
Microsoft.AspNetCore.Mvc.Formatters.Json 1.0.0
Microsoft.AspNetCore.Mvc.Formatters.Xml 1.0.0
Microsoft.AspNetCore.Mvc.Localization 1.0.0
Microsoft.AspNetCore.Mvc.Razor 1.0.0
Microsoft.AspNetCore.Mvc.Razor.Host 1.0.0
Microsoft.AspNetCore.Mvc.TagHelpers 1.0.0
Microsoft.AspNetCore.Mvc.ViewFeatures 1.0.0
Microsoft.AspNetCore.Mvc.WebApiCompatShim 1.0.0

권고 FAQ

영향을 받는지 어떻게 알 수 있습니까? 
ASP.NET 코어에는 직접 및 이행이라는 두 가지 유형의 종속성이 있습니다. 프로젝트가 " 영향을받는 소프트웨어 "항목에 나열된 영향을받는 패키지 중 하나에 직접 또는 이행 적으로 종속되면 영향을받을 수 있습니다.

직접 의존성

프로젝트에 패키지를 특별히 추가하면 직접적인 종속성이 발생합니다. 예를 들어 Microsoft.AspNetCore.Mvc 패키지를 프로젝트에 추가하면 Microsoft.AspNetCore.Mvc에 직접 종속됩니다.

직접적인 의존성은 project.json 파일을 검토하여 발견 할 수 있습니다.

전이 종속성

다른 패키지에 의존하는 패키지를 프로젝트에 추가 할 때 일시적 종속성이 발생합니다. 예를 들어 Microsoft.AspNetCore.Authentication 패키지를 프로젝트에 추가하면 Microsoft.AspNetCore.Http 패키지에 따라 달라집니다. 이로 인해 프로젝트는 Microsoft.AspNetCore.Authentication 및 Microsoft.AspNetCore.Http 패키지의 전이 종속성에 직접 종속됩니다.

Transitive 의존성은 검색을 지원하거나 프로젝트의 루트 디렉터리에 포함 된 project.lock.json 파일을 검토하여 Microsoft Visual Studio 솔루션 탐색기 창에서 검토 할 수 있습니다. 이 파일에는 프로젝트의 신뢰할 수있는 패키지 목록이 들어 있습니다.

영향을받는 응용 프로그램을 어떻게 수정합니까?

직접 의존성을 수정하고 전이 의존성을 검토하고 수정해야합니다. 각 취약한 패키지의 버전 1.0.1에는 응용 프로그램의 보안을 유지하는 데 필요한 수정 사항이 포함되어 있습니다.

직접 종속성 수정

직접적인 의존성을 수정하려면,

  1. 편집기에서 project.json 파일을 엽니 다. 종속성 섹션을 찾으십시오. 다음은 예제 섹션을 제공합니다.

    복사

    "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.0", }

    이 예제에는 Microsoft.NetCore.App, Microsoft.AspNetCore.Server.Kestrel 및 Microsoft.AspNetCore.Mvc의 세 가지 직접 종속성이 있습니다.

    Microsoft.NetCore.App는 응용 프로그램이 대상으로하는 플랫폼이며 무시할 수 있습니다. 다른 패키지는 해당 버전을 패키지 이름 오른쪽에 노출합니다. 이 예에서 비 플랫폼 패키지는 버전 1.0.0입니다.

  2. 이 권고  영향을받는 소프트웨어 섹션 에서 취약한 패키지 목록과의 직접적인 종속 관계를 검토하십시오 .

    직접 종속성이있는 각 취약한 패키지에 대해 편집기의 버전 번호를 1.0.1로 변경하십시오. 모든 취약한 패키지 버전을 업데이트 한 후 project.json 파일을 저장하십시오.

    예제 project.json 파일의 종속성 섹션은 이제 다음과 같이 나타납니다.

    복사

    "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.1", }

    Visual Studio를 사용하고 업데이트 된 project.json 파일을 저장하는 경우 Visual Studio에서 새 버전을 복원합니다. 출력 창 (Ctrl + Alt + O)을 열고 출력 표시 드롭 다운 목록을 패키지 관리자 로 변경하여 복원 결과를 볼 수 있습니다 .

    Visual Studio를 사용하지 않는 경우 명령 줄을 열고 프로젝트 디렉토리로 변경하십시오. 새로운 종속성을 복원하려면 dotnet restore 명령을 실행하십시오.

  3. 모든 직접적인 종속성을 처리 한 후에는 전 이적 종속성을 검토 할 준비가됩니다.

전이 종속성 검토

전이 의존성을 확인하는 방법은 두 가지가 있습니다. Visual Studio 솔루션 탐색기를 사용하거나 project.lock.json 파일을 검토하십시오.

Visual Studio 솔루션 탐색기 사용

솔루션 탐색기를 사용하려면 Visual Studio에서 프로젝트를 연 다음 Ctrl + 키를 누릅니다. 솔루션 탐색기에서 검색을 활성화하십시오. 이 권고  영향을받는 소프트웨어 절에 나열된 각 패키지 이름을 검색하고 발견 한 취약한 패키지를 적어 두십시오.

예를 들어 Microsoft.AspNetCore.Mvc에 종속성을 갖는 패키지가 포함 된 예제 프로젝트에서 Microsoft.AspNetCore.Mvc를 검색하면 다음 그림과 같은 결과가 표시됩니다.

그림 1 : Visual Studio에서 검색

검색 결과는 트리 형태로 나타납니다. 결과에서 식별 된 참조를 볼 수 있습니다. 참조 머리글 아래의 첫 번째 항목은 응용 프로그램이 사용하는 대상 프레임 워크를 나타냅니다. 응용 프로그램을 구성한 방법에 따라 .NETCoreApp, .NET Standard 또는 .NET Framework-vX.YZ (XYZ는 실제 버전 번호)가됩니다. 타겟 프레임 워크에서 직접 패키지에 대한 의존성을 표시 한 패키지 목록이 표시됩니다. 이 예에서 응용 프로그램은 VulnerablePackage에 종속됩니다. VulnerablePackage는 차례로 종속성 및 버전을 나열하는 리프 노드를 갖습니다. 이 경우 패키지는 취약한 Microsoft.AspNetCore.Mvc 및 다른 버전에 종속됩니다.

project.lock.json 수동 검토

편집기에서 project.lock.json 파일을 엽니 다. json을 이해하고이 파일을 검토하기 위해 노드를 축소하고 확장 할 수있는 편집기를 사용하는 것이 좋습니다. Visual Studio와 Visual Studio 코드 모두이 기능을 제공합니다.

Visual Studio를 사용하는 경우 project.lock.json 파일은 project.json 파일의 "아래"에 있습니다. project.json 파일의 왼쪽에있는 오른쪽을 가리키는 삼각형 ▷을 클릭하여 솔루션 트리를 확장하여 project.lock.json 파일을 표시하십시오. 다음 그림은 project.json 파일이 표시된 프로젝트를 표시하여 project.lock.json 파일을 표시합니다.

그림 2 : project.lock.json 파일 위치 

project.lock.json 파일 에서이 권고  영향을받는 소프트웨어 섹션에 나열된 취약한 패키지를 검색하십시오 . 각 패키지에 대해 패키지 이름을 사용하고 /를 추가 한 다음 버전 번호를 추가하십시오. 예를 들어 Microsoft.AspNetCore.Mvc 버전 1.0.0은 project.lock.json 파일에서 "Microsoft.AspNetCore.Mvc / 1.0.0"으로 표시됩니다. 이 권고  영향을받는 소프트웨어 절의 표에있는 항목과 일치하는 찾을 수있는 각 패키지 이름을 적어 두십시오 .

전이 종속성 수정

이제 영향을받는 패키지 목록을 얻을 수 있습니다. 일시적인 패키지를 찾지 못한 경우 종속 패키지 중 하나라도 의존성 패키지가 종속되어 있지 않거나 직접 종속성을 업데이트하여 문제를 해결할 수 있습니다.

전 이적 종속성 검토에서 취약한 패키지 목록이 생성 된 경우 전이 종속성을 무시하기 위해 취약한 패키지의 업데이트 된 버전에 project.json 파일에 대한 직접 종속성을 추가해야합니다. project.json 파일을 열고 종속성 섹션을 찾으십시오. 예 :

복사

"dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "VulnerablePackage": "1.0.0-*" }

Transitive 패키지 검색의 결과에 따르면 VulnerablePackage는 Microsoft.AspNet.Mvc 버전 1.0.0에 종속되어 있습니다. 이 예제를 수정하려면 project.json 파일에 직접 종속성을 추가해야합니다. 의존성 섹션에 고정 된 버전을 나타내는 새 줄을 추가하여이 작업을 수행 할 수 있습니다. 예를 들어, Microsoft.AspNet.Mvc, 버전 1.0.1의 고정 버전을 가져 오려면 다음과 같이 project.json 파일을 편집하십시오.

복사

"dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Mvc": "1.0.1", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "VulnerablePackage": "1.0.0-*" }

고정 패키지에 직접 종속성을 추가 한 후 프로젝트를 저장하십시오. json 파일.

Visual Studio를 사용하는 경우 업데이트 된 project.json 파일을 저장하면 새 버전이 Visual Studio에 저장됩니다. 복원 결과를 보려면 출력 창 (Ctrl + Alt + O)을 열고 출력 결과 표시 드롭 다운 목록을 패키지 관리자  변경하십시오 .

Visual Studio를 사용하지 않는 경우 명령 줄을 열고 프로젝트 디렉토리로 변경하십시오. 새로운 종속성을 복원하려면 dotnet restore 명령을 실행하십시오.

이행 종속성을 다시 확인하여 모든 종속성을 수정했는지 확인하십시오.

귀하의 신청서 재구성

마지막으로 응용 프로그램을 다시 작성하고 정상적으로 테스트 한 다음 선호하는 배포 메커니즘을 사용하여 다시 배포하십시오.

권장 조치

  • ASP.NET 핵심 템플릿 업데이트
    "Microsoft .NET Core 1.0.1 - VS 2015 Tooling Preview 2"는 고정 패키지를 사용하도록 ASP.NET 핵심 템플릿을 업데이트합니다.

    이 미리보기를 다운로드하려면 .NET 다운로드 페이지 의 "도구"섹션을 참조하십시오.

기타 정보

Microsoft Active Protections 프로그램 (MAPP)

고객을위한 보안 보호를 향상시키기 위해 Microsoft는 매월 보안 업데이트 릴리스를 앞두고 주요 보안 소프트웨어 공급 업체에 취약점 정보를 제공합니다. 그런 다음 보안 소프트웨어 제공 업체는이 취약점 정보를 사용하여 바이러스 백신, 네트워크 기반 침입 탐지 시스템 또는 호스트 기반 침입 방지 시스템과 같은 보안 소프트웨어 또는 장치를 통해 고객에게 최신 보호 기능을 제공 할 수 있습니다. 보안 소프트웨어 공급 업체에서 활성 보호 기능을 사용할 수 있는지 여부를 확인하려면 MAPP (Microsoft Active Protections Program) 파트너에 나열된 프로그램 파트너가 제공하는 활성 보호 기능 웹 사이트를 방문하십시오 .

피드백

지원하다

기권

이 권고에서 제공된 정보는 어떤 종류의 보증도없이 "있는 그대로"제공됩니다. Microsoft는 상품성 및 특정 목적에의 적합성에 대한 보증을 포함하여 명시 적이든 묵시적이든 모든 보증을 부인합니다. Microsoft Corporation 또는 그 공급 업체가 직접, 간접적 인, 우발적 인, 결과적 손실, 영업 이익 손실 또는 특별 손해를 포함하여 어떠한 경우에도 Microsoft Corporation 또는 그 공급자는 그러한 손해의 가능성을 사전에 알고 있었을지라도 어떠한 경우에도 책임을지지 않습니다. 일부 주에서는 파생적 또는 부수적 손해에 대한 책임의 배제 나 제한을 허용하지 않으므로 전술 한 제한이 적용되지 않을 수 있습니다.