国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于敏感語義關(guān)聯(lián)的代碼切片及應(yīng)用研究

2024-05-21 05:22:35帥活力唐成華
科技資訊 2024年4期
關(guān)鍵詞:控制流結(jié)點語句

帥活力 唐成華

摘??要:利用程序的可伸縮性對程序進(jìn)行代碼切片,識別出受敏感變量影響的關(guān)鍵語句,消除噪音并挖掘程序內(nèi)部依賴,用以檢測代碼的漏洞與缺陷。針對切片對依賴過于敏感的問題,提出一種基于敏感語義關(guān)聯(lián)的代碼過程間切片方法,提取表征敏感信息的有效語句,捕獲語義依賴關(guān)聯(lián),將代碼漏洞觸發(fā)點轉(zhuǎn)化為上下文敏感的缺陷依賴流,并基于約束規(guī)則提升切片效率,結(jié)合缺陷約束獲取代碼漏洞的異常來源。實驗結(jié)果表明該方法在代碼切片的效率、質(zhì)量以及漏洞檢測的精度上有較好的表現(xiàn)。

關(guān)鍵詞:代碼切片?敏感語義?控制流?漏洞檢測

中圖分類號:TP309

Research?on?Code?Slicing?Based?on?Sensitive?Semantic?Association?and?Its?Application

SHUAI?Huoli??TANG?Chenghua

Guangxi?Key?Laboratory?of?Trusted?Software,?Guilin?University?of?Electronic?Technology,?Guilin,?Guangxi?Zhuang?Autonomous?Region,?541004?China

Abstract:?By?utilizing?the?scalability?of?the?program?to?slice?the?code?of?the?program,?key?statements?affected?by?sensitive?variables?can?be?identified,?noise?can?be?eliminated,?and?the?internal?dependencies?of?the?program?can?be?mined,?so?as?to?detect?vulnerabilities?and?defects?in?the?code.?In?order?to?solve?the?problem?of?the?excessive?sensitivity?of?slicing?to?dependencies,?this?paper?proposes?an?inter-procedural?slicing?method?of?the?code?based?on?sensitive?semantic?association,?which?extracts?effective?statements?that?represent?sensitive?information,,?captures?semantic?dependent?association,?transforms?the?trigger?points?of?code?vulnerabilities?into?context-sensitive?defect?dependency?flows,?improves?slicing?efficiency?based?on?constraint?rules,?and?obtains?the?abnormal?source?of?code?vulnerabilities?in?combination?with?defect?constraints.?Experimental?results?show?that?this?method?performs?well?in?the?efficiency?and?quality?of?code?slicing?and?the?accuracy?of?vulnerability?detection.

Key?Words:?Code?slicing;?Sensitive?semantics;?Control?flow;?Vulnerability?detection

更新迭代的軟件在提供優(yōu)質(zhì)服務(wù)的同時,結(jié)構(gòu)不斷復(fù)雜,并發(fā)、循環(huán)、函數(shù)調(diào)用等動態(tài)執(zhí)行機制使得存在于整個軟件開發(fā)生命周期的代碼缺陷更難以避免,若在開發(fā)中復(fù)用到漏洞代碼,新程序?qū)⒀永m(xù)其脆弱性,則識別出缺陷的難度更大。研究表明,缺陷修復(fù)將消耗軟件開發(fā)成本的50%~70%。為重視代碼安全,提高軟件魯棒性,進(jìn)行缺陷漏洞與惡意代碼檢測等相關(guān)工作必不可少。程序是軟件中相應(yīng)表征分解的語義及其集合,程序行為特征能從指令層直觀體現(xiàn)代碼功能,而挖掘漏洞與缺陷發(fā)現(xiàn)往往以程序內(nèi)部依賴關(guān)系、語義信息以及行為特征做支撐,由于對程序理解層面的不完善導(dǎo)致代碼缺陷漏檢等問題,學(xué)者們不斷從程序代碼本身提取相關(guān)信息,增強語義理解[1]。

