'이미지파일'에 해당되는 글 2건

  1. 2013.11.06 MS 그래픽 컴포넌트 원격코드 실행 취약점 주의
  2. 2009.09.23 안전한 PHP 파일 업로드 구현 체크 리스트
2013.11.06 18:07

MS 그래픽 컴포넌트 원격코드 실행 취약점 주의

개요

  • 마이크로소프트社의 윈도우, 오피스, 링크 제품에서 원격코드 실행이 가능한 신규 취약점이 발견됨[1]
  • 사용자는 공격자가 특수하게 제작한 TIFF 이미지 파일이 삽입된 오피스 문서, 이메일, 웹페이지 등을 열람할 경우, 악성코드에 감염될 수 있음
  • 해당 취약점에 대한 보안 업데이트는 아직 발표되지 않았으며, 취약점을 악용한 공격 시도가 확인되어 사용자의 주의가 특히 요구됨
    ※ TIFF(Tagged Image File Format) : 앨더스社 와 마이크로소프트社가 공동 개발한 래스터 화상 파일 형식


해당 시스템

  • 영향을 받는 소프트웨어
    Windows Vista 서비스 팩 
    - Windows Vista x64 Edition 서비스 팩 2
    - Windows Server 2008 for 32-bit Systems 서비스 팩 2
    - Windows Server 2008 for x64-based Systems 서비스 팩 2
    - Windows Server 2008 for Itanium-based Systems 서비스 팩 2
    - Microsoft Office 2003 서비스 팩 3
    - Microsoft Office 2007 서비스 팩 3
    - Microsoft Office 2010 서비스 팩 1 (32-bit editions)
    - Microsoft Office 2010 서비스 팩 2 (32-bit editions)
    - Microsoft Office 2010 서비스 팩 1 (64-bit editions)
    - Microsoft Office 2010 서비스 팩 2 (64-bit editions)
    - Microsoft Office Compatibility Pack 서비스 팩 3
    - Microsoft Lync 2010 (32-bit)
    - Microsoft Lync 2010 (64-bit)
    - Microsoft Lync 2010 Attendee
    - Microsoft Lync 2013 (32-bit)
    - Microsoft Lync Basic 2013 (32-bit)
    - Microsoft Lync 2013 (64-bit)
    - Microsoft Lync Basic 2013 (64-bit)
      ※ 자세한 내용은 참조사이트 참고


권장 방안

  • 취약점으로 인한 위협을 경감시키기 위해 다음의 조치를 취할 수 있음
    - 마이크로소프트社에서 제공하는 Fix it 51004(좌측 아이콘)를 다운로드 후 실행[2]
  •  ※ 해당 Fix it은 보안 업데이트를 대체할 수는 없으며, 보안 업데이트 발표 시 반드시 보안 업데이트를 적용해야함
     ※ Fix it 적용을 해제하기 위해서는 Microsoft Fix it 51005(우측 아이콘)을 다운로드 후 실행 [2]

    - 출처가 불분명한 문서파일, 이메일 등을 열어보지 않음
    - 사용하고 있는 백신프로그램의 최신 업데이트를 유지하고, 실시간 감시기능을 활성화


기타 문의사항

  • 한국인터넷진흥원 인터넷침해대응센터: 국번없이 118

[참고사이트] 
[1] http://technet.microsoft.com/en-us/security/advisory/2896666
[2] https://support.microsoft.com/kb/2896666


Trackback 0 Comment 0
2009.09.23 19:26

안전한 PHP 파일 업로드 구현 체크 리스트

1. Content Type 검증

$_FILES['uploadfile']['type']로 MIME type 검증

* PHP가 받아오는 MIME type은 웹브라우저가 넘겨주는 값을 그대로 쓴다. 대다수 웹브라우저들은 확장자로 MIME type을 결정하기 때문에 신뢰도가 떨어지는 건 어쩔 수 없다.

 

2. Image 파일 검증

$imageInfo = getimagesize($_FILES['uploadfile']['tmp_name']);
getimagesize로 MIME type 검증하기

* 이미지 업로드시 쓰는 방법이다. 이미지라면 제대로 값을 return 해주지만 그렇지 않으면 return을 못한다.

 

3. 확장자 검증

$filename = $strtolower($_FILES['uploadfile']['name']);
$fileInfo = pathinfo($filename);
echo $fileInfo['extension'];

* '.'단위로 explode해서 end로 확장자를 구하는 게 원문이지만, pathinfo 함수로도 확장자를 구할 수 있다. 여튼 이것도 확장자로만 검사하기 때문에 당연히 정확한 건 아니다. 가장 좋은 거야 당연히 파일 내용 자체를 검사하는 거지만, 성능 손해가 만만치 않기에 -0-...

 

4. 업로드 디렉토리

검증이라고는 생각이 안 되지만, 어느 정도의 방어 수단인 것 같다.

내 경우에는 이미지만 받는 게 보통이라서 업로드 디렉토리와 다운로드 디렉토리가 같다. (-_-;;)

물론 그렇지 않은 경우에는 업로드 디렉토리는 외부에서 접근 불가능하고 다운로드 프로그램으로만

다운로드 하도록 한다.

또한 업로드 파일이 너무 많아지면 훗날 한 디렉토리에 파일이 많아지므로 년 + 월로 매번 디렉토리를 생성해서

업로드를 한다.

예) 2009년 8월이면 /upload/200908

 

5. Include Function

원문에 있길래 적어놓기는 하는데... 사용자 입력 값만을 믿고 import하는 건 잘못된 거다.

왜 이런 예가 있는지 이해가 안 된다.

정 사용자 입력 값으로 import를 해야한다면,

switch ($_GET['import']) {
    case 'foo':
        include $_GET['import'].'.php';
        break;

    case 'abc':
        include $_GET['import'].'.php';
        break;

    default:
        include 'qwe.php';
        break;
}

이런 식으로 정확한 값만 통과할 수 있도록 해야 된다고 생각한다.

원문의 예제는 단지 isset만으로 값이 넘어왔나 안 넘어왔나만 확인 하는데... 만약 빈 값으로 넘기면 어쩌려고?

GET, POST, COOKIE는 사용자 입력 값이다. 언제든 위변조가 가능하다. SESSION도 따지고 보면 사용자 입력

값에 의해 가공되므로 SESSION도 100% 믿으면 안 된다.

 

6. 임의 파일명

난 사용자가 올린 파일명을 그대로 안 쓴다.

한글 파일명은 UTF-8 다시 보내기 문제도 있고, 이래저래 사용자 입력 값보다 더 무서운 게 사용자가 올리는

파일이기 때문이다. 내 경우에는

랜덤값 여섯자리 + 타임스탬프

로 파일명을 정한다.


출처 : http://www.cyworld.com/maengis


Trackback 0 Comment 0