Flash는 다양한 보안모델을 가진다. 보안모델에 따라 동작하지 않는 경우에는 Flash Player는 여지없이 Security Error를 발생시킨다. 이러한 보안모델이 있으면 개발할 때는 난해하지만 사용자 입장 및 서버 관리자 입장에서 보안문제를 적절히 처리할 수 있기 때문에 안심하고 Flash 어플리케이션을 사용할 수 있는 것이다.

Flash Player 보안에 관련된 것은 다음 글을 보면 자세히 나온다.

Flash Player 보안


각설하고...
SWF파일과 그것을 감싸는 HTML이 동일한 도메인에 위치하는 경우에는 <object>및 <embed> 태그에 allowScriptAccess 매개변수값을 sameDomain이나 always를 지정하는 것만으로 SWF에 ExternalInterface.addCallback() 함수로 자신내부의 메소드를 호출할 수 있게끔 되어 있는 경우 보안상 아무 문제없이 HTML에서 SWF의 메소드를 호출할 수 있다. 다음글을 참고해 보자.

아웃바운드 URL 액세스 제어

하지만 SWF파일과 HTML이 동일한 도메인에 위치하지 않은 경우에는 Flash Player 보안이 더욱 강화된다. allowScriptAccess 매개변수를 기본적으로 allowScriptAccess="always"로 지정해야 하는 것 외에 다른 보안 설정이 필요하다. 그것은 SWF에 Security.allowDomain()  메소드가 가능하게 한다.

SWF가 domain1.com에 있고 HTML이 domain2.com에 있다고 할 때 HTML에서 SWF내에서 ExternalInterface.addCallback()으로 외부접근을 허락한 메소드를 접근하려면 SWF에  Security.allowDomain("domain2.com");을 지정해 주어야 한다. 이 말은 이 SWF는 domain2.com에 있는 HTML에서 접근하는 것을 허락한다는 것을 의미한다.

어떤 도메인에 있던지 SWF 내부의 메소드 접근을 항상 허용하려면 Security.allowDomain("*") 로 지정하면 된다. 하지만 이것은 보안상 좋지 않는 방법이다.

서로 다른 도메인에 있는 SWF와 HTML에 대해서 이런 보안이 있는 이유는 명료하다. 내가 배포한 SWF에 정의된 함수를 HTML에서 접근할 수 있도록 ExternalInterface.addCallback()을 정의했는데, 다른 사람이 다른 도메인에서 이것을 악용할 소지가 있을 수 있기 때문이다.

일반서비스인 domain.com과 파일서버인 file.domain.com을 보자. 두개다 domain.com을 사용하지만 domain.com은 file.domain.com의 슈퍼도메인이다.  이는 Flash Player 6 이전에는 같은 것으로 인식했으나 Flash Player 7이상으로 되면서 다른 도메인으로 인식하게 되었다. 이렇게 된 것은 보안상 문제로 보안정책의 변경이 필요했기 때문이다. file.domain.com에 어떤 사용자가 악성 스크립트를 심은 swf를 업로드 했다고 가정하자. 이때 domain.com과 file.domain.com을 동일하게 인식해버리면 이 swf는 domain.com에 마음대로 접근이 가능해진다. 그래서 flash player는 file.domain.com과 domain.com을 다르게 인식하는 것이다. 이것은 crossdomain정책과 같다.

더 자세한 내용은 다음 글을 참고한다.

Security.allowDomain()에 대해

아쉬운 것은 Security.allowDomain("*.domain.com") 식의 지정이 안된다는 것이다.  crossdomain.xml 설정시에는 와일드카드(*)를 *.domain.com 형태로 사용할 수 있지만 Security.allowDomain()에서 안되는 것은 이외다.

개인적으로 개발환경과 테스트환경, 배포환경이 모두 다르기 때문에 와일드카드 지원이 있으면 좀 편할텐데 하는 아쉬움이 남는다.

