Re: Benchmarks Shows That iOS 6 Safari is 17.2% Faster Than iOS 5

네, 이원석님

제가 아는 지식으로는 윈도 시스템의 경우(다른 OS는 모르겠구요, iOS는 허용 안되는 것 같구요) 영역침범이 가능합니다. 

그래서, 관리자 권한 획득하는 웜들이 권한을 획득할 때, 시스템이 30초후 리부팅 됩니다. 와 같은 메시지가 뜨기도 합니다. 

혹시 전문가분 계시면 조언해 주세요. 

봉  재 원(Jèwon Bong)
Sent from my iPhone.

http://j1act.com/applist


On 2012. 7. 3., at 16:40, Wonsuk Lee <wonsuk11.lee@samsung.com> wrote:

> 안녕하세요. 재원님.
> 
> 
>> -----Original Message-----
>> From: Bong봉Jèwon재원 [mailto:jw@j1act.com]
>> Sent: Saturday, June 30, 2012 12:34 AM
>> To: Premist Lee
>> Cc: Wonsuk Lee; mixed; Younggyo Seo; Sangwhan Moon; HTML WG
>> Subject: Re: Benchmarks Shows That iOS 6 Safari is 17.2% Faster Than iOS 5
>> 
>> 첫 글을 써봅니다. ^^
>> 
>> 조금 근원적인 시야에서 본다면..
>> 
>> 제가 아는 짧은 보안지식으로는 실행영역과 데이터 영역을 격리시키는 가장 큰 이유는
>> 
>> 흔히 말하는 버퍼오버플로우 공격을 막기위해서 입니다.
>> 
>> 애플에서 그 부분에 신경을 쓰는 것 같습니다.
>> 
>> 윈도 시스템이 가장 곤욕을 치루는 것이 데이터 영역의 buffer를 overflow하게 write해서 실
>> 행영역을 침범하게 한후,
>> 
>> 그 (데이터 영역에서 침범한) 코드가 실행되게하는 수법(기술?)입니다. 그래서 주기적인 패치를
>> 통해 그런 hole을 막고 있죠.
> 
> 제가 정확히 몰라서 그런데, OS에서 실행영역을 침범하는 것을 허용하나요?
> 이런 것이 문제가 된다면 OS가 데이터 영역을 침범하는 것을 근본적으로 막으면 될 것 같아서 여쭤봅니다.
> 
> 그리고 데이터 영역에서 실행영역을 침범한다면 아마도 데이터 영역의 주소와 연결이 되는 실행영역 일 것 같은데,
> 다른 프로그램이 이미 사용하고 있다면 crash가 나지 않을까요?
> 
> 제가 아는 지식으로 질문을 해봅니다^^
> 
> 
> 이원석 드림. 
> 
> 
>> 다 아시는 내용이라면 젠틀하게 패스~ 부탁드립니다. ^^
>> 
>> 봉 재 원
>> http://JewonAgency.com

>> 
>> 
>> 2012. 6. 29., 오후 11:15, Premist Lee 작성:
>> 
>>> 네, 또한 사파리에서 사용되는 Nitro 엔진도 보안 상의 문제로 애플이 막아놓은 상태입니다.
>> 벤치마크 해 보니 속도가 약간 느리더군요.
>>> 
>>> 아 그리고 구글이 SPDY 지원을 넣긴 넣었더군요. 래핑만 한 건 아닌 것 같네요;
>>> 
>>> 
>>> --
>>> Minku Lee
>>> http://si.mpli.st/

>>> http://twitter.com/premist

>>> http://fb.me/premist.lee

