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

안녕하세요.

얼마전에 언급된 "크롬이 아이패드로 나온다" 였던가의 메일에서 에서
크롬 포팅 가능성에 대해서 회의적인 입장으로  간단하게 언급했습니다만...

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>님의 말:
>> 
>>> JIT는 실행시점에 컴파일되서 올라가기 때문에 이때 뭔가 조작해서 수정할 수 있어 보안에 문제가 될수 있다는 말이네요.
>>> 반면에 전통적인 컴파일러는 프로그램 시작하기 전에 하기 때문에 괜찮구요.
>>> 
>>> 
>>> http://stackoverflow.com/questions/95635/what-does-a-just-in-time-jit-compiler-do

>>> 
>>> 제가 이해하기로는 그런데 맞는지는 확신을 못하겠네요 ㅎㅎ
>>> 
>>> 
>>> 
>>> On Thursday, June 14, 2012, Wonsuk Lee wrote:
>>>> 
>>>> 전용우 그룹장님.
>>>> 
>>>> 저도 사실 내용이 정확히 이해가 가지는 않습니다^^ 전문가의 도움이 필요할 듯하네요 ㅎㅎ
>>>> 
>>>> 이 글이 맞다면 보안 이슈로 iOS의 Webview는 JIT을 사용하지 않는 것입니다. 그런데 iOS의 Webview에 JIT을
>>>> 사용했을 때(Nitro를 적용했을 때) 어떤 경우의 문제 때문에 Security 이슈가 있는 것인지는 이해가 정확히 가지 않네요 ;)
>>>> 
>>>> 
>>>> 
>>>> 혹시 아시는 분계시면 설명 부탁드립니다~^^
>>>> 
>>>> 
>>>> 
>>>> 이원석 드림.
>>>> 
>>>> 
>>>> 
>>>> From: mixed [mailto:i.nevalose@gmail.com]
>>>> Sent: Thursday, June 14, 2012 8:20 AM
>>>> To: Wonsuk Lee
>>>> Cc: public-html-ig-ko@w3.org
>>>> Subject: Re: Benchmarks Shows That iOS 6 Safari is 17.2% Faster Than iOS
>>>> 5
>>>> 
>>>> 
>>>> 
>>>> 아... 사실 몰랐습니다.
>>>> 
>>>> 좋은 자료 감사합니다.^^
>>>> 
>>>> 근데 글을 보면 안드로이드가 되는가봐서 수정이 안되지는 않을것 같은데 모르겠네요.
>>>> 
>>>> 
>>>> 
>>>> 느낌이 보안은 밖에다 말하는 핑계같고 실제 이슈는 다른게 있을것 같네요. ㅋㅋ
>>>> 
>>>> JIT로 바꾸는건 쉽게 되지만 전에 iOS의 뭔가를 먼저 수정해야하는데 이게 너무 공수가 커서 못하는 느낌?^^;
>>>> 
>>>> 
>>>> 
>>>> 여튼 모던 자바스트립트 엔진은 모두 JIT컴파일을 하는데... 뭔가 좀 이상하네요.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Thursday, June 14, 2012, Wonsuk Lee wrote:
>>>> 
>>>> 전용우 그룹장님.
>>>> 아마도 Webview에 Nitro가 올라가기는 어려울 겁니다^^ 아마도 아실 것 같은데 Security issue가 있어서
>>>> 그렇습니다. 자세한 내용은 [1]을 참고하세요~
>>>> 
>>>> [1] http://www.imore.com/2011/03/17/safari-nitro-web-clips-uiwebview/

>>>> 
>>>> 이원석 드림.
>>>> 
>>>> 2012년 6월 13일 오후 11:42, mixed <i.nevalose@gmail.com>님의 말:
>>>>> 근데 아쉽게도 iOS6의 webview에 아직도 nitro엔진이 안올라간게 함정이네요.
>>>>> 정식으로 릴리즈될 때는 nitro엔진이 올라갔으면 좋겠어요.
>>>>> 
>>>>> 
>>>>> On Wed, Jun 13, 2012 at 10:42 PM, Wonsuk Lee <wonsuk73@gmail.com>
>>>>> wrote:
>>>>>> 
>>>>>> 안녕하세요.
>>>>>> 애플의 HW와 SW 최적화 기술은 정말 대단하네요. iOS6 Safari Browser도 iOS5때 보다 17% 정도 성능
>>>>>> 향상이 되었다고 합니다^^
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> http://cellphonequick.com/benchmarks-shows-that-ios-6-safari-is-17-2-faster-than-ios-5/

>>>>>> 
>>>>>> 이원석 드림.
>>>>>> =========================================
>>>>>> 이 원 석 (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 !!!
>>>>>> =========================================
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> 
>>>> =========================================
>>>> 이 원 석 (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 !!!
>>>> =========================================
>> 
>> 
> 
> 
> 
> -- 
> 
> =========================================
> 이 원 석 (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 !!!
> =========================================

Received on Friday, 15 June 2012 05:59:55 UTC