• 
    

    
    

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

      軟件安全性設(shè)計(jì)常見(jiàn)問(wèn)題的思考

      2017-12-14 22:35:50馮濟(jì)舟朱婷婷
      航天標(biāo)準(zhǔn)化 2017年4期
      關(guān)鍵詞:環(huán)境變量字符串緩沖區(qū)

      馮濟(jì)舟 朱婷婷

      (中國(guó)電子科技集團(tuán)38所,安徽合肥,230088)

      軟件安全性設(shè)計(jì)常見(jiàn)問(wèn)題的思考

      馮濟(jì)舟 朱婷婷

      (中國(guó)電子科技集團(tuán)38所,安徽合肥,230088)

      軟件能力成熟度模型集成;安全隱患;軟件質(zhì)量。

      軟件測(cè)試是軟件能力成熟度模型集成的重要活動(dòng),隨著軟件規(guī)模和復(fù)雜程度的不斷提高,軟件測(cè)試技術(shù)也不斷發(fā)展,軟件在各個(gè)領(lǐng)域比重不斷加深的條件下,對(duì)于保障軟件質(zhì)量的軟件測(cè)試也提出了更高的要求。此外,由于近年來(lái)軟件占產(chǎn)品的比重不斷提升,對(duì)軟件的驗(yàn)證提出了更加嚴(yán)格的要求。然而在代碼實(shí)現(xiàn)過(guò)程中,某些編程時(shí)忽視的問(wèn)題,不僅無(wú)法通過(guò)測(cè)試手段發(fā)現(xiàn),而且會(huì)給軟件帶來(lái)安全隱患。

      目前,各軟件企業(yè)不僅對(duì)質(zhì)量保障的投入不斷加大,而且作為保障軟件質(zhì)量最有效的測(cè)試也不斷發(fā)展和完善,形成了一套比較系統(tǒng)而又嚴(yán)密的體系。其中包括文檔審查、代碼審查、靜態(tài)分析、單元測(cè)試、集成測(cè)試、軟件配置項(xiàng)測(cè)試和系統(tǒng)測(cè)試,并對(duì)每個(gè)活動(dòng)的具體內(nèi)容進(jìn)行了規(guī)范和要求。然而遺憾的是,經(jīng)過(guò)如此周密的測(cè)試過(guò)程,軟件依然會(huì)出現(xiàn)一些意想不到的問(wèn)題。

      根據(jù)實(shí)際項(xiàng)目經(jīng)驗(yàn),筆者歸納和總結(jié)出一類目前測(cè)試方法無(wú)法發(fā)現(xiàn)且具有一定的規(guī)律性、易被忽視的軟件安全性設(shè)計(jì)常見(jiàn)問(wèn)題,以加強(qiáng)開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中的編碼規(guī)范,增強(qiáng)測(cè)試人員在代碼檢查過(guò)程中識(shí)別風(fēng)險(xiǎn)代碼的能力,對(duì)提高軟件質(zhì)量具有積極意義。

      1 當(dāng)前系統(tǒng)時(shí)間作為訪問(wèn)權(quán)限控制的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)函數(shù)、MFC庫(kù)函數(shù)的時(shí)間相關(guān)函數(shù)時(shí),所獲取的當(dāng)前系統(tǒng)時(shí)間有可能被篡改;當(dāng)作為訪問(wèn)敏感信息的鍵值或者訪問(wèn)指定函數(shù)的許可時(shí),有可能被可疑的當(dāng)前系統(tǒng)時(shí)間引發(fā)安全漏洞,導(dǎo)致系統(tǒng)的安全隱患,使本不應(yīng)具有訪問(wèn)權(quán)限的用戶具有了超越權(quán)限的控制和操作。對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用標(biāo)準(zhǔn)C庫(kù)和MFC庫(kù)中與時(shí)間有關(guān)的函數(shù)。其中,標(biāo)準(zhǔn)C庫(kù)中與時(shí)間有關(guān)的函數(shù)如: time、 clock、 ctime、 gmtime、 localtime、mktime和strftime;標(biāo)準(zhǔn)MFC庫(kù)中與時(shí)間有關(guān)的函數(shù)如: GetTime、 GetYear、 GetMonth、 GetDay、GetHour、 GetMinute、 GetSecond 和GetDayOfWeek。

      2 產(chǎn)生隨機(jī)數(shù)作為訪問(wèn)權(quán)限控制的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)函數(shù)的隨機(jī)數(shù)函數(shù)時(shí),所獲取的隨機(jī)數(shù)是偽隨機(jī)數(shù),即使用最后生成的數(shù)據(jù)作為創(chuàng)建下一個(gè)數(shù)據(jù)的種子,這樣便會(huì)導(dǎo)致攻擊者通過(guò)猜測(cè)和計(jì)算的手段得出下一個(gè)數(shù)據(jù)。如此,對(duì)于Web會(huì)話采用的隨機(jī)會(huì)話ID,如果使用標(biāo)準(zhǔn)C庫(kù)函數(shù)的隨機(jī)數(shù)函數(shù)產(chǎn)生隨機(jī)數(shù),則有可能被可疑的用戶猜測(cè)到產(chǎn)生的下一個(gè)數(shù)據(jù)結(jié)果,通過(guò)獲得訪問(wèn)需要的有權(quán)限數(shù)據(jù),偽造會(huì)話身份,進(jìn)而達(dá)到欺騙此次會(huì)話的效果。

      對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用標(biāo)準(zhǔn)C庫(kù)函數(shù)的隨機(jī)數(shù)函數(shù)。其中,標(biāo)準(zhǔn)C庫(kù)中與生成隨機(jī)數(shù)有關(guān)的函數(shù)如:rand、 random、 randomize和 srand。

      3 使用系統(tǒng)中的環(huán)境變量的安全性

      當(dāng)使用系統(tǒng)中的環(huán)境變量時(shí),所使用的系統(tǒng)中的環(huán)境變量可能使惡意用戶通過(guò)環(huán)境變量傳遞的一個(gè)專門制作的字符串到一個(gè)正在運(yùn)行的程序中,這樣就可導(dǎo)致緩沖區(qū)溢出;或者所使用的系統(tǒng)中的環(huán)境變量可能是通過(guò)putenv寫入的應(yīng)用程序的敏感信息 (如密碼),惡意用戶就會(huì)捕獲并使用以獲得未經(jīng)授權(quán)的權(quán)限或訪問(wèn)敏感數(shù)據(jù)。

      對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用系統(tǒng)中的環(huán)境變量,通過(guò)編程開(kāi)發(fā)過(guò)程中對(duì)系統(tǒng)環(huán)境變量使用的限制,會(huì)給系統(tǒng)帶來(lái)更好的安全性和可靠性。

      4 使用加載庫(kù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)函數(shù)的加載庫(kù)函數(shù)時(shí),要確保加載庫(kù)所指定的文件名是完整修飾的,如此才可以保證被加載的庫(kù)是始終正確的。當(dāng)所加載的庫(kù)指定的文件名不是完整修飾時(shí),那么期望的模塊可以被攻擊者所取代,給系統(tǒng)帶來(lái)安全隱患。比如說(shuō),加載庫(kù)指定的文件名缺少了文件擴(kuò)展名時(shí),那么系統(tǒng)將會(huì)給此文件使用 “.dll”作為文件擴(kuò)展名,這樣攻擊者就可以在加載庫(kù)函數(shù)指定的搜索路徑中,在系統(tǒng)找到期望的DLL之前的某個(gè)位置,放置有問(wèn)題的DLL,這樣系統(tǒng)就加載了攻擊者指定的DLL,即可能將一個(gè)DLL木馬注入到所運(yùn)行的系統(tǒng)進(jìn)程中。

      在代碼中加載庫(kù)時(shí),需要考慮使用包含具有參數(shù)完整修飾文件名的 “LoadLibrary”函數(shù)或“LoadLibraryEx”函數(shù),以確保加載正確的庫(kù)。如果庫(kù)文件沒(méi)有擴(kuò)展名時(shí),則將 “.”追加到最后,保證文件名的完整性以及可以被正確識(shí)別,確保庫(kù)的正確加載。

      5 使用僅帶有一個(gè)可變參數(shù)的printf/wprintf函數(shù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)僅帶有一個(gè)可變參數(shù)的printf/wprintf函數(shù)時(shí),如果printf/wprintf函數(shù)傳遞了一個(gè)沒(méi)有格式指示符的變量,這個(gè)變量可以包含一個(gè)巧妙的格式化字符串 (包括格式字符 “%n、%x或%s”),則該字符串有可能被用于執(zhí)行惡意指令或使應(yīng)用程序崩潰。

      避免使用僅帶有一個(gè)可變參數(shù)的printf/wprintf函數(shù)。對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用標(biāo)準(zhǔn)C庫(kù)僅帶有一個(gè)可變參數(shù)的printf/wprintf函數(shù)。

      6 使用僅帶兩個(gè)參數(shù)且第二個(gè)參數(shù)是變量的fprintf/fwprintf函數(shù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)僅帶兩個(gè)參數(shù)且第二個(gè)參數(shù)是變量的fprintf/fwprintf函數(shù)時(shí),由于使用了沒(méi)有格式指示符的fprintf/fwprintf函數(shù),在傳遞沒(méi)有格式指示符的變量時(shí),此變量可以包含一個(gè)靈活的格式化的字符串 (包括格式字符 “%n、%x和%s”),則該字符串有可能被用于執(zhí)行惡意指令或使應(yīng)用程序崩潰。

      對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用標(biāo)準(zhǔn)C庫(kù)僅帶兩個(gè)參數(shù)且第二個(gè)參數(shù)是變量的fprintf/fwprintf函數(shù)。

      7 使用向未做邊界檢查的緩沖區(qū)作寫操作的C函數(shù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)向未做邊界檢查的緩沖區(qū)作寫操作的函數(shù)時(shí),由于對(duì)寫入的邊界未檢查緩沖區(qū),因此系統(tǒng)不能正確處理超出邊界的錯(cuò)誤,造成系統(tǒng)安全的隱患。

      對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用向未作邊界檢查的緩沖區(qū)做寫操作的C函數(shù)。其中,標(biāo)準(zhǔn)C庫(kù)中與未作邊界檢查的緩沖區(qū)做寫操作有關(guān)的函數(shù)如:strcpy、strcat、sprintf、vsprintf、 gets、 strncpy、 strncat、 snprintf和 fgets。

      8 使用string類中data函數(shù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)String::data函數(shù)返回字符串時(shí),由于該字符串對(duì)象中沒(méi)有包含一個(gè)終止字符,在某種情況下,特別是當(dāng)與C風(fēng)格遺留代碼接口交互時(shí),這可能會(huì)導(dǎo)致緩沖區(qū)溢出或其它字符串相關(guān)的安全漏洞,造成系統(tǒng)安全的隱患。

      對(duì)于具有較高安全性需求且具有類似情境的系統(tǒng),應(yīng)避免使用string類中data函數(shù),可以使用data函數(shù)或c_str函數(shù),這些函數(shù)會(huì)返回一個(gè)終止字符串。

      9 使用vfork函數(shù)的安全性

      當(dāng)使用標(biāo)準(zhǔn)C庫(kù)vfork函數(shù)時(shí),該函數(shù)可能給系統(tǒng)帶來(lái)兩種安全隱患:①當(dāng)代碼改變或當(dāng)編譯器版本改變時(shí),程序編碼中所調(diào)用vfork函數(shù)的地方很容易造成系統(tǒng)的失??;②從可移植性方面來(lái)講,由vfork函數(shù)生成的子進(jìn)程,其運(yùn)行不妨礙其父進(jìn)程的運(yùn)行,許多編譯器將其生成隱藏的臨時(shí)對(duì)象或其它代碼結(jié)構(gòu),這會(huì)造成意想不到的后果。

      對(duì)于具有較高安全性需求的系統(tǒng),應(yīng)禁止使用vfork函數(shù),相應(yīng)的情境可以使用fork函數(shù)代替。

      [1]萬(wàn)江平,孔學(xué)東,楊建梅.集成能力成熟度模型 (CMMI) 的研究 [J].計(jì)算機(jī)應(yīng)用研究, 2001,(10).

      [2]李興兵,李孟軍,譚躍進(jìn).軍用CMMI模型的建立初探 [J]. 兵工自動(dòng)化, 2003,(06).

      文 摘:代碼實(shí)現(xiàn)過(guò)程中存在訪問(wèn)權(quán)限以及使用環(huán)境變量、加載庫(kù)、printf/wprinft函數(shù)、緩沖區(qū)作寫操作的C函數(shù)、string類中data函數(shù)、vfork函數(shù)等的安全性問(wèn)題,對(duì)這些無(wú)法通過(guò)測(cè)試手段發(fā)現(xiàn)的問(wèn)題提出相應(yīng)的解決措施。

      馮濟(jì)舟 (1984年—),男,高級(jí)工程師,研究方向:軟件測(cè)試和軟件工程化。

      猜你喜歡
      環(huán)境變量字符串緩沖區(qū)
      基于最大熵模型的云南思茅松潛在分布區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
      徹底弄懂Windows 10環(huán)境變量
      基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      一種新的基于對(duì)稱性的字符串相似性處理算法
      依據(jù)字符串匹配的中文分詞模型研究
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      電視技術(shù)(2012年1期)2012-06-06 08:13:58
      古交市| 洪江市| 科技| 阜阳市| 兴宁市| 三江| 朔州市| 利川市| 绥江县| 平凉市| 凌海市| 汕头市| 眉山市| 洛南县| 嘉义县| 柯坪县| 栾城县| 静乐县| 屯留县| 金湖县| 平阴县| 绍兴县| 闽清县| 海阳市| 牙克石市| 包头市| 高尔夫| 桐梓县| 桃源县| 靖江市| 赞皇县| 拜城县| 湖州市| 临西县| 广南县| 姜堰市| 红安县| 永和县| 西昌市| 九江县| 化德县|