<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Jailbreak #003:Safari 0-day 漏洞,請盡快升級系統(tǒng)

          共 1721字,需瀏覽 4分鐘

           ·

          2021-10-24 11:15

          最近,谷歌零計(jì)劃披露了 iOS 系統(tǒng)中 Safari 的一個(gè) 0-day 漏洞,該漏洞由某位匿名人士發(fā)現(xiàn),編號 CVE-2021-30858,允許 Web 執(zhí)行任意代碼,存在被利用的風(fēng)險(xiǎn),可開發(fā)基于 web 的越獄,所以受影響的用戶請盡快升級系統(tǒng)。以下是詳細(xì)說明

          基本信息

          披露時(shí)間:2021 年 9 月 13 日

          披露者:匿名

          目標(biāo)產(chǎn)品:Apple WebKit

          受影響版本:Safari 14.1.2、iOS 14.8

          蘋果官方信息:https://support.apple.com/en-us/HT212808

          驗(yàn)證代碼

          var fontFace1 = new FontFace("font1", "", {});
          var fontFaceSet = new FontFaceSet([fontFace1]);
          fontFace1.family = "font2";

          漏洞詳情

          Bug 類型:UAF(Use-after-free)

          詳情:漏洞源于以下這段代碼

          void CSSFontFaceSet::removeFromFacesLookupTable(const CSSFontFace& face, const CSSValueList& familiesToSearchFor)
          {
          for (auto& item : familiesToSearchFor) {
          String familyName = CSSFontFaceSet::familyNameFromPrimitive(downcast<CSSPrimitiveValue>(item.get()));
          if (familyName.isEmpty())
          continue;

          auto iterator = m_facesLookupTable.find(familyName);
          ASSERT(iterator != m_facesLookupTable.end());
          bool found = false;
          for (size_t i = 0; i < iterator->value.size(); ++i) {
          if (iterator->value[i].ptr() == &face) {
          found = true;
          iterator->value.remove(i);
          break;
          }
          }
          ASSERT_UNUSED(found, found);
          if (!iterator->value.size())
          m_facesLookupTable.remove(iterator);
          }
          }

          迭代器未檢測?end(),雖然其中有一個(gè)斷言?ASSERT(iterator != m_facesLookupTable.end());,但除此之外,在發(fā)布版本中沒有做任何事情。因此,即使?iterator == m_facesLookupTable.end()?在發(fā)布版本中,也不會(huì)發(fā)生任何事情并且仍然會(huì)使用迭代器。

          在 FontFaceSet 中,如果字體已被視為無效,則不會(huì)將 FontFace 添加到 addToFacesLookupTable 中的面查找表中。但是,removeFromFacesLookupTable 仍然會(huì)嘗試刪除字體,從而導(dǎo)致 use-after-free。

          補(bǔ)丁分析

          補(bǔ)丁將 ASSERT 更改為 if 子句。如果?iterator == m_facesLookupTable.end()?函數(shù)將返回,因?yàn)樵诒碇姓也坏剿M麆h除的項(xiàng)目。


          瀏覽 46
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  理论片AV | 国产黄色中文字幕 | 人成午夜视频 | 在线播放中文字幕 | www.tiantianlu |