글쓴이 : 지돌스타(http://blog.jidolstar.com/675 )



□ 개요

   o Adobe Flash Player에서 입력 검증 오류, 버퍼오버플로, 클릭재킹 등의 다수 취약점이
      발견되어 보안 업데이트가 발표됨[1]
   o 낮은 버전의 Adobe Flash Player 사용으로 악성코드 감염 등의 사고가 발생할 수 있음으로
      사용자의 주의 및 최신버전 설치가 권고됨


□ 해당프로그램

   o Adobe Flash Player 10.0.12.36 이하 버전이 설치된 Linux 제외 모든 운영체제
   o Adobe Flash Player 10.0.12.36 이하 버전 - 내부 네트워크 배포용
   o Adobe Flash Player 10.0.15.3 이하 버전이 설치된 Linux 운영체제
   o Adobe AIR 1.5 버전
   o Adobe Flash CS4 Professional에서 사용되는 Adobe Flash Player 10.0.22.87 이전버전
   o Adobe Flash CS3 Professional에서 사용되는 Adobe Flash Player / Debug Player 9.0.159.0
      이전버전
   o Adobe Flex 3에서 사용되는 Adobe Flash Debug Player 10.0.22.87 이전버전

 

□ 설명

   o Adobe Flash Player 취약점에 대한 보안 업데이트(총 5건)가 아래와 같이 발표됨
     ① Adobe Flash Player가 개체를 삭제하는 과정에서 개체에 할당된 메모리를 적절히 해제하지
         않아 발생하는 원격코드 실행 가능한 버퍼오버플로 취약점[2](CVE-2009-0520)
     ② Adobe Flash Player가 부적절하게 입력 검증하는 과정에서 발생하는 서비스 거부 취약점[3]
        (CVE-2009-0519)
     ③ Adobe Flash Player의 설정 관리자로 인한 클릭재킹 취약점[4](CVE-2009-0114)
     ④ Windows 운영체제에서 마우스 포인터를 출력할 때 발생하는 클릭재킹 취약점[5]
        (CVE-2009-0522)
     ⑤ Linux 운영체제에서 권한 상승으로 연계될 수 있는 정보 노출 취약점[6](CVE-2009-0521)
   o 상기 취약점을 이용하여 공격자는 SWF 파일을 조작하여 피해자의 PC에 악성 스크립트를
      실행시키거나 악성코드 감염 등과 같은 악성행위를 할 수 있음

 

□ 해결방안

   o 다음 표와 같은 버전의 Adobe 제품 사용자는 취약하지 않은 버전으로 업데이트 할 것을 권고함
     ※ 일부 Adobe 제품은 구글 툴바 추가 설치가 기본으로 설정되어 있으니 설치 전 확인 필요

 

   o Adobe Flash 컨텐츠를 사용하는 웹서버 관리자는 아래와 같이 웹페이지를 수정하여
      이용자들이 최신버전 Adobe Flash Player를 설치하도록 ActiveX 버전 수정 필요

< object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#
version=10,0,22,87" width="921" height="109" >

   o 향후에도 유사 취약점 노출로 인한 피해예방을 위해 아래와 같이 안전한 브라우징 습관을
     준수해야 함
      - 신뢰되지 않은 웹사이트의 플래시 파일 다운로드 주의
      - 의심되는 이메일에 포함된 플래시 파일 링크를 방문하지 않음
      - 개인방화벽과 백신제품 사용 등

 

□ 용어 정리

   o 클릭재킹 : 사용자가 웹 페이지를 클릭 할 때 자신도 모르게 의도하지 않은 기능을 실행
      하여 공격자가 컴퓨터에 대한 제어권 혹은 중요 정보를 획득하는 취약점[12]
   o Adobe Flash CS3/CS4 Professional : Adobe Flash 애니메이션 제작을 위한 도구[13]
   o Adobe AIR(Adobe Integrated Runtime) : 이미 입증된 웹 기술을 브라우저 외부 데스크톱
      에서 실행될 수 있도록 도와주는 프로그램 제작 도구[14]
   o Adobe Flex : Adobe Flash Player 또는 Adobe AIR에서 사용할 인터넷 어플리케이션
      개발 도구[15]

 

□ 기타 문의사항

   o 한국정보보호진흥원 인터넷침해사고대응지원센터 : 국번없이 118

 

□ 참고사이트

   [1] http://www.adobe.com/support/security/bulletins/apsb09-01.html
   [2] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0520
   [3] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0519
   [4] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0114
   [5] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0522
   [6] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0521
   [7] http://www.adobe.com/go/getflash
   [8] http://www.adobe.com/products/players/fpsh_distribution1.html
   [9] http://get.adobe.com/kr/air/
   [10] http://www.adobe.com/support/flashplayer/downloads.html#fp10
   [11] http://www.adobe.com/support/flashplayer/downloads.html#fp9
   [12] http://en.wikipedia.org/wiki/Clickjacking
   [13] http://www.adobe.com/kr/products/flash/
   [14] http://www.adobe.com/products/air/
   [15] http://www.adobeflex.co.kr/aboutflex/flex.html

 

출처 : http://www.krcert.net/secureNoticeView.do?seq=-1&num=316

+ Recent posts