什麼叫漏洞 hash?

常在烏雲上看到此類術語,比如

漏洞標題: 貓撲管理員名單外漏

漏洞hash:148b1878344513706344711eeaa42236

烏雲的漏洞hash值是怎麼計算得出的?有什麼用?


猜測與零知識證明有關。

對軟體公司來說,自己公司的軟體中如果存在安全漏洞,並因沒有及時修復而給客戶帶來損失的話,會給軟體公司造成很大的負面影響。所以他們通常會樂意高價收購安全漏洞。

對漏洞尋找者來說,在沒有源代碼的情況下尋找軟體的 Bug 是一件十分消耗時間與精力的事,自然他們希望得到報酬。

但問題來了,如果軟體公司在作者修復了漏洞卻拒絕支付報酬怎麼辦?

因此作者必須找到一種能夠證明確實是自己發現了漏洞的方法,但又不能公布漏洞細節。利用 Hash 的不可逆性可以做到這一點,即零知識證明。

舉例:

作者將與漏洞有關的那一部分二進位代碼作 hash 運算後,得到了一串數字,然後作者在自己的網站上公布這一 hash 值,同時告知xx公司:「你們的軟體有安全隱患,趕緊聯繫我吧,你們要是不回購,我可就要在黑市上高價出售啦!」

萬一xx公司按作者的的提示修復漏洞後卻耍賴,作者就可以公布有漏洞的代碼,大家將其作 hash 運算後一看,果然與作者之前公布的 hash 是一致的。這樣所有人都知道xx公司是個騙子了。

因些作者通過「漏洞 hash」可以保證自己的利益不受侵害。


就是漏洞描述及復現過程全文的md5值。

反對 @SecWiki 的「漏洞標題漢字的hash值」,這東西公開能看到的幹嘛要hash


Hash,一般翻譯做「散列」,也有直接音譯為「哈希」的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
漏洞hash就是指的漏洞文件的hash值。一般後面跟著就是他的散列值了。


這個hash主要是用來區別不同的漏洞的標識,其值的話一般是通過某種演算法進行計算的。例如可以採用如下演算法得到:

  1. 漏洞標題漢字的hash值

  2. 漏洞描述文字的hash值
  3. 其他關鍵字


推薦閱讀:

Android 上的漏洞「寄生獸」對普通用戶有何影響,如何防範?
操作系統為什麼都有無數的漏洞?是故意留下的還是技術上無法達到完美?
如何看待 Intel CPU 設計漏洞對雲服務廠商的影響?
從硬體上修復Meltdown與Spectre會是怎樣的思路?困難在哪裡?
為何一些人仍然認為光速不變和相對論是錯的?

TAG:程序漏洞 | 漏洞 |