軟件的相關(guān)分析工作耗時又費力,若能先進(jìn)行程序切片,排除無關(guān)代碼,使缺陷特征信息變緊密,則降低檢查時的工作復(fù)雜度。通過利用程序可伸縮性,程序切片能識別提取出受變量影響或影響變量的直至不動點的關(guān)鍵語句,能消除噪音語句干擾以靈活理解程序。由于切片程序與源程序在結(jié)果執(zhí)行上語義一致,所以利用切片技術(shù)預(yù)處理輸入程序后,便于推理控制流及數(shù)據(jù)流軌跡,切片后的程序分析效率要優(yōu)于傳統(tǒng)程序分析[2-3]。在分析惡意代碼和缺陷程序時,注重實體內(nèi)部流特征[4-5],結(jié)合語法結(jié)構(gòu)和語義信息構(gòu)建函數(shù)和過程間的相關(guān)依賴屬性圖[6-7],充分捕獲數(shù)據(jù)變換和轉(zhuǎn)移軌跡,能有效檢測惡意操作和發(fā)現(xiàn)存在的數(shù)據(jù)泄露。這為我們提供了用更精確的靜態(tài)方法進(jìn)行數(shù)據(jù)依賴分析的空間,再結(jié)合切片技術(shù)注重行為關(guān)聯(lián),緊密缺陷特征,應(yīng)用于脆弱性分析有效檢測漏洞。

1??基于敏感語義關(guān)聯(lián)的代碼切片模型

通過程序控制流提供執(zhí)行邏輯順序,構(gòu)建以結(jié)點保存依賴信息的控制流變量依賴圖(CFVDG),利用圖可達(dá)性執(zhí)行切片,檢測代碼缺陷,總體模型如圖1所示。首先,提取代碼變量間定義使用、參數(shù)傳遞、返回值依賴等語義信息,并記錄敏感變量的相關(guān)關(guān)聯(lián)集,結(jié)點保存依賴信息;其次,生成控制流支持的程序變量依賴圖,并根據(jù)交叉函數(shù)的控制流變量依賴圖進(jìn)行參數(shù)切片,切片輪廓保存至函數(shù)聲明結(jié)點;最后,對切片準(zhǔn)則中的變量遍歷程序的控制流變量依賴圖進(jìn)行切片,捕捉與切片準(zhǔn)則相關(guān)的完備切片結(jié)果,根據(jù)缺陷約束庫內(nèi)的約束檢查切片語句的語義,發(fā)現(xiàn)錯誤執(zhí)行狀態(tài),追蹤敏感數(shù)據(jù)傳播,在降低圖時間和空間復(fù)雜度的同時,提高代碼缺陷檢測準(zhǔn)確率。

1.1?控制流變量依賴圖CFVDG的構(gòu)建

數(shù)據(jù)流分析應(yīng)保證結(jié)構(gòu)層面的依賴關(guān)系是完整的、函數(shù)調(diào)用是上下文敏感的,以圖作為程序中間表示時,圖結(jié)點和邊應(yīng)盡可能包含語句執(zhí)行的有效信息,以支持后續(xù)遍歷圖執(zhí)行切片。本文構(gòu)建的控制流變量依賴圖由變量依賴關(guān)系,控制流執(zhí)行順序指導(dǎo)進(jìn)行,通過將構(gòu)圖粒度限制在變量間,記錄變量之間的影響關(guān)系,明確和區(qū)分?jǐn)?shù)據(jù)傳播和控制依賴路徑。

控制流變量依賴圖的結(jié)點主要包括普通結(jié)點、函數(shù)聲明結(jié)點和函數(shù)調(diào)用結(jié)點。其中普通結(jié)點由語句行號、定義集、使用集、語句類型組成;函數(shù)聲明結(jié)點由聲明行號、函數(shù)名、形參、參數(shù)切片結(jié)果組成;函數(shù)調(diào)用結(jié)點由定義集、調(diào)用行號、聲明行號、實參組成。通過程序代碼中的語義依賴信息構(gòu)建控制流變量依賴圖。語義依賴信息存在于函數(shù)內(nèi)的源碼語句之間和函數(shù)調(diào)用時的參數(shù)傳遞之間,其體現(xiàn)了控制流支撐下的數(shù)據(jù)轉(zhuǎn)移關(guān)聯(lián),可分為數(shù)據(jù)依賴和控制依賴。在構(gòu)建依賴圖的創(chuàng)建結(jié)點階段,結(jié)點間變量的數(shù)據(jù)依賴關(guān)系包括變量定義與使用依賴、交叉函數(shù)參數(shù)依賴、返回值依賴等依賴關(guān)系??刂埔蕾囮P(guān)系包括順序控制依賴、分支選擇控制依賴、循環(huán)邏輯控制依賴等。

