讓“無(wú)聲的漏洞”無(wú)可遁形:詳解2023 數(shù)據(jù)庫(kù)頂會(huì)SIGMOD最佳論文
時(shí)間:2023-06-24 04:27:37
【編者按】 2 0 23 數(shù)據(jù)庫(kù)頂會(huì) SIGMOD 在美國(guó)西雅圖頒出最佳論文。阿里云與浙江大學(xué)合作的 《 Detecting Logic Bugs of Join Optimizations in DBMS 》獲 得最佳論文,成為 自 1975 年該會(huì)議 至今 49 年以來(lái) ,中國(guó)大陸研究團(tuán)隊(duì) 首次斬獲該獎(jiǎng)項(xiàng) 。
這項(xiàng)工作聚焦數(shù)據(jù)庫(kù)邏輯測(cè)試,始于阿里云PolarDB云原生數(shù)據(jù)庫(kù)的內(nèi)核測(cè)試,通過(guò)開(kāi)發(fā)創(chuàng)新的自動(dòng)化數(shù)據(jù)庫(kù)邏輯測(cè)試方案TQS,檢出不易察覺(jué)的邏輯漏洞予以修復(fù)。實(shí)驗(yàn)發(fā)現(xiàn),TQS運(yùn)行僅24小時(shí)就檢測(cè)出4大商用數(shù)據(jù)庫(kù)管理系統(tǒng)的邏輯漏洞115個(gè),予以修復(fù)后,大幅提升數(shù)據(jù)庫(kù)穩(wěn)定性。
該論文一作唐秀系浙江大學(xué)博士,這一工作是她在阿里云數(shù)據(jù)庫(kù)進(jìn)行研究型實(shí)習(xí)時(shí)的成果;阿里云數(shù)據(jù)庫(kù)負(fù)責(zé)人李飛飛也是作者之一,此前他曾以一作身份憑借《Wander Join: Online Aggregation via Random Walks》拿下2016年SIGMOD最佳論文。本次論文獲獎(jiǎng),完成了中國(guó)大陸研究團(tuán)隊(duì)在數(shù)據(jù)庫(kù)頂會(huì)的歷史性突破,也成為了中國(guó)校企合作攻克科研難題的典范之一。
(資料圖片僅供參考)
我們特別邀請(qǐng)到唐秀博士,為我們深入淺出地解讀這篇論文的關(guān)鍵成果。
背景與動(dòng)機(jī)
我國(guó)數(shù)據(jù)庫(kù)正處于高速發(fā)展期,并且隨著應(yīng)用復(fù)雜程度的增加,企業(yè)和用戶(hù)對(duì)于更強(qiáng)大、更安全的數(shù)據(jù)庫(kù)的需求也越來(lái)越迫切。因此,如何檢查數(shù)據(jù)庫(kù)漏洞和錯(cuò) 誤,成為保障數(shù)據(jù)庫(kù)安全、提升數(shù)據(jù)庫(kù)穩(wěn)定性的關(guān)鍵之一。
在數(shù)據(jù)庫(kù)查詢(xún)執(zhí)行期間,主要有兩類(lèi)錯(cuò)誤(bug):一種常見(jiàn)的錯(cuò)誤是數(shù)據(jù)庫(kù)突然崩潰停止,這種錯(cuò)誤對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)相對(duì)容易檢測(cè),因?yàn)閿?shù)據(jù)庫(kù)連接會(huì)突然中斷。然而,還存在一類(lèi)隱藏的錯(cuò)誤,即邏輯漏洞。在這種情況下,數(shù)據(jù)庫(kù)正常運(yùn)行并返回結(jié)果,但實(shí)際上并非正確的結(jié)果。
圖說(shuō):邏輯漏洞舉例
以上圖中的兩個(gè)邏輯漏洞為例,圖a展現(xiàn)了MySQL的一個(gè)哈希連接錯(cuò)誤,這種錯(cuò)誤發(fā)生在錯(cuò)誤地將零和負(fù)零視為不同值的情況下,導(dǎo)致最終返回一組空集合;b圖涉及數(shù)據(jù)類(lèi)型轉(zhuǎn)換和數(shù)據(jù)精度損失導(dǎo)致的錯(cuò)誤半連接:在MySQL中,當(dāng)比較兩個(gè)值是否相等時(shí),數(shù)據(jù)類(lèi)型轉(zhuǎn)換和精度損失可能導(dǎo)致意外的結(jié)果,從而影響查詢(xún)結(jié)果集的構(gòu)建。
邏輯漏洞很難檢測(cè),但其導(dǎo)致的后果確很?chē)?yán)重,重則會(huì)導(dǎo)致“上萬(wàn)航班延誤癱瘓”級(jí)別的大規(guī)模宕機(jī),因此也被視為“無(wú)聲的漏洞” 。本論文便主要聚焦于此。
針對(duì)邏輯漏洞,目前已經(jīng)有一些檢測(cè)方法,例如部分查詢(xún)語(yǔ)義(PQS),但這些方法通常只支持針對(duì)單表選擇查詢(xún)的檢測(cè),在涉及多表查詢(xún)以及不同的連接算法和連接結(jié)構(gòu)的情況下,仍存在大量的研究空白。
而最常用的差分測(cè)試,通過(guò)在不同數(shù)據(jù)庫(kù)中執(zhí)行相同操作,以驗(yàn)證其一致性,這種測(cè)試仍存在問(wèn)題:假如兩個(gè)數(shù)據(jù)庫(kù)返回相同的結(jié)果,也有可能是基于同樣錯(cuò)誤的邏輯生成了一樣的結(jié)果, 也即如何驗(yàn)證查詢(xún)結(jié)果正確性的關(guān)鍵問(wèn)題 。
同時(shí),測(cè)試數(shù)據(jù)庫(kù)現(xiàn)在面臨的搜索空間是非常龐大的, 如何引導(dǎo)測(cè)試以盡可能消耗最小的資源窮盡全部測(cè)試 ,也是一個(gè)需要解決的問(wèn)題。
研究思路與核心內(nèi)容
圍繞這兩個(gè)關(guān)鍵問(wèn)題,我們引入了一個(gè)名為T(mén)QS(轉(zhuǎn)換查詢(xún)合成)的全新解決方案,以解決MySQL數(shù)據(jù)庫(kù)中可能出現(xiàn)的邏輯錯(cuò)誤。
圖說(shuō):TQS架構(gòu)圖
TQS包括DSG和KQE兩部分,分別為數(shù)據(jù)驅(qū)動(dòng)的模式和查詢(xún)生成,與知識(shí)引導(dǎo)的查詢(xún)空間探索。
為解決真值生成問(wèn)題,我們采用了以下方法:首先,根據(jù)給定的寬表,使用函數(shù)依賴(lài)(FD)將該表拆分為多個(gè)表。
圖說(shuō):DSG是如何拆分寬表的
同時(shí),為了進(jìn)行邊緣測(cè)試,我們還插入了一些噪聲數(shù)據(jù)作為邊緣情況的樣本(圖中彩色數(shù)據(jù)),并基于數(shù)據(jù)庫(kù)的模式圖模型,隨機(jī)游走生成一系列查詢(xún)。
圖說(shuō):DSG構(gòu)建針對(duì)表連接的Bitmap 索引
在此基礎(chǔ)上,構(gòu)建RowID映射表,用于記錄在表拆分過(guò)程中,寬表中的行和拆分后表的行的對(duì)應(yīng)關(guān)系。根據(jù)表連接是表拆分的逆向過(guò)程的直覺(jué),構(gòu)建基于構(gòu)建RowID映射的Bitmap索引,以便從寬表中檢索到連接查詢(xún)的理論真值。 這些真值生成后,便是檢測(cè)潛在邏輯錯(cuò)誤的參照樣本。
然而,對(duì)于給定的數(shù)據(jù)庫(kù)模式,可生成的連接查詢(xún)的數(shù)量會(huì)隨著表格和列的數(shù)量呈指數(shù)級(jí)增長(zhǎng),顯然無(wú)法使用枚舉法一一驗(yàn)證。那么,要如何更高效地探索查詢(xún)未知空間呢?我們提出了TQS的第二部分設(shè)計(jì)——KQE。
圖說(shuō):KQE原理圖
KQE首先將模式圖進(jìn)一步拓展為一個(gè)規(guī)劃迭代圖,來(lái)表示整個(gè)查詢(xún)生成空間。同時(shí),在大量的歷史查詢(xún)圖中,KQE構(gòu)建了一個(gè)基于嵌入的圖索引,以確保新生成的查詢(xún)圖盡可能地遠(yuǎn)離其在歷史查詢(xún)中的近鄰,探索更多的未知空間。
總體來(lái)看,KQE可基于結(jié)構(gòu)相似性為生成的查詢(xún)圖評(píng)分,同時(shí)也通過(guò)自適應(yīng)隨機(jī)游走多樣化查詢(xún)生成, 從而極大降低了對(duì)于重復(fù)查詢(xún)的概率,節(jié)省了計(jì)算資源開(kāi)支。
實(shí)驗(yàn)結(jié)果分析
我們的研究在MySQL、MariaDB、TiDB 和 PolarDB 等4大常用DBMS上進(jìn)行了實(shí)驗(yàn)。
運(yùn)行了 24 小時(shí)后,TQS 成功找到了 115 個(gè)漏洞:MySQL 中 31 個(gè)、MariaDB 中 30 個(gè)、TiDB 中 31 個(gè)、PolarDB 中 23 個(gè)。通過(guò)最小化測(cè)試樣例,我們進(jìn)一步將它們分為20種類(lèi)型。
圖說(shuō):實(shí)驗(yàn)檢出漏洞分類(lèi)詳表
我們已經(jīng)將檢測(cè)到的漏洞提交給相應(yīng)數(shù)據(jù)庫(kù)社區(qū),并得到了他們積極的反饋。這些漏洞的危機(jī)程度被數(shù)據(jù)庫(kù)社區(qū)判定為首要危急或嚴(yán)重級(jí)別,一些漏洞已經(jīng)修復(fù)在了其數(shù)據(jù)庫(kù)最新版本中。
具體來(lái)說(shuō),MySQL 的錯(cuò)誤主要集中在Semi-join和Sub-query的執(zhí)行過(guò)程中,其中,幾個(gè)錯(cuò)誤被評(píng)定為首要危急,即最緊急的錯(cuò)誤,這些錯(cuò)誤已經(jīng)在MySQL 版本中得到修復(fù),并提供了相應(yīng)的修復(fù)說(shuō)明。而對(duì)于已使用SQLancer進(jìn)行全面測(cè)試的TiDB,TQS也測(cè)出了一些首要危急錯(cuò)誤,TiDB對(duì)其進(jìn)行了修復(fù)。另外,針對(duì)PolarDB,我們則直接提交錯(cuò)誤報(bào)告,相關(guān)錯(cuò)誤已經(jīng)被修復(fù)。
圖說(shuō):TQS與原有方法的有效性對(duì)比
總的來(lái)說(shuō),相比于其它方法,TQS在多項(xiàng)指標(biāo)上取得了更優(yōu)的效果,較原有方法實(shí)現(xiàn)高達(dá)100倍的性能提升,各組件的有效性也通過(guò)控制變量實(shí)驗(yàn)得到了檢驗(yàn)。
6月21日晚上8點(diǎn)整,本文一作唐秀將直播解讀論文,歡迎廣大讀者預(yù)約收看。
相關(guān)稿件
讓“無(wú)聲的漏洞”無(wú)可遁形:詳解2023 數(shù)據(jù)庫(kù)頂會(huì)SIGMOD最佳論文
焦點(diǎn)快看:河南省第十屆中華軒轅龍舟大賽(淅川站) 明日盛大開(kāi)賽
小米14曝光:首發(fā)驍龍8Gen3,小米13加速退場(chǎng)
今頭條!醫(yī)療保障政策“發(fā)言人”與群眾面對(duì)面
逐月向好!廣州1-5月社會(huì)消費(fèi)品零售總額同比增長(zhǎng)9.2%|看點(diǎn)
白玉蘭紅毯亮點(diǎn)多:金晨發(fā)型引群嘲,秦嵐腰出圈,雷佳音眉毛搶鏡
全球資訊:1.83米iPhone驚現(xiàn),喬布斯或氣壞
今日熱訊:美國(guó)最大報(bào)業(yè)集團(tuán)Gannett起訴谷歌壟斷在線(xiàn)廣告市場(chǎng)
【天天新要聞】性別保密!TVB小花懷孕第4個(gè)月已明顯見(jiàn)肚,已知男女但仍未要公開(kāi)
金融數(shù)智化由繁至簡(jiǎn),華為云數(shù)智算融合為良方|全球今日訊
焦點(diǎn)日?qǐng)?bào):7月22日開(kāi)始,招財(cái)添貴興家業(yè),求財(cái)順心,富貴享不盡的3大生肖
參觀(guān)泰坦尼克號(hào)失聯(lián)!工程師:失蹤潛艇可能會(huì)發(fā)生坍塌 天天短訊
鄰苯二甲酸二辛酯商品報(bào)價(jià)動(dòng)態(tài)(2023-06-23)-觀(guān)焦點(diǎn)
環(huán)球焦點(diǎn)!陶粒濾料商品報(bào)價(jià)動(dòng)態(tài)(2023-06-23)
富馬酸商品報(bào)價(jià)動(dòng)態(tài)(2023-06-23)
今日快看!四川一車(chē)輛沖卡 警察開(kāi)槍示警 采取強(qiáng)制截停措施
環(huán)球最新:50歲女人想要穿得優(yōu)雅,學(xué)會(huì)這三要三不要,極簡(jiǎn)風(fēng)穿出高級(jí)感
女星姜塵定居美國(guó)惹爭(zhēng)議!自稱(chēng)建立高端華人圈,呼吁大家都來(lái)看看_焦點(diǎn)簡(jiǎn)訊
讓太陽(yáng)打西邊出來(lái) 環(huán)球快播報(bào)
焦點(diǎn)熱文:千元機(jī):16GB+1TB+6000mAh
為什么我不推薦買(mǎi)酷開(kāi)電視 網(wǎng)友:看啥都得開(kāi)會(huì)員|焦點(diǎn)快播
全球消息!47歲林心如也發(fā)腮了!罕見(jiàn)穿紅裙扮嫩真顯黑,口紅粘牙更尷尬
首次創(chuàng)業(yè)者,這里有份8000元的一次性補(bǔ)貼你申請(qǐng)了嗎?
每日簡(jiǎn)訊:星島申訴王有獎(jiǎng)活動(dòng)反響熱烈,現(xiàn)升級(jí)為多輪評(píng)選獲獎(jiǎng)機(jī)會(huì)更多
“鄖縣人”3號(hào)頭骨化石 證實(shí)東方人類(lèi)故鄉(xiāng)歷史源遠(yuǎn)流長(zhǎng)
世界報(bào)道:西安開(kāi)展燃?xì)獍踩珜?zhuān)項(xiàng)大檢查 雙氣共用私接私改等隱患強(qiáng)制停氣
教育頻道
金融數(shù)智化由繁至簡(jiǎn),華為云數(shù)智算融合為良方|全球今日訊
鄰苯二甲酸二辛酯商品報(bào)價(jià)動(dòng)態(tài)(2023-06-23)-觀(guān)焦點(diǎn)
號(hào)稱(chēng)不降價(jià)的蔚來(lái),突然全系降價(jià)3萬(wàn),現(xiàn)在適不適合出手?|環(huán)球熱訊
知識(shí)產(chǎn)權(quán)法庭設(shè)在哪里 環(huán)球滾動(dòng)
環(huán)球最新:漫步者股東肖敏減持?jǐn)?shù)量過(guò)半后持有公司股份比例降至約21.35%
柯林斯法語(yǔ)分類(lèi)詞匯_關(guān)于柯林斯法語(yǔ)分類(lèi)詞匯概略 環(huán)球快看點(diǎn)
剛剛,杭州發(fā)布暴雨藍(lán)色預(yù)警信號(hào)


