成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

哈希函數的隱藏危險:長度擴展攻擊與服務端驗證的安全隱患

安全 應用安全
簡而言之,將一個 “1” 后面跟著 m 個 “0”,再加上一個 64 位或 128 位的整數,附加到消息的末尾,以生成長度為 512*n 的填充消息。附加的整數是原始消息的長度。然后,填充消息將被哈希函數處理為 n 個 512 位的塊。

簡介

Length Extension Attack 是一種與某些特定類型的哈希函數(如 MD5,SHA-1 和 SHA-2)的特性有關的攻擊。簡單來說,這種攻擊利用了一個事實,即知道 H(message) 和 message 的長度,我們可以輕松計算出 H(message || padding || extension) 而不需要知道 message 本身。其中 “||” 表示連接,“padding” 是根據哈希函數的規定添加的。

這是因為這些哈希函數使用了 Merkle-Damg?rd 結構,它將輸入切片為多個塊,并且每個塊的哈希值依賴于前一個塊的哈希值。這意味著一旦我們計算出了某個消息的哈希值,就有了一個狀態,可以從那里開始并添加更多的塊。

一種服務端驗證模式

為方便描述漏洞場景,我們首先假設有這樣一種服務端驗證模式,即用戶嘗試登錄時,服務端會根據用戶的 ID、名字以及一個僅服務端知道的 30 位密鑰,通過特定的哈希算法生成一個哈希值,并將其下發給客戶端。隨后,當客戶端嘗試訪問某些特定接口,例如修改用戶權限的接口時,服務端會根據前端 POST 的角色 ID、角色名字、角色權限以及同樣的 30 位密鑰,重新生成哈希進行驗證。如果上傳的哈希與服務端生成的哈希一致,則視為驗證通過,并將新的角色權限寫入數據庫。

為便于理解,下面是根據描述寫的一些簡單的代碼做為示例:

越權思路

由于驗證模式存在漏洞,攻擊者可以在不知道 SecretKey 的情況下,通過重新構造交易請求,達到繞過權限驗證的目的。越權攻擊的核心思路在于利用長度擴展攻擊的特性。攻擊者首先需要獲取到原始的哈希值,并通過簡單的迭代算法計算出原始數據的長度。一旦得到這些信息,就可以將額外的越權參數添加到原始數據中,并利用相同的哈希算法生成惡意的哈希值。

長度擴展攻擊原理

Length Extension Attack 發生的原因在于部分哈希函數的內部機制。這些函數在處理輸入數據前,首先將數據分割成固定長度的塊,然后在每個塊的末尾進行填充以滿足特定的要求。這種設計導致攻擊者可以在知道原始消息哈希值和長度的情況下,通過填充和附加新數據,構造出新的有效哈希值。

以 SHA-256 為例,其工作在 512 比特的塊上。對于長度不是 512 比特的倍數的數據,需要進行填充操作。其填充規則如下:

1. 在數據的末尾添加一個 “1” 比特;

2. 添加一定數量的 “0” 比特,使得數據的長度模 512 等于 448(詳細內容見 [1]);

3. 在最后面添加一個 64 位長的塊,表示原始數據的長度。

簡而言之,將一個 “1” 后面跟著 m 個 “0”,再加上一個 64 位或 128 位的整數,附加到消息的末尾,以生成長度為 512*n 的填充消息。附加的整數是原始消息的長度。然后,填充消息將被哈希函數處理為 n 個 512 位的塊。

構造方法

在這個示例中,我們將以上面圖片提到的代碼做為一個特定的場景,其中數據字符串為 data="user_id=1&user_name=aa",密鑰為 SecretKey="Length_extension_attack_secret"。服務端會解析上傳的數據中的 data 字段,并通過分隔符 & 解析出所需的參數 user_id 和 user_name。如果存在 role 字段,服務端也會獲取該字段的值。然后,服務端會將所有字段與 SecretKey 進行哈希運算,并與上傳的驗證哈希進行比較。如果哈希值一致,則認為參數符合規則,并直接使用。

首先,我們通過登錄 loginHandler 接口獲取根據 data 和 SecretKey 使用 SHA-256 生成的哈希值 hash="37d310d3465506486431fb2c2eb163f0f470479703f66dc9e5fdead8a3390c68"。

接下來,我們將探討破解的難度。以我們的測試情況為例,根據長度擴展攻擊的原理,只要知道 H(message) 和 message 的長度,我們就可以通過長度擴展攻擊添加新的數據。原來的 message = SecretKey + data,現在我們手上已經有 H(message),只需知道 message 的長度,就可以構造一個新的哈希值。由于 SecretKey 是一個 30 位的密鑰,只需經過 30 次迭代,就可以得知真正的 message 的長度。因此,我們可以很容易地構造出一個新的哈希值。由于我們需要使用 admin 的權限,所以我們要將惡意的字段 "&role=admin" 拼接到原來的數據中。