1.2?變量關(guān)聯(lián)集合的獲取

變量關(guān)聯(lián)集合用于記錄控制流變量依賴圖忽略的依賴關(guān)聯(lián)。分析與指針、數(shù)組、結(jié)構(gòu)體等這類變量相關(guān)的語句時,可能涉及域敏感問題,因此將對局部成員或元素的操作視為是對整體變量的操作。使用模糊匹配觀察變量依賴,如對于訪問結(jié)構(gòu)體成員的操作都視為是對結(jié)構(gòu)體的操作。

代碼切片的結(jié)果需回溯(即進(jìn)行兩次檢查)才能保證完整的依賴關(guān)系處于切片結(jié)果中。通常采用對程序進(jìn)行前向依賴后再進(jìn)行后向依賴分析的方式,或是采用一次切片后根據(jù)相關(guān)依賴記錄對程序進(jìn)行二次完整依賴切片的方式。通過利用變量關(guān)聯(lián)集合平行歸檔與切片準(zhǔn)則中的變量關(guān)聯(lián)的變量,使切片輪廓包括與目標(biāo)變量有間接依賴關(guān)系的相關(guān)語句,以提高切片結(jié)果正確性。依賴圖建立后,有選擇地將變量關(guān)聯(lián)集合中變量的切片語句集合并,實現(xiàn)切片結(jié)果的提取一次完成,以關(guān)聯(lián)檢查程序缺陷。

從程序語句中查找相關(guān)變量關(guān)聯(lián),輸出指針、數(shù)組、結(jié)構(gòu)體等類型的變量關(guān)聯(lián)集合。涉及變量關(guān)聯(lián)的語句主要體現(xiàn)為成員變量的單獨定義或引用、成員變量間的別名賦值等。通過獲得一個需考慮域敏感分析的變量(指針、數(shù)組和結(jié)構(gòu)體等)的關(guān)聯(lián)集合,集合中的變量按變量關(guān)聯(lián)度降序排列。一旦獲取到完整的變量關(guān)聯(lián)集合,在進(jìn)行語義分析時,將集合中關(guān)聯(lián)度高的相關(guān)變量優(yōu)先設(shè)置為切片階段要跟蹤的變量,語義分析檢查相關(guān)切片語句,使代碼缺陷的檢測更嚴(yán)謹(jǐn)。變量關(guān)聯(lián)度由變量間影響次數(shù)和影響權(quán)重計算而得,本文規(guī)定語句中變量賦值操作的影響權(quán)重大于判斷比較等操作的影響權(quán)重。

2??代碼切片

代碼切片過程的核心是語義依賴分析和變量關(guān)聯(lián)分析。在經(jīng)過前述的依賴分析后進(jìn)入切片階段,依照切片規(guī)則約束對切片準(zhǔn)則中進(jìn)行切片,并補充參數(shù)或返回值的子切片構(gòu)成最終切片輪廓。

2.1?切片約束規(guī)則

切片約束規(guī)則定義了在提取切片準(zhǔn)則中的變量?的切片輪廓?時,切片過程需滿足的規(guī)則,主要包括以下7條邏輯約束規(guī)則:

(1)若語句s定義變量?,語句s使用?,即滿足變量定義與使用依賴,則提取兩者對應(yīng)結(jié)點信息存入切片輪廓?。

(2)若條件判斷語句中存在相關(guān)依賴,并且其后繼結(jié)點分支語句中存在關(guān)聯(lián),則將包含條件判斷及關(guān)聯(lián)語句行號存于切片輪廓?內(nèi)。

(3)若循環(huán)結(jié)構(gòu)語句中存在依賴,并且其后繼結(jié)點循環(huán)語句中存在關(guān)聯(lián),則將包含循環(huán)判斷及關(guān)聯(lián)語句行號存于切片輪廓?內(nèi)。

(4)若遇函數(shù)調(diào)用結(jié)點時,根據(jù)交叉函數(shù)參數(shù)依賴,將對應(yīng)切片語句行號加入最終切片輪廓?。

