다음을 통해 공유


Office 솔루션에 대한 특정 보안 고려 사항

Microsoft .NET Framework 및 Microsoft Office에서 제공하는 보안 기능은 가능한 보안 위협으로부터 Office 솔루션을 보호하는 데 도움이 될 수 있습니다. 이 항목에서는 이러한 위협 중 일부에 대해 설명하고 위협으로부터 보호하는 데 도움이 되는 권장 사항을 제공합니다. 또한 Microsoft Office 보안 설정이 Office 솔루션에 미치는 영향에 대한 정보도 포함되어 있습니다.

적용 대상: 이 항목의 정보는 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. Office 응용 프로그램 및 프로젝트 유형에서 사용할 수 있는 기능을 참조하세요.

신뢰할 수 있는 코드는 새 악성 문서에서 용도가 변경됩니다.

공격자는 고용 응용 프로그램에 대한 개인 정보를 다운로드하는 등 특정 목적을 위한 신뢰할 수 있는 코드를 가져와 워크시트와 같은 다른 문서에서 다시 사용할 수 있습니다. 코드는 원본 문서가 실행되고 있지 않다는 것을 알지 못하며, 다른 사용자가 열 때 개인 정보 공개 또는 권한 증가로 코드 실행과 같은 다른 위협을 열 수 있습니다. 또는 공격자가 워크시트의 데이터를 수정하여 피해자에게 보내면 예기치 않게 동작할 수 있습니다. 코드에 연결된 워크시트의 값, 수식 또는 프레젠테이션 특성을 변경하면 악의적인 사용자가 수정된 파일을 전송하여 다른 사용자를 공격할 수 있습니다. 워크시트의 값을 수정하여 사용자가 볼 수 없는 정보에 액세스할 수도 있습니다.

어셈블리 위치와 문서 위치 모두 실행하기에 충분한 증거가 있어야 하므로 이 공격을 탑재하기가 쉽지 않습니다. 예를 들어 전자 메일 첨부 파일 또는 신뢰할 수 없는 인트라넷 서버의 문서에는 실행할 수 있는 충분한 권한이 없습니다.

이 공격을 가능하게 하려면 잠재적으로 신뢰할 수 없는 데이터를 기반으로 결정을 내리는 방식으로 코드 자체를 작성해야 합니다. 예를 들어 데이터베이스 서버의 이름을 포함하는 숨겨진 셀이 있는 워크시트를 만드는 것이 있습니다. 사용자는 SQL 인증 및 하드 코딩된 SA 암호를 사용하여 해당 서버에 연결을 시도하는 ASPX 페이지에 워크시트를 제출합니다. 공격자는 숨겨진 셀의 내용을 다른 컴퓨터 이름으로 바꾸고 SA 암호를 가져올 수 있습니다. 이 문제를 방지하려면 암호를 하드 코딩하지 말고 항상 서버에 액세스하기 전에 양호한 것으로 알려진 서버의 내부 목록에 대해 서버 ID를 확인합니다.

Recommendations

  • 사용자, 문서, 데이터베이스, 웹 서비스 또는 기타 원본에서 가져온 입력 및 데이터의 유효성을 항상 검사합니다.

  • 사용자를 대신하여 권한 있는 데이터를 가져오고 보호되지 않는 워크시트에 배치하는 것과 같은 특정 유형의 기능을 노출하는 데 주의해야 합니다.

  • 애플리케이션 유형에 따라 코드를 실행하기 전에 원본 문서가 실행 중인지 확인하는 것이 합리적일 수 있습니다. 예를 들어 알려진 안전한 위치에 저장된 문서에서 실행 중인지 확인합니다.

  • 애플리케이션에서 권한 있는 작업을 수행하는 경우 문서가 열릴 때 경고를 표시하는 것이 좋습니다. 예를 들어 애플리케이션이 개인 정보에 액세스하고 사용자가 계속하거나 취소하도록 선택하도록 하는 시작 화면 또는 시작 대화 상자를 만들 수 있습니다. 최종 사용자가 무고해 보이는 문서에서 이러한 경고를 받으면 손상되기 전에 응용 프로그램을 종료할 수 있습니다.

Outlook 개체 모델 보호에 의해 코드가 차단됨