我們可以利用長度擴展攻擊的特性,在不知道 SecretKey 的情況下,添加新的數據并生成一個新的哈希值。這里使用一個已經實現此功能的庫 [2] 來完成測試。再使用工具生成新的哈希值 。

由于 adminActionHandler 的接口驗證是根據上傳的 user_id,user_name 和 role 來驗證 hash 的,我們這時候上傳的數據是 user_id=1,user_name=aa\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x70 以及 role=admin,如下圖所示:

1694066958_64f9690e9ddbe559f0117.png!small1694066958_64f9690e9ddbe559f0117.png!small

哈希值為 84ae4ae437eeabf3bd8a26294392770b86f64a81998194156ac003d58a21acd0。之后就可以調用 adminActionHandler 接口,服務端收到數據后,會把上傳的哈希與 sha256(SecretKey + fakeData) 進行對比,通過驗證之后將會執行一些敏感操作。這樣,我們就成功地利用長度擴展攻擊繞過了服務端驗證,并實現了越權操作。

其他可能的攻擊場景

1. 文件完整性驗證:如果文件的完整性是通過連接密鑰和文件內容,然后對其進行哈希來驗證的,那么攻擊者可能會擴展文件并生成一個有效的哈希,從而繞過完整性檢查;

2. Web 應用安全:在 Web 應用中,如果使用了易受長度擴展攻擊的哈希函數來驗證用戶提交的數據,攻擊者可能會利用這一點來提交惡意數據;

3. 數字簽名:在某些數字簽名方案中,如果簽名是通過連接私鑰和消息,然后對其進行哈希來生成的,那么攻擊者可能會擴展消息并生成一個有效的簽名;

4. 密碼存儲:雖然不常見,但如果密碼是通過連接密鑰(例如鹽)和密碼,然后對其進行哈希來存儲的,那么攻擊者可能會嘗試使用長度擴展攻擊來破解密碼。

如何防范

1. 選擇不易受長度擴展攻擊的哈希函數,例如 SHA-3;

2. 使用 HMAC:HMAC 需要一個密鑰和一個消息作為輸入,輸出的結果既依賴于密鑰,也依賴于消息,因此攻擊者在不知道密鑰的情況下無法進行長度擴展攻擊;

3. 加強權限驗證:在服務端增加額外的權限驗證步驟,例如使用多因素認證。

以下是一些常用的 Hash 算法的特性:

結語

對于長度擴展攻擊,一種有效的防護措施是使用不受此類攻擊影響的哈希函數,例如 SHA-3 和 BLAKE2。另外,還可以通過 HMAC(密鑰散列消息認證碼)結構來進行防護。這些措施可有效提高系統的安全性,確保數據完整性和應用程序的穩定性。

參考鏈接:

[1] https://www.rfc-editor.org/rfc/rfc6234#page-8

[2] https://github.com/skerkour/kerkour.com/tree/main/blog/2023/sha256_length_extension_attacks

本文作者:慢霧科技, 轉載請注明來自FreeBuf.COM


責任編輯:武曉燕 來源: FreeBuf.COM
相關推薦

2022-01-20 10:54:23

移動手機短信驗證碼隱患

2014-04-15 11:22:24

2013-02-21 10:11:58

2010-09-17 09:27:40

Linux 服務器安全

2016-09-29 22:09:26

2016-09-20 23:44:43

2010-09-17 14:29:23

2009-07-19 15:55:08

2015-01-07 11:19:54

2021-08-31 11:59:41

API安全事件身份驗證

2014-04-14 13:19:41

初志科技電子文檔

2025-05-22 18:18:48

2009-03-17 09:48:00

2011-05-05 18:28:18

2023-12-25 11:55:58

2009-08-13 17:25:40

Linux服務器安全隱患防范對策

2010-05-25 16:45:33

postfix郵件服務

2009-07-06 13:38:02

2017-02-24 08:11:09

Docker數據安全容器

2012-06-25 09:18:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕免费视频 | 午夜精品91 | 91看片网| 成人一级视频在线观看 | 日韩精品在线一区 | 国产成人免费视频网站高清观看视频 | 亚州精品天堂中文字幕 | 色精品| 免费一二区 | 99草免费视频 | 2020亚洲天堂 | 欧美一区二区三区大片 | 91视频网址| 黄色网一级片 | av网址在线 | 日韩福利在线观看 | 成人国产a| 国产精品美女久久久久久久网站 | 成人午夜精品 | 亚洲欧美综合精品久久成人 | 91精品国产乱码久久久久久久久 | 亚洲高清在线观看 | 日韩精品免费在线观看 | 岛国av一区二区 | www国产成人免费观看视频 | 国产一级片在线观看视频 | www性色| 999精品视频 | 丝袜 亚洲 另类 欧美 综合 | 在线一区二区三区 | 美女黄网站 | 羞羞视频在线网站观看 | 欧美亚洲在线视频 | 91视频官网 | 久久久久久亚洲精品 | 熟女毛片 | 亚洲欧美国产精品久久 | 国产免费让你躁在线视频 | 999免费视频 | 91精品在线播放 | 日韩欧美精品一区 |