(5)若結(jié)點cp順序執(zhí)行到達(dá)結(jié)點cp,cp執(zhí)行到達(dá)cp,前者屬于切片輪廓,后者不存在與變量?的依賴關(guān)系,則切片輪廓跳過cp,計算cp的依賴。

(6)若切片準(zhǔn)則賦值為函數(shù)返回值,即滿足返回值依賴,則將返回值的切片結(jié)果加入最終切片輪廓?。

(7)若語句為無條件跳轉(zhuǎn)或其他變量無關(guān)控制語句,則將語句行號加入切片輪廓?。

2.2?代碼切片的執(zhí)行

在切片過程中,一方面,變量可能作為實際參數(shù)調(diào)用交叉函數(shù),但交叉函數(shù)在內(nèi)部操作形式參數(shù)時,會間接影響實際參數(shù);另一方面,交叉函數(shù)的返回值會傳遞到函數(shù)外賦值給變量。因此有必要追蹤形參和返回值在交叉函數(shù)中的依賴關(guān)系和執(zhí)行邏輯。

即便在交叉調(diào)用函數(shù)中會存在對形式參數(shù)的操作不影響實際參數(shù)的情況,但這種傳播方式給隱式惡意操作提供了可乘之機,因此追蹤實參在交叉函數(shù)中依賴關(guān)系和執(zhí)行邏輯是必要的。自定義函數(shù)間接輔助了程序功能的實現(xiàn),對于不同的調(diào)用,其處理過程與執(zhí)行語義相同。為避免不同上下文多次對交叉函數(shù)切片,使用增量方式存儲參數(shù)切片結(jié)果并關(guān)聯(lián)映射至函數(shù)聲明結(jié)點的參數(shù)切片結(jié)果,從而減少構(gòu)造交叉函數(shù)依賴圖的結(jié)點空間,降低過程間依賴邊的連接復(fù)雜度。

依照依賴關(guān)系圖中函數(shù)調(diào)用結(jié)點保存的參數(shù)對應(yīng)關(guān)系,進(jìn)行參數(shù)切片,提取結(jié)點語句行號,結(jié)果語句序列映射至聲明結(jié)點中,當(dāng)調(diào)用函數(shù)時,根據(jù)參數(shù)對應(yīng)關(guān)系先在聲明該函數(shù)的現(xiàn)有對應(yīng)列表中查找是否存在該參數(shù)的切片語句,若存在直接提取序列添加至切片輪廓,構(gòu)成最終切片結(jié)果;若不存在,則依照或建立該函數(shù)的控制流變量依賴圖進(jìn)行參數(shù)切片,序列保存至聲明節(jié)點中。另外,當(dāng)變量位于賦值操作左側(cè)時,右側(cè)為函數(shù)調(diào)用,則說明變量被調(diào)用函數(shù)的返回值賦值,滿足返回值依賴,需根據(jù)函數(shù)中返回語句的返回變量在切片規(guī)則約束下進(jìn)行切片并存儲。

3??應(yīng)用敏感語義代碼切片的漏洞檢測

敏感API的不規(guī)范使用和語句約束檢查的缺少會有很大概率造成漏洞,如內(nèi)存分配函數(shù)和釋放函數(shù)未正確配對、數(shù)組或指針加下標(biāo)的元素?zé)o邊界檢查、取余或截斷指令導(dǎo)致的整數(shù)溢出等,因此將敏感API和操作約束添加至缺陷約束庫輔助檢查缺陷。通過構(gòu)建程序CFVDG對缺陷相關(guān)變量執(zhí)行切片后,提供了可疑變量或函數(shù)上下文敏感的依賴信息流,利用缺陷約束庫提供的敏感操作約束訪問檢查語句操作是否合法,檢測出錯誤狀態(tài)。

根據(jù)變量依賴關(guān)聯(lián)建立CFVDG,切片分析含空指針引用的部分開源代碼,如圖2所示,其代碼第33行的指針d在通過idvgetnode(i)函數(shù)返回值進(jìn)行賦值,并在第36行被賦值使用,通過交叉函數(shù)idvgetnode?()中s指針行為操作分析,可以看到若不滿足55行分支處條件,則返回?NULL?值,當(dāng)調(diào)用完成后順序執(zhí)行36行d->limit=rate語句。

