sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁
?聚焦源代碼安全,網羅國內外最新資訊!
*聲明:《缺陷周話》欄目系列文章由奇安信代碼衛士團隊原創出品。未經許可,禁止轉載。轉載請注明“轉自奇安信代碼衛士 www.codesafe.cn”。
代碼審計是使用靜態分析發現源代碼中安全缺陷的方法,輔助開發或測試人員在軟件上線前較為全面地了解安全問題,防患于未然,因此一直以來都是學術界和產業界研究的熱點,并已成為安全開發生命周期?SDL 和?DevSecOps?等保障體系的重要技術手段。
奇安信代碼衛士團隊基于自主研發的國內首款源代碼安全檢測商用工具,以及十余年漏洞技術研究的積累,推出“缺陷周話”系列欄目。每周針對 CWE、OWASP?等標準中的一類缺陷,結合實例和工具使用進行詳細介紹,旨在為廣大開發和安全人員提供代碼審計的基礎性標準化教程。
缺陷周話?? 第59期??
1?????重復加鎖?? ? ? ? ?? ? ? ? ?
??1、重復加鎖
所有針對互斥量的加鎖解鎖操作,都必須針對同一模塊并且在同一抽象層面進行,否則將會可能導致某些加鎖/解鎖操作不會依照多線程設計而被執行,重復加鎖即對已經加鎖的資源進行再次加鎖。2、“重復加鎖”的危害
某些情況下,重復加鎖操作會導致第二次加鎖操作要等待前一次加鎖的解鎖操作,由于加鎖操作的重復,被等待的行為永遠無法達到,造成死鎖、程序拒絕服務等漏洞。CVE中也有一些與之相關的漏洞信息,從2019年1月至2019年11月,CVE中就有1條相關漏洞信息。漏洞信息如下:| CVE-2019-14763 | Linux kernel 4.16.4之前版本的drivers/usb/dwc3/gadget.c 中存在一個 double-locking error(重復加鎖錯誤),導致死鎖問題。 |
3、示例代碼
示例源于toyota-itc-benchmarks-master (https://github.com/regehr/itc-benchmarks),源文件名:double_lock.c。3.1 缺陷代碼
在上述示例代碼中,第40行使用 pthread_mutex_lock()函數對double_lock_001_glb_mutex進行加鎖操作,在沒有進行解鎖的情況下,第42行再次使用 pthread_mutex_lock()函數對double_lock_001_glb_mutex進行加鎖操作,因此存在“重復加鎖”問題。使用代碼衛士對上述示例代碼進行檢測,可以檢出“重復加鎖”缺陷,顯示等級為中。如圖1所示:圖1:“重復加鎖”檢測示例
3.2 修復代碼
在上述修復代碼中,第40行使用 pthread_mutex_lock()?函數對double_lock_001_glb_mutex進行加鎖操作,在第42行使用pthread_mutex_unlock()對其進行解鎖,此時第44行再次進行加鎖操作時,就避免了重復加鎖問題。使用代碼衛士對修復后的代碼進行檢測,可以看到已不存在“重復加鎖”缺陷。如圖2:圖2:修復后檢測結果
4、如何避免“重復加鎖”
(1)在進行加鎖操作時,需要檢查代碼邏輯,避免對已經進行鎖定的互斥量進行重復加鎖。(2)當互斥量類型為PTHREAD_MUTEX_ERRORCHECK時,會提供錯誤檢查。如果某個線程嘗試重新鎖定的互斥鎖已經由該線程鎖定,則將返回錯誤。推薦閱讀【缺陷周話】第58期:XQuery注入
【缺陷周話】第57期:函數調用時參數不匹配
【缺陷周話】第56期:ContentProvider URI 注入
【缺陷周話】第55期:返回值未初始化
【缺陷周話】第54 期:組件間通信XSS
【缺陷周話】第53期:不當的循環終止
【缺陷周話】第52期——不安全的SSL:過于廣泛的信任證書
【缺陷周話】第51期:死代碼
【缺陷周話】第50期:日志偽造
【缺陷周話】第49期:未使用的局部變量
【缺陷周話】第48期:動態解析代碼
【缺陷周話】第47期:參數未初始化
【缺陷周話】第46期:郵件服務器建立未加密的連接
【缺陷周話】第45期:進程控制
【缺陷周話】第44期:Spring Boot 配置錯誤:不安全的 Actuator
【缺陷周話】第43期:不當的函數地址使用
【缺陷周話】第42期 — Cookie:未經過SSL加密
【缺陷周話】第41期:忽略返回值
【缺陷周話】第40期:JSON 注入
【缺陷周話】第 39期:解引用未初始化的指針
【缺陷周話】第 38期——不安全的反序列化:XStream
【缺陷周話】第 37期:未初始化值用于賦值操作
【缺陷周話】第 36 期:弱驗證
【缺陷周話】第 35 期:除數為零
【缺陷周話】第 34 期:重定向
【缺陷周話】第 33期:錯誤的資源關閉
【缺陷周話】第 32期:弱加密
【缺陷周話】第 31 期:錯誤的內存釋放方法
【缺陷周話】第 30 期:不安全的哈希算法
【缺陷周話】第 29 期:返回棧地址
【缺陷周話】第 28 期:被污染的內存分配
【缺陷周話】第 27 期:不安全的隨機數
【缺陷周話】第 26期:被污染的格式化字符串
【缺陷周話】第 25期:硬編碼密碼
【缺陷周話】第 24期:在scanf 函數中沒有對 %s 格式符進行寬度限制
【缺陷周話】第 23期:雙重檢查鎖定
【缺陷周話】第 22期:錯誤的內存釋放對象
【缺陷周話】第 21 期:數據庫訪問控制
【缺陷周話】第 20 期:無符號整數回繞
【缺陷周話】第19期:LDAP 注入
【缺陷周話】第18 期? XPath 注入
【缺陷周話】第17 期:有符號整數溢出
【缺陷周話】第 16 期 — 資源未釋放:流
【缺陷周話】第 15 期 — 資源未釋放:文件
【缺陷周話】第 14 期 :HTTP 響應截斷
【缺陷周話】第 13期 :二次釋放
【缺陷周話】第 12期 :存儲型 XSS
【缺陷周話】第 11期 :釋放后使用
【缺陷周話】第 10 期 :反射型 XSS
【缺陷周話】第 9 期 :緩沖區下溢
【缺陷周話】第 8 期 :路徑遍歷
【缺陷周話】第 7 期 :緩沖區上溢
【缺陷周話】第 6 期 :命令注入
【缺陷周話】第5期 :越界訪問
【缺陷周話】第4期 :XML 外部實體注入
【缺陷周話】第3期 :內存泄漏
【缺陷周話】第 2 期 :SQL 注入
【缺陷周話】第1期 :空指針解引用
*奇安信代碼衛士團隊原創出品。未經許可,禁止轉載。轉載請注明“轉自奇安信代碼衛士 www.codesafe.cn”。
奇安信代碼衛士 (codesafe)
國內首個專注于軟件開發安全的產品線。
總結
以上是生活随笔為你收集整理的sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烤肉宣传文案30句
- 下一篇: 小米摄像头有onvif协议_监控摄像头完