coverity
Coverity是業(yè)界領(lǐng)先的代碼靜態(tài)檢查工具,支持C/C++、C#、Java、Python等多種語(yǔ)言的質(zhì)量缺陷和和安全問(wèn)題的分析與修復(fù)。Coverity擁有業(yè)界最高的代碼檢查準(zhǔn)確率,能夠挖掘深層次的代碼質(zhì)量問(wèn)題,同時(shí)能夠檢查OWASP top 10和CWE Top 25安全問(wèn)題,并可和業(yè)界主流應(yīng)用生周期工具集成,從而幫助企業(yè)在研發(fā)前期發(fā)現(xiàn)并解決問(wèn)題,以最小的成本保證軟件產(chǎn)品研發(fā)質(zhì)量和安全。
Coverity能夠找到的 C/C++ 缺陷 |
資源泄露 :– 內(nèi)存泄露– Microsoft COM 內(nèi)存泄露– Object資源泄露– 不當(dāng)delete未初始化變量– 返回語(yǔ)句丟失– 未初始化的指針/標(biāo)量/數(shù)組 讀寫(xiě)– 類或結(jié)構(gòu)體中未初始化的數(shù)據(jù)成員并發(fā)缺陷– 死鎖– 競(jìng)態(tài)條件(Race conditions)– 阻塞調(diào)用誤用算術(shù)錯(cuò)誤– 負(fù)變量不當(dāng)使用– 異常符號(hào)擴(kuò)展– 整數(shù)溢出– 除零異常內(nèi)存崩潰– 內(nèi)存訪問(wèn)溢出– 字符串長(zhǎng)度計(jì)算錯(cuò)誤– 緩沖區(qū)溢出– 寫(xiě)指針溢出– 負(fù)數(shù)組索引寫(xiě)入– 內(nèi)存錯(cuò)誤分配– 錯(cuò)誤的內(nèi)存釋放非法內(nèi)存訪問(wèn)– 不正確的delete操作– 溢出指針讀取– 越界讀取– 返回指針至本地變量– 負(fù)數(shù)組索引讀取– 已釋放指針讀/寫(xiě)– 不兼容的指針轉(zhuǎn)換控制流缺陷– 邏輯/結(jié)構(gòu)死代碼– Switch語(yǔ)句中break遺失– 非本地資源不當(dāng)使用 | 程序假死– 死循環(huán)– 雙重鎖或解鎖丟失– 負(fù)循環(huán)邊界值– 線程死鎖– 持鎖過(guò)程中調(diào)用sleep()空指針引用– Null檢查后引用空指針– 直接引用返回的空指針– Null檢查前引用空指針錯(cuò)誤處理缺陷– 未驗(yàn)證的返回值– 未獲取異常– 負(fù)變量不當(dāng)使用代碼維護(hù)性缺陷– 多返回語(yǔ)句– 無(wú)效變量異常代碼– 復(fù)制/粘貼錯(cuò)誤– 格式錯(cuò)誤– 輸入變量調(diào)換不安全的數(shù)據(jù)處理– 不可信的循環(huán)數(shù)據(jù)源– 使用非可信數(shù)據(jù)源讀寫(xiě)數(shù)組/指針– 使用非可信數(shù)據(jù)源格式化字符串性能缺陷– 值傳遞大參數(shù)– 使用大堆棧安全措施違反– 緩沖區(qū)溢出– 固定長(zhǎng)度緩沖區(qū)寫(xiě)入– 非安全函數(shù)調(diào)用– 非安全臨時(shí)文件使用– 檢查/使用時(shí)間不一致– 用戶空間指針不當(dāng)使用API錯(cuò)誤使用– 非安全chroot調(diào)用– 錯(cuò)誤的迭代器使用– printf() 參數(shù)不匹配 |
?Coverity能夠找到的 Java 缺陷: |
類層次結(jié)構(gòu)不一致Web 應(yīng)用安全缺陷(OWASP Top 10)– 跨站腳本攻擊– SQL 注入– 命令行注入– 路徑遍歷…資源泄露– 數(shù)據(jù)庫(kù)連接資源泄露– 資源泄露– Socket & Stream 泄露并發(fā)數(shù)據(jù)訪問(wèn)異常– 變量非原子更新– 雙重檢查鎖定– 數(shù)據(jù)競(jìng)態(tài)條件– Volatile非原子更新– Servlet 屬性無(wú)效鎖定– 單例模式競(jìng)態(tài)條件程序假死– 線程死鎖– 死鎖空指針引用– Null檢查后引用空指針– 直接引用返回的空指針– Null檢查前引用空指針API 使用錯(cuò)誤– 無(wú)效迭代器使用– 不可修改的集合錯(cuò)誤– 已釋放資源調(diào)用性能缺陷– 低效率方法使用– 在循環(huán)中連接字符串– 冗余同步 | 邏輯錯(cuò)誤– 不可達(dá)代碼– 未使用變量– 常量表達(dá)式– 非本地資源不當(dāng)使用– 整數(shù)溢出– 不當(dāng)分號(hào)類層次結(jié)構(gòu)不一致– 調(diào)用 super.clone() 或 supler.finalize()失敗– 父函數(shù)調(diào)用丟失– 構(gòu)造函數(shù)中使用虛函數(shù)控制流缺陷– 在Finally模塊中返回– Switch語(yǔ)句中break丟失錯(cuò)誤處理缺陷– 未驗(yàn)證的返回值數(shù)據(jù)庫(kù)操作– 不正確的實(shí)體哈希– Load函數(shù)返回值錯(cuò)誤驗(yàn)證– 不完全持續(xù)周期– get()不當(dāng)使用代碼可維護(hù)性缺陷– 調(diào)用已過(guò)期方法– 顯式垃圾收集– 非靜態(tài)方法中設(shè)置靜態(tài)變量– 復(fù)制/粘貼錯(cuò)誤– 不可達(dá)代碼可疑代碼– 參數(shù)次序錯(cuò)誤格式錯(cuò)誤 |
?Coverity能夠找到的 C# 缺陷 |
資源泄露– 數(shù)據(jù)庫(kù)連接資源泄露– 資源泄露– Socket & Stream 泄露API 使用錯(cuò)誤– 已釋放資源調(diào)用并發(fā)數(shù)據(jù)訪問(wèn)異常– 變量非原子更新– 數(shù)據(jù)競(jìng)態(tài)條件性能缺陷– 低效率方法使用– 在循環(huán)中連接字符串– 冗余同步程序假死– 線程死鎖– 死循環(huán)可疑代碼– 復(fù)制/粘貼錯(cuò)誤– 參數(shù)次序錯(cuò)誤– 格式錯(cuò)誤? | 類層次結(jié)構(gòu)不一致– 調(diào)用 base.close() 或 base.dispose()失敗– 父函數(shù)調(diào)用丟失控制流缺陷– 可疑的額外分號(hào)– 不一致比較– 不兼容的類型比較空指針引用– Null檢查后引用空指針– 直接引用返回的空指針– Null檢查前引用空指針?biāo)阈g(shù)錯(cuò)誤– 錯(cuò)誤移位操作– 不正確的表達(dá)式– 表達(dá)式計(jì)算過(guò)程中溢出 |