構(gòu)建程序的CFVDG后,第36行的語句類型vist為指針操作,若以d為切片準(zhǔn)則進(jìn)行切片檢查,因交叉函數(shù)idvgetnode?()中有返回值語句,則idvgetnode函數(shù)對應(yīng)的CFVDG中聲明結(jié)點內(nèi)應(yīng)存儲返回值s切片,即,最終切片輪廓為,對其進(jìn)行語義操作檢查,發(fā)現(xiàn)第33行d賦值為第58行的返回值null,由于在第34-36行之間沒有進(jìn)行指針為空判斷,則第36行賦值操作將導(dǎo)致空指針解引用。

4??實驗過程及分析

實驗環(huán)境為Inter(R)Xeon(R)?CPU?E5-1603?0?2.8GHz處理器,Windows10操作系統(tǒng),采用PyCharm、Python語言。選用SIR(http://sir.unl.edu/portal/index.php)網(wǎng)站的schedule?、printtokens?、gzip?等5個項目部分錯誤版本作為實驗數(shù)據(jù)集,同時,選取系統(tǒng)依賴圖SDG[6]、數(shù)據(jù)流圖DFG[8]進(jìn)行實驗對比。

4.1?切片效率

為評估代碼切片方法的有效性,針對5個數(shù)據(jù)集的SDG、DFG和CFVDG3種方法的切片時間、切片約簡比ω以及切片時間縮短占比進(jìn)行對比,如表1所示,其中ω=(PN-SN)/PN,PN為程序總代碼數(shù),SN為切片總代碼數(shù)。ω值越高,說明切片執(zhí)行后與缺陷相關(guān)的特征代碼越緊密,代碼缺陷分析越快。

由表1可知,CFVDG方法切簡比平均達(dá)28.7%,相比DFG平均提高約4.73%。另外,由于二次執(zhí)行的交叉函數(shù)可直接提取CFVDG存儲的參數(shù)切片輪廓,縮減了切片提取時間,使得CFVDG相比傳統(tǒng)的SDG和DFG方法切片時間最高縮短4.23秒,時間縮短相比對應(yīng)傳統(tǒng)方法的切片時間占比最高為20%。

4.2?切片質(zhì)量

實驗中使用平均精度率和平均減少率來評估CFVDG質(zhì)量和切片改進(jìn)程度,平均精度率用a表示,代表對于每個切片準(zhǔn)則中的變量?,是CFVDG切片與SDG(DFG)切片交集中的代碼數(shù)與CFVDG切片數(shù)的平均之比;平均減少率用β表示,代表對于每個切片準(zhǔn)則?,是CFVDG切片代碼數(shù)與SDG(DFG)切片數(shù)的平均之比,計算方法如下:

(1)

(2)

式(1)和式(2)中的n(?)表示切片準(zhǔn)則數(shù)目,SN?表示對準(zhǔn)則中變量?的切片語句數(shù)目,不同依賴圖切片方法對數(shù)據(jù)集的平均精度率和平均減少率差異如圖3和圖4所示。針對5個數(shù)據(jù)集,CFVDG切片的平均精度率均在88.5%之上,并且切片減少率最高達(dá)8.94%,最低到1.54%。

4.3?缺陷檢測精度

為驗證惡意約束庫中缺陷約束發(fā)現(xiàn)代碼漏洞和減少誤報效果,選取精準(zhǔn)率和錯誤率作為脆弱性分析評估指標(biāo),精確率代表實際總?cè)毕輸?shù)中正確檢測數(shù)的占比,誤檢率則代表實際總?cè)毕輸?shù)中誤報數(shù)占比,精準(zhǔn)率和誤檢率分別用Z和X表示。

Z?=?tp/tp?+?fp????????????????(3)

X?=?fp/tp?+?fp????????????????(4)

式(3)和式(4)中的tp為檢測缺陷正確數(shù),fp為檢測缺陷誤報數(shù),缺陷檢測情況如表2所示,數(shù)據(jù)集缺陷檢測精準(zhǔn)率明顯增加(范圍70%~82%,平均74.8%),同比切片前提高平均約6%;誤檢率明顯減少(范圍6%~9%,平均7.4%),同比切片前減少平均2.8%。

4.4?程序規(guī)模對性能影響

