2014-01-19 43 views
4

任何人都可以解釋爲什麼任何c,C++程序中的符號擴展錯誤都有很高的安全風險嗎?爲什麼簽名擴展錯誤有很高的安全風險?

我讀過,符號擴展錯誤"can often create buffer overflows and other memory based problems".

我讀這篇文章在谷歌,

http://minsky.gsi.dit.upm.es/semanticwiki/index.php/Sign_extension_error

但不明白如何影響任何應用程序,攻擊者如何能利用這種類型的漏洞?

由於提前,

+3

今天另一個人問了同樣的問題。嗯 –

+0

@BrianBeuning陰謀!致電NSA。 –

+0

由於公然濫用printf,鏈接上的示例是錯誤的代碼。簽署延期並不是真正的問題。按值傳遞一個結構給printf?真?? –

回答

3

一個很好的例子是使用焦炭作爲一個指數到一個表中。 C中的char類型可以進行簽名,因此任何大於0x7F的字符代碼都將擴展到表中的負索引。這相當於緩衝區溢出攻擊。使用unsigned char作爲默認值,C會更好。

+0

通常一個int用於索引,所以「C會更好用unsigned char」並不適用。 – Devolus

+0

我不稱這個符號擴展名。這只是表達的正確價值。當您將簽名類型轉換爲更寬的無符號類型時,簽名擴展是*值變化*。像迪蒂的例子一樣。 –

相關問題