精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Safari信息泄露漏洞分析

安全 漏洞
從某種程度上來說,這個安全問題跟lokihardt在2017年報告的一個 舊漏洞有些相似,只不過利用方式不同。

前言

Javascript中的數組和數組對象一直都是編程人員優化的主要目標,一般來說,數組只會包含一些基本類型數據,比如說32位整數或字符等等。因此,每個引擎都會對這些對象進行某些優化,并提升不同元素類型的訪問速度和密集型表示。

[[248537]]

在JavaScriptCore中,JavaScript引擎是在WebKit中實現的,其中每一個存儲在對象中的元素都代表著一個IndexingType值,一個8位整數代表一套Flag組合,具體的參數定義可以在IndexingType.h中找到。接下來,引擎會檢測一個對象中indexing的類型,然后決定使用哪一條快速路徑,其中最重要的一種indexing類型就是ArrayWithUndecided,它表示的是所有元素均為未定義(undefined),而且沒有存儲任何實際的值。在這種情況下,引擎為了提升性能,會讓這些元素保持未初始化。

分析

下面,我們一起看一看舊版本中實現Array.prototype.concat的代碼(ArrayPrototype.cpp):

  1. EncodedJSValueJSC_HOST_CALL arrayProtoPrivateFuncConcatMemcpy(ExecState* exec)  
  2.  
  3.     ...  
  4.     unsigned resultSize =checkedResultSize.unsafeGet();  
  5.     IndexingType firstType =firstArray->indexingType();  
  6.     IndexingType secondType =secondArray->indexingType();  
  7.     IndexingType type =firstArray->mergeIndexingTypeForCopying(secondType); // [[ 1 ]]  
  8.     if (type == NonArray ||!firstArray->canFastCopy(vm, secondArray) || resultSize >=MIN_SPARSE_ARRAY_INDEX) {  
  9.         ...  
  10.     }  
  11.     JSGlobalObject* lexicalGlobalObject =exec->lexicalGlobalObject();  
  12.     Structure* resultStructure =lexicalGlobalObject->arrayStructureForIndexingTypeDuringAllocation(type);  
  13.     if(UNLIKELY(hasAnyArrayStorage(resultStructure->indexingType())))  
  14.         return JSValue::encode(jsNull());  
  15.    ASSERT(!lexicalGlobalObject->isHavingABadTime());  
  16.     ObjectInitializationScopeinitializationScope(vm);  
  17.     JSArray* result =JSArray::tryCreateUninitializedRestricted(initializationScope, resultStructure,resultSize);  
  18.     if (UNLIKELY(!result)) {  
  19.         throwOutOfMemoryError(exec, scope);  
  20.         return encodedJSValue();  
  21.     }  
  22.     if (type == ArrayWithDouble) {  
  23.         [[ 2 ]]  
  24.         double* buffer =result->butterfly()->contiguousDouble().data();  
  25.         memcpy(buffer,firstButterfly->contiguousDouble().data(), sizeof(JSValue) *firstArraySize);  
  26.         memcpy(buffer + firstArraySize,secondButterfly->contiguousDouble().data(), sizeof(JSValue) *secondArraySize);  
  27.     } else if (type != ArrayWithUndecided) {  
  28. ... 

這個函數主要用來判斷結果數組[[1]]的indexing類型,我們可以看到,如果indexing類型為ArrayWithDouble,它將會選擇[[2]]作為快速路徑。接下來,我們看一看:

mergeIndexingTypeForCopying的實現代碼,這個函數主要負責在Array.prototype.concat被調用時,判斷結果數組的indexing類型:

  1. inlineIndexingType JSArray::mergeIndexingTypeForCopying(IndexingType other)  
  2.  
  3.     IndexingType type = indexingType();  
  4.     if (!(type & IsArray && other& IsArray))  
  5.         return NonArray;  
  6.     if (hasAnyArrayStorage(type) ||hasAnyArrayStorage(other))  
  7.         return NonArray;  
  8.     if (type == ArrayWithUndecided)  
  9.         return other; [[ 3 ]]  
  10. ... 

我們可以看到在這種情況下,有一個輸入數組的indexing類型為ArrayWithUndecided,結果indexing類型將會是另一個數組的indexing類型。因此,如果我們我們用一個indexing類型為ArrayWithUndecided的數組和另一個indexing類型為ArrayWithDouble的數組去調用Array.prototype.concat方法的話,我們將會按照快速路徑[[2]]運行,并將兩個數組進行拼接。

這段代碼并不能保證這兩個“butterfly”(JavaScript引擎攻擊技術里的一種概念,詳情請參考【這篇文章】)在代碼調用memcpy之前能夠正確初始化。這也就意味著,如果我們能夠找到一條允許我們創建一個未初始化數組并將其傳遞給Array.prototype.concat的代碼路徑,那我們就能夠在堆內存中擁有一個包含了未初始化值的數組對象了,而且它的indexing類型還不是ArrayWithUndecided。從某種程度上來說,這個安全問題跟lokihardt在2017年報告的一個舊漏洞有些相似,只不過利用方式不同。

在創建這種數組對象時,可以利用NewArrayWithSize DFG JIT的操作碼來實現,在對FTLLowerDFGToB3.cpp中FTL所實現的allocateJSArray操作碼進行分析之后,我們可以看到這個數組將會包含未初始化的值。引擎根本不需要對數組進行初始化,因為這個數組的indexing類型為ArrayWithUndecided。

  1. ArrayValuesallocateJSArray(LValue publicLength, LValue vectorLength, LValue structure,LValue indexingType, bool shouldInitializeElements = trueboolshouldLargeArraySizeCreateArrayStorage = true 
  2.  
  3.     [ ... ]  
  4.     initializeArrayElements(  
  5.        indexingType,  
  6.        shouldInitializeElements ?m_out.int32Zero : publicLength, vectorLength,  
  7.        butterfly);  
  8. ...  
  9. voidinitializeArrayElements(LValue indexingType, LValue begin, LValue end, LValuebutterfly)  
  10.  
  11.     if (begin == end)  
  12.         return;    
  13.     if (indexingType->hasInt32()) {  
  14.         IndexingType rawIndexingType =static_cast<IndexingType>(indexingType->asInt32());  
  15.         if (hasUndecided(rawIndexingType))  
  16.             return;  // [[ 4 ]] 

語句new Array(n)在被FTL JIT編譯時將會觸發[[4]],然后返回一個indexing類型為ArrayWithUndecided的數組,其中就包含未初始化的元素。

漏洞利用

清楚了之前所介紹的漏洞原理之后,想必觸發這個漏洞也并非難事:我們可以不斷重復調用一個使用new Array()方法來創建數組的函數,然后調用concat方法將這個數組和一個只包含double類型數據的數組進行拼接。在調用夠足夠次數之后,FTL編譯器將會對其進行編譯。

這份【漏洞利用代碼】可以利用這個漏洞來泄漏一個目標對象的內存地址,實現機制是通過我們所創建的對象進行內存噴射,在觸發這個漏洞之后,我們就能夠從代碼所返回的數組中找到目標對象的地址了。

總結

這個漏洞目前已經在iOS 12和macOS Mojave的最新版本(Safari)中修復了,該漏洞的CVE編號為CVE-2018-4358

責任編輯:趙寧寧 來源: FreeBuf
相關推薦

2023-05-06 11:05:50

2022-02-17 11:52:05

?Argo CD漏洞Kubernetes

2022-01-21 13:37:01

蘋果MacSafari 瀏覽器

2014-11-27 13:28:55

信息泄露淘寶烏云

2010-03-12 16:19:11

Safari漏洞修復

2022-01-21 06:54:18

iPhoneiPadiOS

2013-07-25 11:09:46

網站漏洞梭子魚

2022-01-27 09:47:20

漏洞蘋果

2022-01-17 12:46:05

API漏洞應用程序安全

2022-01-27 23:29:21

iOS蘋果漏洞

2022-01-27 07:00:12

iPhoneiPadiOS

2013-10-16 14:13:14

2011-03-07 10:40:15

2017-09-28 10:12:51

2022-04-18 11:46:44

銀行系統SSRF漏洞信息泄露

2014-06-30 13:51:27

2010-11-22 12:56:37

2013-11-18 09:35:38

信息泄露QQ微信

2009-03-07 09:56:01

2014-06-03 10:14:06

點贊
收藏

51CTO技術棧公眾號

91香蕉视频在线| av成人激情| 日韩精品最新网址| 2022亚洲天堂| 午夜激情在线观看| 成人午夜免费视频| 国产精品高清在线观看| 久久久久成人精品无码| 国产精品嫩模av在线| 欧美精品一二三| 给我免费播放片在线观看| 国产高清在线| 成人激情视频网站| 国产日韩在线观看av| 日韩在线视频免费播放| 亚洲精品一二三区区别| 亚洲男人的天堂在线| 日批免费观看视频| 欧美男男gaygay1069| 精品日韩中文字幕| 久久精品无码中文字幕| 2019中文字幕在线视频| 91丨九色丨尤物| 国产精品视频福利| 国产男女猛烈无遮挡| 羞羞答答国产精品www一本| 欧美成人精品一区二区三区| 真实乱视频国产免费观看| 2023国产精华国产精品| 91精品国产福利| 一级黄色特级片| 免费日韩电影| 欧美视频中文字幕在线| 国产精品又粗又长| 国模私拍视频在线播放| 亚洲色图第一区| 亚洲最大免费| 成人动漫在线免费观看| 久久久一区二区| 久久久精彩视频| 少妇人妻偷人精品一区二区| 国产成人精品一区二| 成人精品在线视频| 一级黄色片免费| 久久av资源网| 国产精品夜色7777狼人| 自拍偷拍色综合| 日本va欧美va欧美va精品| 国产91在线播放精品91| 国产欧美一区二区三区在线看蜜臂| 亚洲第一网站| 韩剧1988免费观看全集| 国产成人无码一区二区三区在线| 欧美日韩ab| 欧美精品制服第一页| 福利所第一导航| 欧美日韩三级电影在线| 欧美国产在线视频| www.99re7.com| 亚洲免费精品| 日韩av电影国产| 国产精品高清无码| 国模娜娜一区二区三区| 亚洲free性xxxx护士白浆| 99在线观看免费| 东方欧美亚洲色图在线| 国产日本一区二区三区| 视频二区在线| 日本一区二区三区国色天香| 亚洲在线观看一区| 超碰免费在线播放| 亚洲国产cao| 欧美黄色一级片视频| 欧美日韩尤物久久| 91精品久久久久久久99蜜桃| 国产艳妇疯狂做爰视频| 自拍视频在线播放| 国产精品伦理在线| 一级性生活视频| 国产极品在线观看| 欧美综合色免费| www.久久com| 欧亚精品一区| 日韩中文字幕在线视频播放| 午夜69成人做爰视频| 日韩视频在线一区二区三区| 国产高清视频一区三区| 国产又粗又猛又色又| 成人动漫一区二区在线| 日韩国产精品一区二区三区| 国产区在线观看| 亚洲.国产.中文慕字在线| www.国产区| 三级欧美日韩| 国产一区二区三区网站| 欧美精品入口蜜桃| 久热精品在线| 成人精品一二区| 成全电影播放在线观看国语| 一级日本不卡的影视| 冲田杏梨av在线| 亚洲视频三区| 俺也去精品视频在线观看| 五月婷婷激情网| 国产在线视频不卡二| 久久精品午夜一区二区福利| 羞羞视频在线观看不卡| 欧美网站一区二区| 国产老熟女伦老熟妇露脸| 四虎8848精品成人免费网站| 欧美亚洲伦理www| 国产激情视频在线播放| 中文字幕av一区 二区| 无码av天堂一区二区三区| www999久久| 亚洲人线精品午夜| 欧美成人精品欧美一级乱黄| 国产精品一级在线| 一区二区精品在线观看| 日韩a**中文字幕| 精品亚洲男同gayvideo网站| 免费在线观看日韩| 裤袜国产欧美精品一区| 欧美亚洲专区| 91亚洲va在线va天堂va国| 国产福利在线| 日韩欧美中文字幕在线观看| 国产精品熟妇一区二区三区四区| 99久久精品费精品国产风间由美| 日韩av电影免费观看高清| 三级毛片在线免费看| 亚洲午夜免费电影| 性生交大片免费看l| 亚洲精品极品少妇16p| 成人午夜激情网| 日本www在线观看| 欧美日韩免费观看一区二区三区 | 久久精品国产99国产| 日本公妇乱淫免费视频一区三区| 超碰在线视屏| 亚洲精品福利免费在线观看| 日韩精品一区二区在线播放| 成人午夜免费av| 成年人午夜视频在线观看| 草草视频在线一区二区| 欧美精品久久久久久久久久| 亚洲国产精品二区| 亚洲小说欧美激情另类| av av在线| 国产精品毛片在线| 欧美日韩在线一区二区三区| 欧美一级大片| 中文字幕亚洲欧美| 一级α片免费看刺激高潮视频| 国产日产精品一区| 亚洲精品视频导航| 99热国内精品| 91精品久久香蕉国产线看观看 | 98视频在线噜噜噜国产| 五月婷在线视频| 日韩欧美精品网址| 亚洲AV无码成人精品区明星换面| 日本伊人色综合网| 一区二区三区日韩视频| 日本综合精品一区| 国内精品久久久| 欧美日本韩国一区二区| 欧美日韩国产一级| 免费在线观看av网址| aaa国产一区| 欧美精品成人网| 国产精品久久久久久久久久10秀| 97netav| 岛国av免费在线观看| 国产一区av在线| 99久久久国产精品无码网爆| 亚洲一区欧美一区| 欧美性猛交xxxx乱| 国产精品99久久久久久久女警| 日本精品久久久久久久久久| 久9久9色综合| 91亚洲精品一区| av中文字幕在线观看第一页| 一区二区三区www| 亚洲精品喷潮一区二区三区| 色婷婷av一区二区三区软件| 亚洲人做受高潮| 99在线热播精品免费| 天天操天天爱天天爽| 欧美国产激情| 色一情一乱一伦一区二区三欧美 | 日韩一级片大全| 91视频www| 亚洲制服在线观看| 日韩在线一区二区| www.国产在线视频| 日韩激情在线| 精品欧美一区二区三区久久久| 久久电影天堂| 欧美野外猛男的大粗鳮| 少女频道在线观看高清| 国产亚洲欧洲黄色| 五月色婷婷综合| 91精品国产手机| 欧美亚洲另类小说| 亚洲成人久久影院| 91麻豆精品成人一区二区| 91首页免费视频| 国产精品偷伦视频免费观看了| 日本欧美一区二区三区乱码| 热99这里只有精品| 国产精品草草| 国产一区一区三区| 日本一区二区免费高清| 欧美人与物videos另类| 少妇精品在线| 成人天堂噜噜噜| 成人1区2区| 国产精品久久久久久久7电影| hd国产人妖ts另类视频| 欧美精品在线观看| 亚洲夜夜综合| 欧美成aaa人片在线观看蜜臀| 超碰在线国产| 亚洲人成网站999久久久综合| 欧洲精品久久一区二区| 欧美一区二区视频观看视频| 亚洲图片小说视频| 欧洲国产伦久久久久久久| 中文字幕在线欧美| 欧美日韩色婷婷| av资源免费观看| 欧美日韩免费在线观看| 成人免费区一区二区三区| 亚洲一区二区3| 国产在线视频卡一卡二| 一卡二卡三卡日韩欧美| 亚洲天堂黄色片| 亚洲日本丝袜连裤袜办公室| 国产又黄又粗又猛又爽的| 中文乱码免费一区二区| 大胸美女被爆操| 国产精品天美传媒沈樵| а天堂中文在线资源| 国产精品久久毛片a| 久久精品一区二区三区四区五区 | 五月天激情图片| 亚洲字幕久久| 国产情侣第一页| 亚洲高清二区| 久久美女福利视频| 日韩成人一级片| www.99r| 国产乱码精品一区二区三区av | 中文字幕一区二区在线视频| 欧美丝袜第三区| 国产人妖一区二区三区| 日韩午夜小视频| 蜜桃视频污在线观看| 日韩精品在线免费播放| 国产免费视频在线| 久久精视频免费在线久久完整在线看| 精品欧美色视频网站在线观看| 美女少妇精品视频| 蜜桃视频www网站在线观看| 日本精品免费观看| 日本免费在线一区| 成人黄色片视频网站| 天天躁日日躁狠狠躁欧美巨大小说| 免费看成人片| 91精品啪在线观看国产18| 欧美亚洲黄色片| 日韩成人精品在线| 欧美一级免费在线| 26uuu精品一区二区三区四区在线| xxx在线播放| 亚洲码国产岛国毛片在线| 欧美bbbbbbbbbbbb精品| 精品视频999| 免费av一级片| 中文字幕亚洲自拍| 久久www人成免费看片中文| 日本精品视频在线播放| 成人精品视频在线观看| 另类欧美小说| 亚洲视频电影在线| 久久久噜噜噜www成人网| 黑人巨大精品欧美一区| 国产色视频一区二区三区qq号| 亚洲日本在线看| 无码人妻丰满熟妇区bbbbxxxx | 能看毛片的网站| 国产日韩三级在线| 久久精品视频9| 欧美日韩亚洲综合| 性感美女一级片| 久热精品视频在线免费观看| 手机av在线| 亚洲自拍偷拍在线| 精品久久精品| 欧美三级在线观看视频| 国内国产精品久久| 四季av中文字幕| 日韩欧美中文字幕在线播放| 亚洲精品97久久中文字幕| 搡老女人一区二区三区视频tv| 精品丝袜在线| 7777精品伊久久久大香线蕉语言 | 男人天堂网视频| 国产成人精品免费| 亚洲 欧美 国产 另类| 欧美性猛交视频| 人妻精品无码一区二区| 久久影院在线观看| www.26天天久久天堂| 免费看成人片| 在线亚洲精品| 亚洲啪av永久无码精品放毛片| 亚洲欧美综合网| 中文字幕一区二区在线视频| 亚洲人成电影在线| 超碰aⅴ人人做人人爽欧美| 国产精品国产三级国产专区53| 911精品美国片911久久久| 亚洲精品综合在线观看| 国产精品久久久久久久久免费相片| 性色av免费观看| 日韩精品视频在线免费观看| 欧美女同一区| 成人一区二区三区四区| 91精品啪在线观看国产18| 在线观看国产福利| 中文字幕在线不卡视频| 中文字幕制服诱惑| 最新91在线视频| 五月天色综合| 中文精品一区二区三区| 久久aⅴ国产欧美74aaa| 人妻互换一区二区激情偷拍| 欧美亚洲自拍偷拍| 色综合久久影院| 91久久国产婷婷一区二区| 亚洲成av人片乱码色午夜| 欧美国产日韩另类 | 成人h动漫精品一区二区下载| 国产丝袜一区二区三区免费视频| 天堂av中文在线观看| 精品国产乱码久久久久久蜜柚 | 性猛交╳xxx乱大交| 亚洲国产成人av网| 性感美女视频一二三| 国产又粗又猛视频免费| 亚洲调教视频在线观看| 先锋资源在线视频| 一区二区三区四区国产精品| 亚洲成熟女性毛茸茸| 午夜精品在线视频| 神马影视一区二区| www.com操| 亚洲激情中文1区| 国产18精品乱码免费看| 日韩av毛片网| 欧美顶级大胆免费视频| 苍井空张开腿实干12次| 五月激情综合网| 精品99又大又爽又硬少妇毛片 | 日韩美女黄色片| 亚洲色图17p| 国产va免费精品观看精品| 国产精品入口芒果| 久久久久国产免费免费| 97国产成人无码精品久久久| 欧美高清无遮挡| 精品国产精品久久一区免费式 | 真实的国产乱xxxx在线91| 久久成人精品视频| 日韩人体视频| 污网站在线免费| 午夜成人免费视频| 97最新国自产拍视频在线完整在线看| 亚洲一区二区在线播放| 亚洲一区二区免费看| 日本高清一二三区| 亚洲男女性事视频| 日韩第一区第二区| 日韩一级免费在线观看| 亚洲猫色日本管| 成人亚洲综合天堂| 国产a一区二区| 另类小说视频一区二区| 日本中文字幕网| 久久躁狠狠躁夜夜爽| 蜜桃精品噜噜噜成人av| 能看毛片的网站| 欧洲精品在线观看| 天堂√中文最新版在线| avove在线观看| 日本一区二区在线不卡| 天堂网在线观看视频| 成人在线中文字幕|