Microsoft Office는 코드에서 개체 모델의 특정 속성, 메서드 및 개체를 사용하지 못하도록 제한할 수 있습니다. 이러한 개체에 대한 액세스를 제한하면 전자 메일 웜 및 바이러스가 악의적인 목적으로 개체 모델을 사용하지 못하도록 방지할 수 있습니다. 이 보안 기능을 Outlook 개체 모델 보호라고 합니다. 개체 모델 가드를 사용하는 동안 VSTO 추가 기능이 제한된 속성 또는 메서드를 사용하려고 하면 Outlook에 사용자가 작업을 중지할 수 있도록 하거나 제한된 기간 동안 속성 또는 메서드에 대한 액세스 권한을 부여할 수 있는 보안 경고가 표시됩니다. 사용자가 작업을 중지하면 Visual Studio에서 Office 솔루션을 사용해 만든 Outlook VSTO 애드인에서 COMException 예외가 발생합니다.

개체 모델 보호는 Outlook이 Microsoft Exchange Server와 함께 사용되는지 여부에 따라 다양한 방법으로 VSTO 추가 기능에 영향을 줄 수 있습니다.

  • Outlook을 Exchange와 함께 사용하지 않는 경우 관리자는 컴퓨터의 모든 VSTO 추가 기능에 대해 개체 모델 보호 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다.

  • Outlook을 Exchange와 함께 사용하는 경우 관리자는 컴퓨터의 모든 VSTO 추가 기능에 대해 개체 모델 보호 기능을 사용하거나 사용하지 않도록 설정할 수 있으며, 관리자는 개체 모델 보호가 발생하지 않고 특정 VSTO 추가 기능을 실행할 수 있도록 지정할 수 있습니다. 관리자는 개체 모델의 특정 영역에 대한 개체 모델 보호의 동작을 수정할 수도 있습니다. 예를 들어 관리자는 개체 모델 가드를 사용하는 경우에도 VSTO 추가 기능에서 프로그래밍 방식으로 전자 메일을 보내도록 자동으로 허용할 수 있습니다.

    Outlook 2007부터는 Outlook 보안을 유지하면서 개발자 및 사용자 환경을 개선하기 위해 개체 모델 보호의 동작이 변경되었습니다. 자세한 내용은 Outlook 2007의 코드 보안 변경 내용을 참조하세요.

개체 모델 보호 경고 최소화

제한된 속성 및 메서드를 사용할 때 보안 경고를 방지하려면 VSTO 추가 기능이 프로젝트의 클래스 필드에서 Application Outlook 개체 ThisAddIn 를 가져오는지 확인합니다. 이 필드에 대한 자세한 내용은 프로그램 VSTO 추가 기능을 참조하세요.

이 개체에서 가져온 Outlook 개체만 개체 모델 가드에서 신뢰할 수 있습니다. 반면, 새 Microsoft.Office.Interop.Outlook.Application 개체에서 가져온 개체는 신뢰할 수 없으며, 개체 모델 가드를 사용하는 경우 제한된 속성과 메서드는 보안 경고를 발생합니다.

다음 코드 예제에서는 개체 모델 가드를 사용 하는 경우 보안 경고를 표시 합니다. 클래스의 To 속성은 Microsoft.Office.Interop.Outlook.MailItem 개체 모델 보호에 의해 제한됩니다. Microsoft.Office.Interop.Outlook.MailItem 개체는 코드가 Application 필드가 아닌 Microsoft.Office.Interop.Outlook.Application에서 새 연산자를 사용하여 만든 개체에서 가져오기 때문에 신뢰할 수 없습니다.