>>> 
>>> 
>>> On Jun 29, 2012, at 3:01 AM, Wonsuk Lee <wonsuk73@gmail.com> wrote:
>>> 
>>>> 안녕하세요~
>>>> 
>>>> 예. 재밌네요~ 애플이 구글이 독립적으로 자체 브라우저 엔진을 사용하는 것을 허용하지 않는
>> 걸까요?? 궁금하네요~^^
>>>> 
>>>> 이원석 드림.
>>>> 
>>>> 2012년 6월 29일 오전 8:48, mixed <i.nevalose@gmail.com>님의 말:
>>>>> 안녕하세요. 전용우입니다.
>>>>> 전에 문상환님이 iOS에서 크롬이 나오는것에 회의적이며 나와도 반쪽 짜리 크롬이 나올것이
>> 라고 하셨는데 정확하시네요.
>>>>> 
>>>>> 오늘 본 트윗인데 iOS버전의 크롬이 나오는데 렌더링/JS엔진은 iOS에서 제공하는 걸 쓴다고
>> 하네요.
>>>>> 거의 랩핑한 수준이네요.
>>>>> 
>>>>> --------------
>>>>> @viviancromwell: Chrome for iOS provides the same browsing experience
>> you've
>>>>> on desktop/Android. Rendering/JS engine are provided by iOS so it
>> doesn't
>>>>> use V8
>>>>> -------------
>>>>> 
>>>>> 
>>>>> On Friday, June 15, 2012, mixed wrote:
>>>>>> 
>>>>>> 안녕하세요. 전용우입니다.
>>>>>> 
>>>>>> 제가 이해하는데 구멍이 있던 부분이 sandbox부분이였는데 쉽게 설명해주셔서 이해가 잘
>> 됐습니다.
>>>>>> 
>>>>>> 감사합니다.^^
>>>>>> 
>>>>>> 
>>>>>> 2012/6/15 Younggyo Seo <seo.younggyo@gmail.com>
>>>>>> 
>>>>>> 안녕하세요.
>>>>>> 
>>>>>> 코드로 설명해 주시니 명확하게 이해되네요.
>>>>>> 감사합니다.
>>>>>> 
>>>>>> 서영교 드림
>>>>>> 
>>>>>> 2012년 6월 15일 오후 2:59, Sangwhan Moon <sangwhan.moon@hanmail.net>님의
>> 말:
>>>>>> 
>>>>>> 안녕하세요.
>>>>>> 
>>>>>> 얼마전에 언급된 "크롬이 아이패드로 나온다" 였던가의 메일에서 에서
>>>>>> 크롬 포팅 가능성에 대해서 회의적인 입장으로  간단하게 언급했습니다만...
>>>>>> 
>>>>>> On Jun 14, 2012, at 11:10 PM, Wonsuk Lee wrote:
>>>>>> 
>>>>>>> 안녕하세요.
>>>>>>> 먼저 좋은 답변 감사합니다~
>>>>>>> 아래와 같이 inline comment를 달았습니다~
>>>>>>> 
>>>>>>> 
>>>>>>> 2012년 6월 14일 오후 2:25, Younggyo Seo <seo.younggyo@gmail.com>님의 말:
>>>>>>>> 안녕하세요. 오비고 서영교 입니다.
>>>>>>>> 
>>>>>>>> 저도 궁금해서 좀 더 구글링을 해봤습니다.
>>>>>>>> 전용우 그룹장님 의견에 추가하여,
>>>>>>>> 
>>>>>>>> 일반적인 Native Application은 크게 코드 영역과 실행 영역으로 나눌 수 있을 것이
>> 고, 컴파일 이후에는 코드 영영의
>>>>>>>> 변경은 이루어 지지 않을 것 입니다.
>>>>>> 
>>>>>> 이 부분에 내용이 조금 틀린 부분이 있습니다. text 와 data 두가지로 크게 나뉘는데,
>>>>>> text가 code라고 불리기도 합니다. (대부분의 disassembler나 debugger는 text라는
>>>>>> 명칭을 사용합니다) data는 말 그대로 data입니다.
>>>>>> 
>>>>>> "실행이 가능한" segment라고 하면 마찬가지로 text가 아닐까 생각됩니다.
>>>>>> 
>>>>>>> 그런데 코드영역과 실행영역이 정확히 어떤 것을 이야기 하는 것인가요?
>>>>>>>> 하지만 JIT이 동작하기 위해서는 Native Application이 실행된 다음, 실시간으로 코
>> 드 영역이 생성되어 져야
>>>>>>>> 합니다.
>>>>>>>> 그러나 iOS에서는 Application의 실행 중, 코드 영역을 생성하여 실행할 수 없도록하
>> 는 보안 정책을 가지고 있다고
>>>>>>>> 합니다.
>>>>>>>> - iOS 전문가님의 의견 필요 ^^
>>>>>> 
>>>>>> 조금 더 정확히는 mmap으로 시스템으로 부터 실행 가능한 페이지 (PROT_EXEC)를
>>>>>> 할당받아서 사용합니다. 이 접근을 사용하는 것이 Sandbox 안에서는 불가능합니다.
>>>>>> 
>>>>>> 예> void* executable_code_page = mmap(NULL, 8192,
>>>>>> PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
>>>>>> 
>>>>>> ARM의 경우.. 여기에서 executable_code_page를 32-bit align한 후 실행하고 싶은
>>>>>> 코드를 전부 넣고, 마지막에 BX R14을 넣어준 다음, 호출하면 주입한 코드가 전부
>>>>>> 실행이 된 다음에 반환됩니다.
>>>>>> 
>>>>>> 물론 아키텍쳐에 따라서 접근은 달리 해야 합니다. 자세한 내용은 책이 아닌 관계로
>>>>>> 생략하겠습니다.
>>>>>> 
>>>>>>>> 애플에서는 이 보안 정책을 Safari 에서만 예외가 가능하도록 처리해 놓았기 때문에,
>> Safari에서만 nitro가 동작가능한
>>>>>>>> 것
>>>>>>>> 같습니다.
>>>>>> 
>>>>>> 애플에서 내보내는 Safari는 Sandbox안에서 돌아가지 않기 때문에 가능한 것입니다.
>>>>>> App store에서 다운로드 받은 어플리케이션은 전부 Sandbox context 안에서 실행되기
>>>>>> 때문에 그 안에서 dynamic link된 UIKit.framework에서 UIWebView를 사용하게 될
>>>>>> 경우 해당 Webview에서 사용하는 Webkit의 실행 context가 Sandbox안에 있기 때문에
>>>>>> 위와 같이 실행 가능한 코드를 주입하는 것이 불가능합니다.
>>>>>> 
>>>>>> 코드를 열어보지는 않았습니다만, 아마 자바스크립트 엔진에서 sandbox 안에 있는지 또는
>>>>>> UIWebView에서 호출되었는지 assert 후 실패할 경우 interpreter모드로 fallback을
>> 할 것으로
>>>>>> 추정됩니다. 만약에 UIWebView를 jailbreak된 상태에서 사용할 경우 JIT가 동작한다면
>> 후자
>>>>>> 일 것이고, jailbreak를 했어도 JIT가 비활성화되어 있다면 전자로 생각하시면 됩니다.
>>>>>> 
>>>>>> (여담으로 전자가 구현하기 쉽고 오류의 여지가 상대적으로 적기 때문에 저라면 전자로 했
>> 을겁니다.)
>>>>>> 
>>>>>> 단적인 예로... Safari는 Sandbox안에 있지 않았었기 때문에 Freetype 취약점을 이용
>> 한
>>>>>> Jailbreakme 3.0이 가능했던것입니다.
>>>>>> 
>>>>>>>> 또한 이런 이유로 Webkit2가 Safari on iOS 에에 적용되면 WebView에서도 nitro의
>> 사용이 가능하다고
>>>>>>>> 말하고 있는 것 같습니다.
>>>>>>>> - Webkit2의 경우 UI와 엔진이 프로세스로 분리되어 동작하고 있는 것으로 압니다.
>>>>>>> 
>>>>>>> Webkit2에서는 UI 프로세스와 Web 프로세스로 분리되어 있기는 합니다만 이렇게 되는
>> 경우에 왜 Nitro 적용이
>>>>>>> 가능한지는 정확히 이해가 되지 않습니다^^;
>>>>>>> 혹시 좀더 자세히 설명이 가능할 까요?
>>>>>> 
>>>>>> 위에 설명이 되었을것이라고 생각됩니다. (고용주와 관계 상 Webkit에 대해서 더 자세하
>> 게
>>>>>> 이야기하지 못하는 점, 양해 바랍니다.)
>>>>>> 
>>>>>> 애플에서 보안 정책을 갑자기 변경하지 않는 이상, 상기와 같은 이유로 iOS에 Opera
>> Mobile이나
>>>>>> Firefox, Chromium이 나오더라도 반쪽짜리 제품이 나올것이라고 생각됩니다.
>>>>>> 
>>>>>> (추가적으로 App store review guideline 현행 버전에 의하면 additional
>> executable code에
>>>>>> 대해서 명시적으로 언급이 되어 있기 때문에, 그게 바뀌기 전까지는 브라우저도 게임기 에
>> 뮬레이터도
>>>>>> 전부 정책 변경이 이루어질때까지는 불가능합니다.)
>>>>>> 
>>>>>> 감사합니다.
>>>>>> 문상환 배상
>>>>>> 
>>>>>>>> 
>>>>>>>> http://code.google.com/p/v8/issues/detail?id=1312

>>>>>>>> - I was told that the problem with getting V8 to run on iOS was the
>>>>>>>> fact
>>>>>>>> that JIT compilation could not be supported due to Apple disabling
>>>>>>>> writable
>>>>>>>> and executable memory regions.
>>>>>>>> 
>>>>>>>> http://news.ycombinator.com/item?id=2317804

>>>>>>>> -  A JIT works by compiling some chunk of code into a section of
>>>>>>>> executable
>>>>>>>> memory, then jumping to that location. As I understand it, iOS
>> hasn't
>>>>>>>> previously allowed execution of code from "data memory" (various
>> people
>>>>>>>> were
>>>>>>>> curious about this very thing when it was announced they were
>> shipping
>>>>>>>> a
>>>>>>>> JIT).
>>>>>>>> 
>>>>>>>> 서영교 드림
>>>>>>>> 
>>>>>>>> 2012년 6월 14일 오전 9:37, mixed <i.nevalose@gmail.com>님의 말:
>>>> 
>>>> 
>>>> 
>>>> --
>>>> 
>>>> =========================================
>>>> 이 원 석 (Wonsuk, Lee) / Principal Engineer, Ph.D
>>>> SAMSUNG ELECTRONICS Co., LTD. (三星電子)
>>>> Mobile: +82-10-5800-3997
>>>> E-mail: wonsuk11.lee@samsung.com, wonsuk73@gmail.com
>>>> http://www.wonsuk73.com/, twitter: @wonsuk73
>>>> -----------------------------------------
>>>> Inspire the World, Create the Future !!!
>>>> =========================================
>> 
>> 
>> 
>> 봉재원(Jèwon Bong)
>> jw@j1act.com
>> 
>> http://j1act.com/applist

> 

Received on Tuesday, 3 July 2012 08:25:12 UTC