• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種用于DBMS 模糊測試的自適應變異策略

      2024-06-29 22:43:18問欣方勇賈鵬范希明
      四川大學學報(自然科學版) 2024年3期

      問欣 方勇 賈鵬 范希明

      摘 要: 數(shù)據(jù)庫管理系統(tǒng)(DBMS)被廣泛應用于各個領域,并在其中發(fā)揮著不可替代的作用. 因此發(fā)現(xiàn)DBMS 中的bug,防止其被攻擊者利用至關重要. 為了檢測DBMS 中潛藏的bug,研究者提出了DBMS 模糊測試技術. 使用這項技術,研究者成功在DBMS 中發(fā)現(xiàn)了大量bug. 然而現(xiàn)有的DBMS 模糊測試技術依然存在一定的局限性. 現(xiàn)有的技術在對SQL 語句的抽象語法樹(AST)進行變異時,沒有根據(jù)不同節(jié)點和變異結果的重要性分配計算資源,而是采取了一種平均分配的策略,這降低了測試的效率. 為了解決這個問題,本文提出了一種使用基于語法信息的變異方法的自適應變異策略. 這種變異策略能夠自動計算不同節(jié)點和變異結果的重要性,并根據(jù)重要性為更重要的操作分配更多的計算資源. 基于語法信息的變異方法可以將變異操作與變異結果直接關聯(lián),消除了變異操作和變異結果之間的偏差. 我們在一種新的DBMS 模糊測試工具Pinecone 中實現(xiàn)了這種變異策略,并使用Pinecone 對兩款廣泛使用的DBMS 進行測試. 實驗證明,與Squirrel 相比,Pinecone 在MariaDB 和MySQL 中發(fā)現(xiàn)的路徑數(shù)分別提升了4. 52% 和19. 4%,位圖覆蓋率分別提升了15% 和13. 8%,發(fā)現(xiàn)的Bug 數(shù)量提升了26. 7% 和75%,這證明了本文提出的方法可以有效提升模糊測試的效率.

      關鍵詞: DBMS 模糊測試; Squirrel; 語法信息; 自適應變異策略

      中圖分類號: TP391. 1 文獻標志碼: A DOI: 10. 19907/j. 0490-6756. 2024. 032006

      1 引言

      數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件,被廣泛應用于各種行業(yè). 然而,像其他復雜系統(tǒng)一樣,DBMS 內(nèi)往往存在許多未被發(fā)現(xiàn)的bug. 這些bug 可能會被攻擊者利用,從而造成嚴重的后果.

      模糊測試是一種被廣泛使用的自動化軟件測試技術. 其基本過程是使用生成或變異的方法得到大量新測試用例,再將這些測試用例輸入程序,找出能使程序出現(xiàn)異常的測試用例,最后通過這些測試用例找到程序中存在的bug. AFL[1]是最著名的模糊測試工具,其中使用的很多方法和設計理念被后人沿用,有許多先進的模糊測試工具是基于AFL 實現(xiàn)的,例如AFLGO[2]、AFLFast[3]、AFL++[4]等.

      近年來,隨著模糊測試技術的發(fā)展,模糊測試開始被用于DBMS 的測試. 最早的DBMS 模糊測試技術是黑盒的,其中代表性的工具是SQLsmith[5]. 使用SQLsmith,研究者們在多個DBMS中發(fā)現(xiàn)了100 多個bug[6]. 之后,出現(xiàn)了灰盒DBMS模糊測試技術. 最著名的開源灰盒工具是Squirrel[7],該工具基于AFL 實現(xiàn),并在AFL 的基礎上增加了基于抽象語法樹(AST)的變異方法和語義引導的實例化方法,解決了AFL 難以產(chǎn)生語法正確且語義正確的SQL 語句的問題. 使用Squirrel,研究者在MariaDB、MySQL、SQLite 等著名DBMS 中發(fā)現(xiàn)了幾十個bug. 之后,研究者們提出了越來越多的灰盒DBMS 模糊測試工具,包括RATEL[8]、SQLRight[9]、Griffin[10]、DynSQL[11]等.但是這些工具沒有開源,因此Squirrel 仍是最著名的開源灰盒DBMS 模糊測試工具.

      雖然Squirrel 取得了很好的效果,但仍然存在一些不可忽視的問題. 例如,變異策略問題. 近年來,研究者們提出了很多改善模糊測試效率的方法. 其中一項重要的研究是自適應變異策略[12-17].然而,人們對DBMS 模糊測試領域自適應變異策略的研究較少. Squirrel 在進行變異時,每種變異節(jié)點和變異操作被選擇的機會是一樣的. 然而,在AST 中,每種變異節(jié)點的重要性是不一樣的,對于不同節(jié)點類型,不同變異結果的重要性也是不一樣的. 因此,不同變異節(jié)點和變異結果帶來的效果也是不同的. 如果選擇了不重要的變異節(jié)點和變異結果,則會導致計算資源的浪費,從而降低模糊測試的效率. 本文提出了一種針對DBMS 模糊測試的自適應變異策略. 該策略會根據(jù)代碼覆蓋率信息自動判斷不同變異節(jié)點和變異結果的重要性,使計算資源傾向于更重要的節(jié)點類型和變異結果,提升測試的效率.

      2 背景

      2. 1 Squirrel 簡介

      Squirrel 是一種DBMS 模糊測試工具,主要用于檢測DBMS 中存在的內(nèi)存bug. Squirrel 是基于AFL 實現(xiàn)的,修改了AFL 中的變異方法,使得在變異時能夠確保SQL 語句語法正確. 同時,為了確保生成的SQL 語句是語義正確的,Squirrel 還添加了實例化模塊,該模塊會推斷SQL 語句中數(shù)據(jù)庫對象標識符之間的依賴關系,并基于依賴關系為標識符賦予正確的值.

      Squirrel 的變異方法首先會將SQL 語句解析為AST,之后對AST 中每個節(jié)點進行替換、插入和刪除等3 種變異操作(圖1). 其中,替換操作會根據(jù)變異節(jié)點子節(jié)點的類型從語料庫中隨機選擇語料,替換變異節(jié)點的子樹;插入操作會根據(jù)變異節(jié)點的類型從語料庫中隨機選擇語料,將語料的子樹插入變異節(jié)點的空白子樹;刪除操作會隨機刪除變異節(jié)點的子樹. 最后,通過實例化就可以得到新的SQL 語句. 如果新語句使代碼覆蓋率增加,則將新語句的AST 加入語料庫中.

      2. 2 Squirrel 變異策略的局限性

      Squirrel 使用了一種最基本的變異策略,即無差別的對待每種變異節(jié)點和變異操作. 這種變異策略假定了AST 中每種變異節(jié)點和變異操作的重要性是一樣的. 但是,這種方法是存在明顯缺陷的,因為不同種類節(jié)點的重要性是不同的.

      為證明以上觀點,我們在MySQL 和Maria DB上進行了實驗,來證明不同種類節(jié)點的重要性是不同的(如圖2). 我們在MariaDB 和MySQL 中進行了12 h 測試,并記錄了每種類型節(jié)點變異后觸發(fā)新分支的概率. 圖2a 和2b 展示了MariaDB 中成功率最高和最低的10 種節(jié)點. 其中,8 號類型節(jié)點在變異后,觸發(fā)新分支的概率高達14. 85%,而213號節(jié)點在變異后觸發(fā)新分支的概率僅有0. 6? .圖2a 和2c 展示了MariaDB 和MySQL 中成功率最高的10 種節(jié)點,可以看出,在這兩種DBMS 中,成功率最高的節(jié)點類型存在一定差異. 這說明在同一DBMS 中,不同類型節(jié)點在進行變異后,觸發(fā)新分支的概率有很大差異. 在不同DBMS 中,不同類型節(jié)點觸發(fā)新分支的概率也不一致.

      在同一類型節(jié)點中,不同變異結果的重要性也是不同的. 我們在MariaDB 和MySQL 中進行了12 h 測試,并記錄了每種節(jié)點類型下不同變異結果觸發(fā)新分支的概率(如圖3). 我們選擇了具有多種變異結果且成功率最高的6 種節(jié)點,展示同一種節(jié)點類型中不同變異結果重要性的差異. 這里的變異結果是指AST 中,該類型節(jié)點的合法結構. 有一些節(jié)點具有多種合法結構,這些結構的重要性是不同的. 在對這種節(jié)點進行變異時,某些結構更容易觸發(fā)新分支. 圖3 中resulti代表一種類型的節(jié)點中第i 種變異結果. 不同節(jié)點間的resulti 代表不同結果. 為了更直觀的理解不同結果重要性的差異,我們對每種節(jié)點不同變異結果觸發(fā)新分支的概率進行了歸一化處理. 可以看出,對于一種類型的節(jié)點,不同變異結果的重要性是不一樣的.例如,在39 號類型節(jié)點中,一共只有兩種變異結果,變異結果1 觸發(fā)新分支的概率要遠高于結果2觸發(fā)新分支的概率. 這說明結果1 的重要性高于結果2,在對39 號類型節(jié)點進行變異時,結果1 更容易觸發(fā)新分支.

      除此之外,即使在對同一數(shù)據(jù)庫的不同測試中,變異節(jié)點和變異結果的重要性也是不同的. 如圖4 所示,我們在MariaDB 中進行了兩次12 h 測試. 可以看出,兩次實驗中,不同節(jié)點類型的重要性和每種節(jié)點不同結果的重要性存在一定差異.事實上,兩次測試中,成功率最高的前30 個節(jié)點中有24 個是相同的,但是其排名和成功率存在一定差異. 對于同一類型的節(jié)點,每種結果的成功率也存在差異.

      根據(jù)以上分析,我們可以得出結論,不同種類變異節(jié)點的重要性是不一樣的. 對于同一種節(jié)點,不同變異結果的重要性也是不一樣的. 在測試時,應當為更重要的節(jié)點和結果分配更多的計算資源. 而那些不重要的的節(jié)點和結果應當獲得更少的計算資源. 然而,Squirrel 的變異策略無法實現(xiàn)這一點. 因此,需要一種更有效的變異策略.

      3 方法概述

      現(xiàn)有的變異策略無法根據(jù)變異節(jié)點和變異結果的重要性分配計算資源,這會導致測試效率降低. 為了解決這個問題,本文提出了一種使用基于語法信息的變異方法的自適應變異方法. 首先,本文提出了一種基于語義的變異方法. 這種變異方法兼容了Squirrel 使用3 種變異方法,同時能夠在變異操作和變異結果之間建立直接的對應關系.之后,基于這種變異方法,本文提出了一種自適應變異策略. 這種策略能夠在測試中動態(tài)調(diào)整每個節(jié)點和每種變異操作被選擇的機會,為那些更重要的節(jié)點和操作分配更多的計算資源.

      3. 1 基于語法信息的變異

      在第2 節(jié)中,本文展示了不同的變異結果具有不同的重要性. 然而,Squirrel 使用的3 種變異操作與變異結果之間不存在對應關系. 在Squirrel 中,替換操作的變異結果由變異前的AST 結構決定;插入操作的變異結果由變異前的AST 結構和選擇的語料決定;刪除操作的變異結果是確定的,但是該操作很容易產(chǎn)生錯誤的變異結果. 由于Squirrel的變異操作與變異結果之間缺乏聯(lián)系,因此即使調(diào)整這3 種變異操作被選擇的機會,也不能有效地增加測試的效率.

      為解決這個問題,本文提出一種基于語法信息的變異方法. 由于解析SQL 時需要使用SQL 的語法信息,因此語法信息與AST 之間存在一定的對應關系(如圖5). SQL 是由上下文無關文法定義的語言,圖5 左側是其語法信息的一部分;右側是這部分語法信息對應的AST. 可以看到,AST 中的節(jié)點對應了語法信息中的符號,一個節(jié)點的合法結構由語法信息中該非終結符的生成式?jīng)Q定.圖5 中c_tab 非終結符一共有2 條生成式,那么c_tab 節(jié)點的合法結構也只有兩種. 也就是說,若變異后AST 語法是正確的,那么只可能是這兩種結果中的一個. 其他變異結果,如第3 種情況,由于不存在這種生成式,因此該結果是錯誤的. 因此,使用語法信息指導變異既可確保語法正確,又可在變異操作和變異結果之間建立直接的對應關系.

      在開始測試前,會先從文件中提取語法信息,經(jīng)過處理后用于指導變異. 具體處理方法如圖6所示. 首先是從文件中提取語法信息. 這里的文件一般指bison 文件,由于bison 文件中除了語法信息外,還有其他代碼,所以在處理時需要剔除多余代碼. 獲取到語法信息包括所有非終結符及其對應的生成式. 之后,對語法信息進行格式轉換. 轉換后的語法信息中,每條生成式具有特定格式. 這樣做是為了統(tǒng)一生成式的格式,使得AST 中不同種類的節(jié)點具有同樣的結構. 為了方便起見,這里使用了與Squirrel 中AST 一致的結構. 最后對語法信息中的終結符和非終結符進行編碼,轉換為數(shù)字形式.

      算法1 描述了這種變異方法. 算法以選擇進行變異的AST 節(jié)點和選擇的生成式信息作為輸入,輸出新AST 的根節(jié)點. 第3 行的checkNode 函數(shù)會檢查root 節(jié)點左右子節(jié)點的情況. 如果root節(jié)點左右子節(jié)點都存在,那么變異時有概率保留root 中原有的子節(jié)點. 第4~13 行對節(jié)點進行變異. 如果選擇變異,則根據(jù)生成式信息中記錄的節(jié)點類型,在corpos 中隨機選擇對應類型的節(jié)點索引. 之后對該節(jié)點對應的AST 進行深拷貝. 否則對root 的左右子樹進行深拷貝. 第14 行是對當前節(jié)點的終結符部分進行修改,由于終結符以數(shù)字形式存在,因此可以直接賦值. Mutate 函數(shù)生成的新AST 是完整AST 中被修改的部分. 將這些新AST 連接到完整AST 的操作由其他函數(shù)完成,這部分與本文的方法無關,因此省略.

      該方法完全取代了Squirrel 中使用的替換、插入和刪除等3 種變異操作,并且在變異操作和變異結果之間建立直接的對應關系. 這樣一來,就可以通過調(diào)整每種變異操作被選擇的機會來調(diào)整每種變異結果出現(xiàn)的機會,從而為更重要的變異結果分配更多計算資源.

      3. 2 自適應變異策略

      經(jīng)實驗證明,不同節(jié)點類型和變異結果的重要性是不同的. 變異策略應根據(jù)不同節(jié)點類型和變異操作的重要程度,動態(tài)調(diào)整每種節(jié)點類型和變異操作被選擇的機會,為更重要的節(jié)點類型和變異操作分配更多計算資源. 因此,本文提出了一種新的變異策略. 該變異策略將變異節(jié)點和變異操作的選擇問題表示為一個多臂老虎機問題,假設有k 臺老虎機,每臺老虎機都對應一個獎勵概率分布,其目標是在不知道獎勵概率分布的情況下操作T 次老虎機后,能夠取得累計最大獎勵.

      在本文提出的方法中,使用每種變異節(jié)點和變異操作被選擇后成功觸發(fā)新分支的次數(shù)和被選擇的總次數(shù)的比值作為獎勵. 因為在AST 中,不同種類節(jié)點出現(xiàn)的次數(shù)不同,有些類型的節(jié)點出現(xiàn)次數(shù)較多. 因此,以比值作為獎勵更能反映不同變異節(jié)點和變異操作的重要性.

      由于節(jié)點種類眾多,而每種節(jié)點可能會有多種操作,同時考慮節(jié)點類型和變異操作會導致老虎機數(shù)量過多. DBMS 模糊測試的運行速度普遍較慢,過多的老虎機會導致在有限的時間內(nèi)探索不足. 因此,本文分別考慮變異節(jié)點和變異操作的選擇. 在求解多臂老虎機問題時,本文使用ε-貪心算法,這是一種在處理多臂老虎機問題時常用的算法. 這種算法在每次選擇老虎機時,以ε 的概率隨機選擇老虎機,以1-ε 的概率選擇期望獎勵最大的老虎機. 其中,ε 會隨時間逐步減少. 在使用時,本文對該算法進行了一定的修改,使其更適用于實際情況.

      算法2 描述了本文的變異節(jié)點選擇算法. 6~13 行的循環(huán)遍歷AST. 對于AST 中每個節(jié)點,將其根據(jù)節(jié)點類型記錄到topRewards 對象中. 該對象還維護一個列表,里面記錄了AST 中獎勵值最高的10 種節(jié)點類型,每次加入新節(jié)點時對該列表進行更新. 之后,在14~21 行,進入位置選擇階段. 對于AST 中每個節(jié)點,以ε 的概率選擇當前節(jié)點進行. 在這里,算法使用1/T 作為ε 的值,T 為測試進行的時間(單位:h,向上取整). 以1-ε 的概率使用getRandomTopNode 方法從當前獎勵最高的10 個節(jié)點類型中,隨機選擇一種節(jié)點類型,再隨機選擇一個該類型的節(jié)點進行變異. 將AST 子樹連接到完整AST 的操作由其他函數(shù)完成.

      選擇了要進行變異的節(jié)點后,基于節(jié)點的上下文信息選擇要進行的變異操作. 在這里,算法考慮了節(jié)點的上下文信息. 這是因為位于不同上下文環(huán)境下的節(jié)點可能代表不同的語義. 例如SELECT 語句單獨存在時表示查詢語句,但是在FROM 子句中表示子查詢. 因此需要對每種上下文環(huán)境單獨考慮. 另一個原因是每個節(jié)點可選的變異操作數(shù)量較少. 即使考慮了上下文信息,也不會出現(xiàn)探索不足的問題.

      算法使用的上下文信息可以使用一個五元組(stmt,inSubquery,clause,pType,pInfo)描述. 其中,stmt 表示該節(jié)點所在的語句類型. 例如用于區(qū)分SELECT 語句和UPDATE 語句中的FROM 子句. inSubquery 用于標記該節(jié)點是否處于子查詢中. clause 表示該節(jié)點處于什么子句中. 主要用來區(qū)分不同子句中的表達式. pType 表示該節(jié)點父節(jié)點的節(jié)點類型. pInfo 表示該節(jié)點父節(jié)點對應的生成式信息.

      算法3 描述了本文的變異操作選擇算法. 第3行使用getContext 函數(shù)獲取root 節(jié)點的上下文信息. 在第4 行,根據(jù)該節(jié)點的類型和節(jié)點上下文信息獲取該類型節(jié)點的生成式信息. 5~10 行的循環(huán)選擇變異操作對root 進行變異. 變異的次數(shù)由使用的能量調(diào)度策略決定. 為了與Squirrel 對比,將N 設置為2. 每次變異有ε 的概率隨機選擇一條生成式信息進行變異,有1-ε 的概率選擇獎勵最高的生成式信息進行變異. 這里的ε 與變異節(jié)點選擇部分的ε 相同.

      4 實驗及分析

      本文基于Squirrel 實現(xiàn)了一個灰盒DBMS 模糊測試工具Pinecone,并與Squirrel 進行了對比.實驗選取了MySQL 和MariaDB 作為目標,這兩個DBMS 在現(xiàn)實世界中得到了廣泛運用. 實驗在一臺使用了 Ubuntu 20. 04操作系統(tǒng)、Inte(l R) Xeon(R) CPU E3-1231 v3 @ 3. 40 GHz 3. 39 GHz 處理器和32 GB 內(nèi)存的計算機上進行. 實驗中,bitmap被設置為256 KB,并使用AFL 自帶的afl-clangfast和afl-clang-fast++ 對MySQL 和MariaDB 進行插樁,插樁比例為5%. 實驗中使用DBMS 的最新版本. 其中,MariaDB 的版本是11. 3. 0,MySQL的版本是8. 0. 34. 在實驗中,每次同時進行兩個測試,運行12 h,并重復3 次,結果取平均值.

      4. 1 路徑數(shù)和位圖覆蓋率對比

      如圖7 所示,在路徑數(shù)和位圖覆蓋率方面,Pinecone 都取得了優(yōu)勢. 其中,在MariaDB 中,Pinecone 發(fā)現(xiàn)的路徑數(shù)僅比Squirrel 多4. 52%. 但是在位圖覆蓋率方面,Pinecone 比Squirrel 高出15%. 在MySQL 中,Pinecone 發(fā)現(xiàn)的路徑數(shù)比Squirrel 多19. 4%,位圖覆蓋率高出13. 8%. 實驗結果說明,與Squirrel 相比,Pinecone 能夠在相同時間內(nèi)探索更多分支.

      4. 2 發(fā)現(xiàn)bug 的數(shù)量

      圖8 展示了兩種工具在測試中發(fā)現(xiàn)的bug 數(shù)量. 我們對發(fā)現(xiàn)的bug 進行了手動檢查,以去除重復的bug. 我們同時使用了ASan[18]和GDB[19]去除重復bug. 對于會引發(fā)崩潰的bug,我們利用崩潰時的堆棧信息判斷是否是重復bug. 對于沒有引發(fā)崩潰,但是引發(fā)ASan 報錯的bug,我們利用出現(xiàn)錯誤的代碼行位置判斷是否是重復bug. 實驗結果顯示,在MariaDB 中,Pinecone 發(fā)現(xiàn)的bug 數(shù)量比Squirrel 多26. 7%;在MySQL 中,Pinecone 發(fā)現(xiàn)的bug 數(shù)量比Squirrel 多75%. 這說明在發(fā)現(xiàn)bug 的能力方面,Pinecone 要優(yōu)于Squirrel.

      5 結論

      本文使用實驗統(tǒng)計數(shù)據(jù)證明了目前DBMS 模糊測試工具變異策略中存在的局限性,并且提出了一種自適應變異策略來解決這個問題. 這種變異策略能夠自動計算不同變異節(jié)點和變異操作的重要性,并根據(jù)重要性調(diào)整不同變異節(jié)點和變異操作被選擇的概率,從而為更重要的變異節(jié)點和變異操作分配更多計算資源. 本文在一種新的DBMS 模糊測試工具Pinecone 中實現(xiàn)了這種變異策略,并使用Pinecone 對MySQL 和MariaDB 這兩款廣泛使用的DBMS 進行測試. 實驗表明,與當前先進的DBMS 模糊測試工具Squirrel 相比,Pinecone能夠發(fā)現(xiàn)更多執(zhí)行路徑和程序bug. 這表明本文提出的自適應變異策略能夠有效提升DBMS 模糊測試的效率.

      參考文獻:

      [1] Zalewski. American fuzzy lop [EB/OL].[2023-12-

      04]. https://github. com/google/AFL.

      [2] B?hme M,Pham V T,Nguyen M D, et al. Directed

      greybox fuzzing [C]//Proceedings of the 2017 ACM

      SIGSAC Conference on Computer and Communications

      Security. Dallas Texas USA: Association for

      Computing Machinery, 2017:2329.

      [3] B?hme M,Pham V T,Roychoudhury A. Coveragebased

      greybox fuzzing as markov chain [C]//Proceedings

      of the 2016 ACM SIGSAC Conference on

      Computer and Communications Security. Vienna

      Austria: Association for Computing Machinery,

      2016:1032.

      [4] Fioraldi A,Maier D,Ei?feldt H, et al. AFL++ :

      Combining incremental steps of fuzzing research[ C]//

      Proceedings of the 14th USENIX Workshop on Offensive

      Technologies (WOOT20). Boston,MA:

      USENIX Association, 2020.

      [5] Seltenreich A,Tang B,Mullender S. SQLSmith[ EB/

      OL].[2023-12-04]. https://github. com/anse1/sqlsmith.

      [6] Seltenreich A,Tang B,Mullender S. SQLSmith bug

      hunting [EB/OL]. [2023-12-04]. https://github.

      com/anse1/sqlsmith/wiki#score-list.

      [7] Zhong R,Chen Y,Hu H, et al. Squirrel:Testing database

      management systems with language validity

      and coverage feedback [C]//Proceedings of the 2020

      ACM SIGSAC Conference on Computer and Com ‐

      munications Security. Virtual Event USA:Association

      for Computing Machinery, 2020: 955.

      [8] Wang M,Wu Z,Xu X, et al. Industry practice of

      coverage-guided enterprise-level DBMS fuzzing[ C]//

      Proceedings of the 43rd International Conference on

      Software Engineering:Software Engineering in Practice

      (ICSE-SEIP). Virtual Event,Spain:IEEE Press,

      2021: 328.

      [9] Liang Y,Liu S,Hu H. Detecting logical bugs of

      DBMS with coverage-based guidance [C]//Proceedings

      of the 31st USENIX Security Symposium

      (USENIX Security 22). Boston, MA:USENIX Association,

      2022: 4309.

      [10] Fu J,Liang J,Wu Z, et al. Griffin:Grammar-free

      DBMS fuzzing[C]//Proceedings of the Conference

      on Automated Software Engineering (ASE22).

      MI, Rochester,USA:Association for Computing

      Machinery, 2022: 1.

      [11] Jiang Z M,Bai J J,Su Z. DynSQL:Stateful fuzzing

      for database management systems with complex and

      valid SQL query generation [C]//Proceedings of

      USENIX Security Symposium( USENIX Security).

      Anaheim, CA: USENIX Association, 2023: 4949.

      [12] Lyu C, Ji S, Zhang C, et al. MOPT:Optimized mutation

      scheduling for fuzzers [C]//Proceedings of the

      28th USENIX Security Symposium( USENIX Security

      19). Santa Clara,CA:USENIX Association,

      2019: 1949.

      [13] Karamcheti S,Mann G,Rosenberg D. Adaptive greybox

      fuzz-testing with thompson sampling [C]//Proceedings

      of the 11th ACM Workshop on Artificial Intelligence

      and Security. Toronto, Canada:Association

      for Computing Machinery, 2018: 37.

      [14] Wang X,Hu C,Ma R, et al. CMFuzz:Contextaware

      adaptive mutation for fuzzers [J]. Empirical

      Software Engineering, 2021, 26: 1.

      [15] Lemieux C, Sen K. Fairfuzz:A targeted mutation

      strategy for increasing greybox fuzz testing coverage

      [ C]//Proceedings of the 33rd ACM/IEEE International

      Conference on Automated Software Engineering.

      Montpellier, France:Association for Computing

      Machinery, 2018: 475.

      [16] Cha S K,Woo M,Brumley D. Program-adaptive mutational

      fuzzing [C]//Proceedings of the 2015 IEEE

      Symposium on Security and Privacy. San Jose,CA,

      USA: IEEE, 2015: 725.

      [17] Yue T,Tang Y,Yu B, et al. Learnafl:Greybox fuzzing

      with knowledge enhancement [J]. IEEE Access,

      2019, 7: 117029.

      [18] Google. AddressSanitizer [EB/OL]. [2023-12-04].

      https://github. com/google/sanitizers/wiki/Address‐

      Sanitizer.

      [19] Foundation F S. GDB:The GNU project debugger

      [EB/OL]. [2023-12-04]. http://www. sourceware.

      org/gdb/.

      (責任編輯: 伍少梅)

      灵石县| 正阳县| 阳新县| 邳州市| 南皮县| 竹山县| 大悟县| 玉林市| 平潭县| 视频| 塔河县| 永善县| 抚远县| 达州市| 渭南市| 大名县| 南汇区| 隆子县| 镇坪县| 民乐县| 阿图什市| 景德镇市| 澄城县| 田东县| 武功县| 姚安县| 海口市| 楚雄市| 通江县| 孟津县| 连州市| 台江县| 辰溪县| 温州市| 奉新县| 济阳县| 留坝县| 凭祥市| 蒙山县| 乐安县| 府谷县|