private void UntrustedCode()
{
    Microsoft.Office.Interop.Outlook.Application application =
        new Microsoft.Office.Interop.Outlook.Application();
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

다음 코드 예제에서는 개체 모델 가드에서 신뢰할 수 있는 Microsoft.Office.Interop.Outlook.MailItem 개체의 제한된 To 속성을 사용하는 방법을 보여 줍니다. 코드는 신뢰할 수 있는 Application 필드를 사용하여 Microsoft.Office.Interop.Outlook.MailItem를 가져옵니다.

private void TrustedCode()
{
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        this.Application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

비고

Outlook을 Exchange와 함께 사용하는 경우 모든 Outlook 개체 ThisAddIn.Application 를 가져오는 것이 VSTO 추가 기능에서 전체 Outlook 개체 모델에 액세스할 수 있음을 보장하지는 않습니다. 예를 들어 Exchange 관리자가 Outlook 개체 모델을 사용하여 주소 정보에 액세스하려는 모든 시도를 자동으로 거부하도록 Outlook을 설정하는 경우 코드 예제에서 신뢰할 ThisAddIn.Application 수 있는 필드를 사용하더라도 Outlook에서 이전 코드 예제에서 To 속성에 액세스하는 것을 허용하지 않습니다.

Exchange를 사용할 때 신뢰할 추가 기능 지정

Exchange에서 Outlook을 사용하는 경우 관리자는 개체 모델 보호가 발생하지 않고 특정 VSTO 추가 기능을 실행할 수 있도록 지정할 수 있습니다. Visual Studio에서 Office 솔루션을 사용하여 만든 Outlook VSTO 추가 기능은 개별적으로 신뢰할 수 없습니다. 그룹으로만 신뢰할 수 있습니다.

Outlook은 VSTO 추가 기능의 진입점 DLL의 해시 코드를 기반으로 VSTO 추가 기능을 신뢰합니다. Visual Studio Tools for Office 런타임을 대상으로 하는 모든 Outlook VSTO 추가 기능은 동일한 진입점 DLL(VSTOLoader.dll)을 사용합니다. 관리자가 Visual Studio Tools for Office 런타임을 대상으로 하는 VSTO 추가 기능이 개체 모델 보호 기능 없이 실행될 수 있도록 신뢰하는 경우, 다른 모든 동일한 런타임을 대상으로 하는 VSTO 추가 기능들도 신뢰할 수 있습니다. 개체 모델 보호가 발생하지 않고 실행할 특정 VSTO 추가 기능을 신뢰하는 방법에 대한 자세한 내용은 Outlook에서 바이러스 예방 기능을 관리하는 데 사용하는 방법 지정을 참조하세요.

권한 변경 내용이 즉시 적용되지 않음

관리자가 문서 또는 어셈블리에 대한 사용 권한을 조정하는 경우 사용자는 해당 변경 내용을 적용하기 위해 모든 Office 응용 프로그램을 종료한 다음 다시 시작해야 합니다.

Microsoft Office 응용 프로그램을 호스트하는 다른 응용 프로그램에서도 새 권한이 적용되지 않도록 방지할 수 있습니다. 사용자는 보안 정책이 변경될 때 Office, 호스팅 또는 독립 실행형을 사용하는 모든 응용 프로그램을 종료해야 합니다.

Microsoft Office 시스템의 보안 센터 설정은 추가 기능 또는 문서 수준 사용자 지정에 영향을 미치지 않습니다.

사용자는 보안 센터에서 옵션을 설정하여 VSTO 추가 기능의 로드를 방지할 수 있습니다. 그러나 Visual Studio에서 Office 솔루션을 사용하여 만든 VSTO 추가 기능 및 문서 수준 사용자 지정은 이러한 신뢰 설정의 영향을 받지 않습니다.

사용자가 보안 센터를 사용하여 VSTO 추가 기능이 로드되지 않도록 하는 경우 다음 유형의 VSTO 추가 기능이 로드되지 않습니다.

  • 관리형 및 관리되지 않는 COM VSTO 추가 기능

  • 관리형 및 관리되지 않는 스마트 문서.

  • 관리형 및 관리되지 않는 Automation VSTO 추가 기능.

  • 관리 및 관리되지 않는 실시간 데이터 구성 요소입니다.

    다음 절차에서는 사용자가 보안 센터를 사용하여 MICROSOFT Office 2013 및 Microsoft Office 2010에서 VSTO 추가 기능이 로드되는 것을 제한하는 방법을 설명합니다. 이러한 절차는 Visual Studio에서 Office 개발 도구를 사용하여 만든 VSTO 추가 기능 또는 사용자 지정에 영향을 미치지 않습니다.

Microsoft Office 2010 및 Microsoft Office 2013 응용 프로그램에서 VSTO 추가 기능을 사용하지 않도록 설정하려면

  1. 파일 탭을 선택합니다.

  2. ApplicationName옵션 단추를 선택합니다.

  3. 범주 창에서 보안 센터를 선택합니다.

  4. 세부 정보 창에서 보안 센터 설정을 선택합니다.

  5. 범주 창에서 추가 기능을 선택합니다.

  6. 세부 정보 창에서 신뢰할 수 있는 게시자가 애플리케이션 추가 기능을 서명하도록 요구 하거나 모든 애플리케이션 추가 기능을 사용하지 않도록 설정합니다.