為驗證程序規(guī)模對切片效果影響,分析了代碼行數(shù)從750~10?000的程序平均切片大小和代碼缺陷覆蓋率,如圖5所示。隨著代碼行數(shù)的增加,切片仍能平均約簡16.5%的代碼;同時,隨著程序規(guī)模的擴大,會較小程度影響切片缺陷覆蓋率,但仍能覆蓋平均83.8%的缺陷代碼。

5??結(jié)語

本文提出了遍歷控制流變量依賴圖CFVDG的變量關(guān)聯(lián)切片方法,約簡無效漏洞代碼信息,使用中間參數(shù)切片的映射,能有效提高切片的效率和質(zhì)量,以及提升缺陷檢測精準(zhǔn)率,降低誤檢率。接下來,通過嘗試對多語言、混合語言切片,優(yōu)化和精確語義依賴?yán)斫?,以實現(xiàn)深層次的漏洞檢測,并結(jié)合動態(tài)切片和約束求解考慮執(zhí)行狀態(tài)進(jìn)行缺陷定位分析。

參考文獻(xiàn)

[1]?王淑棟,尹文靜,董玉坤,等.面向順序存儲結(jié)構(gòu)的數(shù)據(jù)流分析[J].軟件學(xué)報,2020,31(5):1276-1293.

[2]?鄒德清,李響,黃敏桓,等.基于圖結(jié)構(gòu)源代碼切片的智能化漏洞檢測系統(tǒng)[J].網(wǎng)絡(luò)與信息安全學(xué)報,?2021,7(5):113-122.

[3]?梅瑞,嚴(yán)寒冰,沈元,等.二進(jìn)制代碼切片技術(shù)在惡意代碼檢測中的應(yīng)用研究[J].信息安全學(xué)報,2021,6(3):125-140.

[4]?潘家曄,莊毅,孫炳林.基于漸進(jìn)擴展的二進(jìn)制程序數(shù)據(jù)流分析方法[J].軟件學(xué)報,2022,33(9):3249-3270.

[5]?黎君玉,羅琴,劉智.基于控制流分析的導(dǎo)向性灰盒模糊測試方法[J].電子測量技術(shù),2022,45(15):21-27.

[6]?GALINDO?C,?Pérez?S,?Silva?J.?Exception-Sensitive?Program?Slicing[J].?Journal?of?Logical?and?Algebraic?Methods?in?Programming,2023,?130:100832.

[7]?壽增,許睿超,馬驍,等.基于數(shù)據(jù)依賴圖聚類的開源軟件靜態(tài)分析系統(tǒng)[J].中國電子科學(xué)院研究院學(xué)報,2022,17(8):743-747,772.

[8]?Jiang?T,?CUI?L,?LIN?Z,?et?al.?A?Survey?of?Malware?Classification?Methods?Based?on?Data?Flow?Graph[C]?//Proc?of?8th?International?Conference?of?Pioneering?Computer?Scientists,?Engineers?and?Educators,?Chengdu,?China:?CCIS,?2022:80-93.

猜你喜歡
控制流結(jié)點語句
抵御控制流分析的Python 程序混淆算法
工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
電子科技(2021年2期)2021-01-08 02:25:58
抵御控制流分析的程序混淆算法
重點:語句銜接
Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點個數(shù)估計
精彩語句
基于控制流隱藏的代碼迷惑
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
基于Raspberry PI為結(jié)點的天氣云測量網(wǎng)絡(luò)實現(xiàn)
基于DHT全分布式P2P-SIP網(wǎng)絡(luò)電話穩(wěn)定性研究與設(shè)計
东乡族自治县| 阿巴嘎旗| 宜昌市| 湟源县| 内江市| 木兰县| 峨眉山市| 新建县| 义马市| 高陵县| 新河县| 东台市| 桂东县| 广州市| 南雄市| 洱源县| 三亚市| 桐柏县| 徐闻县| 始兴县| 南通市| 中卫市| 合川市| 通城县| 承德市| 丁青县| 咸宁市| 湟中县| 漠河县| 拉孜县| 汪清县| 古丈县| 乌审旗| 信阳市| 隆昌县| 陕西省| 克什克腾旗| 商河县| 铅山县| 绍兴县| 呼图壁县|