讓“無聲的漏洞”無可遁形:詳解2023 數據庫頂會SIGMOD最佳論文
時間:2023-06-24 04:27:37
【編者按】 2 0 23 數據庫頂會 SIGMOD 在美國西雅圖頒出最佳論文。阿里云與浙江大學合作的 《 Detecting Logic Bugs of Join Optimizations in DBMS 》獲 得最佳論文,成為 自 1975 年該會議 至今 49 年以來 ,中國大陸研究團隊 首次斬獲該獎項 。
這項工作聚焦數據庫邏輯測試,始于阿里云PolarDB云原生數據庫的內核測試,通過開發創新的自動化數據庫邏輯測試方案TQS,檢出不易察覺的邏輯漏洞予以修復。實驗發現,TQS運行僅24小時就檢測出4大商用數據庫管理系統的邏輯漏洞115個,予以修復后,大幅提升數據庫穩定性。
該論文一作唐秀系浙江大學博士,這一工作是她在阿里云數據庫進行研究型實習時的成果;阿里云數據庫負責人李飛飛也是作者之一,此前他曾以一作身份憑借《Wander Join: Online Aggregation via Random Walks》拿下2016年SIGMOD最佳論文。本次論文獲獎,完成了中國大陸研究團隊在數據庫頂會的歷史性突破,也成為了中國校企合作攻克科研難題的典范之一。
(資料圖片僅供參考)
我們特別邀請到唐秀博士,為我們深入淺出地解讀這篇論文的關鍵成果。
背景與動機
我國數據庫正處于高速發展期,并且隨著應用復雜程度的增加,企業和用戶對于更強大、更安全的數據庫的需求也越來越迫切。因此,如何檢查數據庫漏洞和錯 誤,成為保障數據庫安全、提升數據庫穩定性的關鍵之一。
在數據庫查詢執行期間,主要有兩類錯誤(bug):一種常見的錯誤是數據庫突然崩潰停止,這種錯誤對于開發人員來說相對容易檢測,因為數據庫連接會突然中斷。然而,還存在一類隱藏的錯誤,即邏輯漏洞。在這種情況下,數據庫正常運行并返回結果,但實際上并非正確的結果。
圖說:邏輯漏洞舉例
以上圖中的兩個邏輯漏洞為例,圖a展現了MySQL的一個哈希連接錯誤,這種錯誤發生在錯誤地將零和負零視為不同值的情況下,導致最終返回一組空集合;b圖涉及數據類型轉換和數據精度損失導致的錯誤半連接:在MySQL中,當比較兩個值是否相等時,數據類型轉換和精度損失可能導致意外的結果,從而影響查詢結果集的構建。
邏輯漏洞很難檢測,但其導致的后果確很嚴重,重則會導致“上萬航班延誤癱瘓”級別的大規模宕機,因此也被視為“無聲的漏洞” 。本論文便主要聚焦于此。
針對邏輯漏洞,目前已經有一些檢測方法,例如部分查詢語義(PQS),但這些方法通常只支持針對單表選擇查詢的檢測,在涉及多表查詢以及不同的連接算法和連接結構的情況下,仍存在大量的研究空白。
而最常用的差分測試,通過在不同數據庫中執行相同操作,以驗證其一致性,這種測試仍存在問題:假如兩個數據庫返回相同的結果,也有可能是基于同樣錯誤的邏輯生成了一樣的結果, 也即如何驗證查詢結果正確性的關鍵問題 。
同時,測試數據庫現在面臨的搜索空間是非常龐大的, 如何引導測試以盡可能消耗最小的資源窮盡全部測試 ,也是一個需要解決的問題。
研究思路與核心內容
圍繞這兩個關鍵問題,我們引入了一個名為TQS(轉換查詢合成)的全新解決方案,以解決MySQL數據庫中可能出現的邏輯錯誤。
圖說:TQS架構圖
TQS包括DSG和KQE兩部分,分別為數據驅動的模式和查詢生成,與知識引導的查詢空間探索。
為解決真值生成問題,我們采用了以下方法:首先,根據給定的寬表,使用函數依賴(FD)將該表拆分為多個表。
圖說:DSG是如何拆分寬表的
同時,為了進行邊緣測試,我們還插入了一些噪聲數據作為邊緣情況的樣本(圖中彩色數據),并基于數據庫的模式圖模型,隨機游走生成一系列查詢。
圖說:DSG構建針對表連接的Bitmap 索引
在此基礎上,構建RowID映射表,用于記錄在表拆分過程中,寬表中的行和拆分后表的行的對應關系。根據表連接是表拆分的逆向過程的直覺,構建基于構建RowID映射的Bitmap索引,以便從寬表中檢索到連接查詢的理論真值。 這些真值生成后,便是檢測潛在邏輯錯誤的參照樣本。
然而,對于給定的數據庫模式,可生成的連接查詢的數量會隨著表格和列的數量呈指數級增長,顯然無法使用枚舉法一一驗證。那么,要如何更高效地探索查詢未知空間呢?我們提出了TQS的第二部分設計——KQE。
圖說:KQE原理圖
KQE首先將模式圖進一步拓展為一個規劃迭代圖,來表示整個查詢生成空間。同時,在大量的歷史查詢圖中,KQE構建了一個基于嵌入的圖索引,以確保新生成的查詢圖盡可能地遠離其在歷史查詢中的近鄰,探索更多的未知空間。
總體來看,KQE可基于結構相似性為生成的查詢圖評分,同時也通過自適應隨機游走多樣化查詢生成, 從而極大降低了對于重復查詢的概率,節省了計算資源開支。
實驗結果分析
我們的研究在MySQL、MariaDB、TiDB 和 PolarDB 等4大常用DBMS上進行了實驗。
運行了 24 小時后,TQS 成功找到了 115 個漏洞:MySQL 中 31 個、MariaDB 中 30 個、TiDB 中 31 個、PolarDB 中 23 個。通過最小化測試樣例,我們進一步將它們分為20種類型。
圖說:實驗檢出漏洞分類詳表
我們已經將檢測到的漏洞提交給相應數據庫社區,并得到了他們積極的反饋。這些漏洞的危機程度被數據庫社區判定為首要危急或嚴重級別,一些漏洞已經修復在了其數據庫最新版本中。
具體來說,MySQL 的錯誤主要集中在Semi-join和Sub-query的執行過程中,其中,幾個錯誤被評定為首要危急,即最緊急的錯誤,這些錯誤已經在MySQL 版本中得到修復,并提供了相應的修復說明。而對于已使用SQLancer進行全面測試的TiDB,TQS也測出了一些首要危急錯誤,TiDB對其進行了修復。另外,針對PolarDB,我們則直接提交錯誤報告,相關錯誤已經被修復。
圖說:TQS與原有方法的有效性對比
總的來說,相比于其它方法,TQS在多項指標上取得了更優的效果,較原有方法實現高達100倍的性能提升,各組件的有效性也通過控制變量實驗得到了檢驗。
6月21日晚上8點整,本文一作唐秀將直播解讀論文,歡迎廣大讀者預約收看。
相關稿件
讓“無聲的漏洞”無可遁形:詳解2023 數據庫頂會SIGMOD最佳論文
焦點快看:河南省第十屆中華軒轅龍舟大賽(淅川站) 明日盛大開賽
逐月向好!廣州1-5月社會消費品零售總額同比增長9.2%|看點
白玉蘭紅毯亮點多:金晨發型引群嘲,秦嵐腰出圈,雷佳音眉毛搶鏡
今日熱訊:美國最大報業集團Gannett起訴谷歌壟斷在線廣告市場
【天天新要聞】性別保密!TVB小花懷孕第4個月已明顯見肚,已知男女但仍未要公開
焦點日報:7月22日開始,招財添貴興家業,求財順心,富貴享不盡的3大生肖
參觀泰坦尼克號失聯!工程師:失蹤潛艇可能會發生坍塌 天天短訊
鄰苯二甲酸二辛酯商品報價動態(2023-06-23)-觀焦點
環球最新:50歲女人想要穿得優雅,學會這三要三不要,極簡風穿出高級感
女星姜塵定居美國惹爭議!自稱建立高端華人圈,呼吁大家都來看看_焦點簡訊
全球消息!47歲林心如也發腮了!罕見穿紅裙扮嫩真顯黑,口紅粘牙更尷尬
【搶抓機遇促發展·青海在行動】聞“機”起舞 蓄勢待發——西寧曹家堡國際機場三期擴建工程現場見聞 世界觀速訊
每日簡訊:星島申訴王有獎活動反響熱烈,現升級為多輪評選獲獎機會更多


