2012-04-17 2 views
3

나는 사용자가 제출 한 이미지를 표시하는 웹 사이트를 운영하고 있습니다. 일부 브라우저는 브라우저 렌더링 엔진에서 일부 0 일 취약점을 악용 할 수있는 이미지를 업로드하는 데 우려하고 있습니다. 또한 메타 데이터 (EXIF 데이터와 같은)의 이미지를 제거하고 무손실 방식으로 추가로 압축하려고합니다 ( ). PNG 및 JPEG 용 명령 줄 유틸리티가 여러 개 있습니다.이미지 살균 라이브러리

마음에 위와 같이, 내 질문은 다음과 같습니다 : 일부 C/C++ 라이브러리는 위의 시나리오를 충족 시키는가? 그리고 분석의 전체 파이프 라인의 경우에도 ->이 퍼지 -> 살균 ->이 압축 -> 퍼지 ​​- -> 살균 -> 쓰기> 를 작성 내가 적어도 분석을 구현할 수있는 단일 라이브러리에서 사용할 수 없습니다 JPEG/PNG/GIF를 지원하는 라이브러리의 파이프 라인 (압축하지 않음)?

답변

5

당신이 사용하는 이미지 읽기 라이브러리 중 하나에 0 일간의 취약점이있는 경우 들어오는 파일을 구문 분석하고 정리할 때 코드가 악용 될 수 있습니다. 이미지가 수신되는 즉시 "presanitizing"함으로써, 착취 포인트를 나중에보다는 일찍 이동시킬 수 있습니다.

유일한 도움이 될 것은 샌드 박스에서 들어오는 이미지를 구문 분석하고 위생 처리하는 것이므로 최소한 취약점이있는 경우 샌드 박스에 포함됩니다. 샌드 박스는 bytestream만으로 구성된 인터페이스와 함께 이미지가 사라진 상태 인 chroot 환경 (또는 VM, 매우 편집증적인)에서 권한이없는 사용자로 실행되는 별도의 프로세스 일 수 있습니다.

위생 처리 자체는 ImageMagick으로 이미지를 열고, 래스터로 디코딩 한 다음 다시 인코딩하여 표준 형식 (예 : PNG 또는 JPEG)으로 내보낼 수 있습니다. 입력과 출력이 둘 다 손실 된 형식 (예 : JPEG) 인 경우이 변환은 손실이됩니다.

+0

예, 제 생각은 밀폐 된 환경에서 위생 처리를 실행하는 것이 었습니다. 합리적인 이유는 내가 위생 처리를 완벽하게 통제 할 수 있으며 자신과 내 사용자를 그렇게 보호 할 수 있다는 것입니다. –

+0

"인터페이스는 bytestream만으로 구성된 인터페이스로, 새 니타 이징 된 이미지가 출력됩니다." 사람들이 원격 코드 실행을 허용하는 ImageMagick의 최근 취약점을보고함에 따라 ...이 샌드 박스에서 사용할 수있는 것을 제한해야합니다. 아웃 바운드 HTTP 트래픽을 허용하는 것과 같은 간단한 일조차도 호스트가 DDoS 공격과 같은 상황에서 사용할 수있게하는 데까지 열어 줄 수 있습니다. – cphoover