福彩中奖划分:

深圳福彩中奖去哪领奖 www.kjamiy.com.cn 如何防止惡意代碼

如今,網絡安全風險無處不在,網絡攻擊的威脅很高。有許多形式的網絡攻擊。其中許多可能是由惡意代碼引起的。

什么是惡意代碼?

惡意代碼(malcode)是導致風險的任何代碼。

這段代碼可以:

訪問私人數據。

更改系統的行為。

防止系統運行。

惡意代碼是如何產生的?

故意將惡意代碼寫入系統。例如,心懷不軌的開發人員可能會故意編寫惡意代碼。

或者可以在開發后注入惡意代碼。例如,惡意軟件,間諜軟件或勒索軟件在部署后進入系統并造成傷害。這是一個非常現實的問題,特別是對于開發安全關鍵系統的團隊而言。

最好在惡意代碼損壞程序之前阻止它們。

應在開發過程的早期采用安全最佳實踐。這是?;つ娜砑饈芏褚獯肼┒垂セ韉淖羆遜椒?。

如何防止惡意代碼漏洞(示例)

您可以?;つ娜砑ü繁K揮邪踩┒疵饈芏褚獯氳那趾?nbsp;。

1.使用安全編碼標準

安全編碼標準 - 例如CERT C / C ++ - 旨在防止安全漏洞。

例如,CERT以具有未定義行為的可能導致安全風險的代碼為目標。

示例1:緩沖區溢出

緩沖區溢出是一個眾所周知的安全漏洞。當程序將數據寫入其分配的內存邊界之外時,就會發生這種情況。

這會危及軟件的安全性,因為可能會將惡意代碼注入運行時內存。

即使是常用的庫函數(如gets()或fscanf()) - 如果不小心使用也會導致緩沖區溢出。

緩沖區溢出為何導致代碼易受攻擊

緩沖區溢出使您的代碼易受攻擊

這是一個例子。

如果程序正在接收數據- 而且沒有檢查以確保輸入緩沖區不會溢出- 那么此時就可以設計包含惡意代碼的輸入或“有效負載”。此輸入可能會溢出輸入緩沖區。

因此,它會使用惡意代碼的地址覆蓋函數的返回地址。當函數返回時,程序從惡意代碼處開始執行。

如何防止緩沖區溢出

CERT ARR30-C是有助于防止緩沖區溢出的C編碼規則的示例。此規則也適用于CERT C ++。

 “不要形成或使用越界指針或數組下標。”

通過應用此規則,您將避免寫入超出范圍的指針或數組下標。這可以防止執行任意代碼。

MISRA C也有這樣的規則- 而且CWE也注意到類似的情況。

示例2:不受控制的字符串格式

不受控制的字符串格式是另一個安全漏洞。

當使用格式化字符串調用格式化的I / O函數時,該格式字符串包含來自不受信任的外部源的未過濾數據。這通常被稱為“污染”數據。

為什么不受控制的格式字符串使代碼易受攻擊

不受控制的格式字符串使您的代碼容易受到攻擊。

它可以允許攻擊者通過以下方式啟用執行惡意代碼:

崩潰的程序。

查看內存內容。

寫入任意內存位置。

如何防止不受控制的字符串格式

使用以格式字符串作為參數的函數時要小心。示例函數包括fprintf(),sprintf()和snprintf()。

CERT FIO30-C是防止格式字符串攻擊的C編碼規則的示例。此規則也適用于CERT C ++。

“從字符串格式中排除用戶輸入。”

確保不受信任的輸入不用作格式字符串的一部分。

示例3:簽名的整數溢出

有符號整數溢出是另一種常見的安全漏洞。當算術運算的結果太大而不能存儲在整數中時,會發生溢出。

在C和C ++編程中,如果未檢測到整數溢出,則可能導致緩沖區溢出。 

為什么簽名整數溢出會使您的代碼易受攻擊

整數溢出會導致未定義的行為,因此確保對整數的操作不會導致溢出非常重要。

在最壞的情況下,整數溢出可能導致緩沖區溢出- 以及攻擊者執行惡意代碼。

如何防止有符號整數溢出

CERT INT32-C是防止整數溢出的編碼規則的示例。此規則也適用于CERT C ++。

“確保對有符號整數的操作不會導致溢出。”

可以防止整數溢出。您可以通過對傳入的函數參數執行適當的范圍檢查來完成此操作

2.使用靜態代碼分析器實施安全編碼規則

實施安全編碼規則的最佳方法是使用靜態分析器。

靜態代碼分析器會根據一組編碼規則(例如CERT C / C ++中的編碼規則)自動檢查代碼。最好的靜態分析儀- 如Helix QAC -包含額外的規則以確保最佳實踐編碼。

例如,Helix QAC可以根據上面提到的CERT編碼規則輕松檢查代碼。它還可以在測試開始之前提供數千種診斷來改進您的代碼- 并且在安全漏洞可能危及您的軟件之前。

通過確保遵循這些規則,您將避免嚴重的編碼錯誤- 以及潛在的惡意代碼漏洞。

原文鏈接:https://www.perforce.com/blog/qac/how-prevent-malicious-code-plus-examples