Notice»

Recent Post»

Recent Comment»

Recent Trackback»

Archive»

« 2024/11 »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Visual Studio ATL 보안 업데이트

Microsoft Visual Studio 2008 서비스 팩 1 보안 업데이트에 대한 설명: 2009년 7월 28일

Active Template Library Security Update for Developers

2009년 7월 30일 MS 긴급 보안공지 - 찌롱님 정리

M$가 Visual Studio 2003~2008을 위한 ATL관련 보안 업데이트를 발표했다. 아래 링크와 해당 버젼이 다를경우는 아래 관련 링크에서 원하는 툴의 버젼을 찾을 수 있다.(서비스팩에 따른 버젼 제공)
Visual Studio 2008 Service Pack 1 ATL Security Update

위 업데이트를 설치하면 VC가 사용하는 CRT,MFC,ATL등의 DLL버젼이 달라진다.
재배포 패키지(Redistributable Package)
Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update

설치가 잘 안될경우 아래 링크를 참조하자.
Hotfix KB 971092 for Visual Studio 2008 SP1 install problems

설치후 컴파일 에러가 날경우
Visual Studio 2008의 ATL 보안업데이트 이후 발생하는 컴파일 에러 문제

2005부터는 재배포패키지라는 개념이 도입되어 배포방법이 까다로워(?) 졌다. 서비스팩이 업데이트 될경우 재배포 패키지 또한 변경해줘야한다. 사용자 입장에선 이게 좀 불편한편인데.. 물론 대상 컴퓨터가 x86의 일반적인 CPU를 사용하는 환경이라면 재배포 패키지에서 사용하는 DLL만 가져온후 같이 배포하면 이문제가 거의 대부분 해결되기는 한다.

하지만 이번에 업데이트된 프로그램 배포시는 재배포 패키지가 항상 필요할 듯 하다. 아래 내용참고.

재배포 패키지의 DLL 버젼(VS 2008 기준)

9.0.21022.8 - 2008 기본 버젼

9.0.30729.1 - sp1

9.0.30729.4148 - sp1에 ATL관련 보안 업데이트시


Manifest에 명시되는 사용 DLL버젼
- crt와 mfc 기본만 사용할 경우.

기존 sp1 프로그램
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
9.0.30729.1 버젼의 crt와 mfc라이브러만 명시되어 있음.

sp1에 ATL 보안 업데이트시
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
9.0.30729.1과 9.0.30729.4148 CRT를 둘다 필요로 한다. 버젼은 달라도 CRT의 이름은 다르므로 DLL만 포함하면 실행이 안된다. 그러므로 일반적으로 dll을 포함하던 방법으론 프로그램이 제대로 실행되지 않을 것이다.

배포할 일에 많은 개발자가 아무생각없이 자동 업데이트 했다가는 사무실이 뒤집어 질꺼다;(필자의 경험담? ㅡ.ㅡa)

ATL 보안업데이트 삭제

위와 같이 바뀌어도 인스톨쉴드에 파일 하나만 바꾸면 되는거 아니나는 분들에겐 할말 없지만 조금이라도 불편해서 삭제하고 싶은 분들은 참고하기 바란다.(아래는 필자의 경험담이며 공식문서 확인시 변경될수 있다)

위 보안 업데이트를 삭제하는 방법은 공식 문서에는 프로그램 추가/삭제에서 제거 해주면 된다고 명시되어 있다. 하지만 재배포 패키지 관련 업데이트만 목록에 존재하며 삭제를 해도 VS와는 전혀 상관없다. 윈도우 복원을 날짜를 되돌려도 설정은 바뀌지 않는다. 그래서 필자가 택한 방법은 VS를 전체 삭제하고 재설치 하는거였다 ㅡ.ㅡ; 전체삭제하고 재설치를 해도 기본 설정값들은 전부 남아있어서 크게 불편한점은 없었고 안전하게(?) 이전 버젼의 DLL을 사용한다.

위방법 적용후 필자의 결론은 추가/제거에서 관련 업데이트를 삭제후 기존에 사용하던 서비스팩만 재설치해도 문제가 해결될꺼같다는 거다.


인스톨에 대한 거부감과 DLL업데이트후 재배포 패키지를 설치해야된다는 말에 지대로 거부감 날려주신 클라이언트로 인해 이번업데이트에 대해 정리해본다. 사실 별 내용은 아닌데 결론은 개발자용 PC에 아무리 중요한 업데이트라도 아무생각없이 막 설치해서는 안된다는거다.(응?)

원본 글
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8351&page=1

: