界: Code Quality
程式碼品質不佳,會導致無法預料的行為。從使用者的角度來看,這通常表現為可用性不佳。對於攻擊者而言,這提供了以意想不到的方式向系統施加壓力的機會。
Encoding Confusion: BiDi Control Characters
Abstract
原始程式碼中的雙向控制字元可導致 Trojan Source 攻擊。
Explanation
包含 Unicode 雙向覆寫控制字元的原始程式碼可能是內部威脅攻擊的徵兆。攻擊者可透過 C、C++、C#、Go、Java、JavaScript、Python 和 Rust 等程式設計語言的供應鏈來運用這種攻擊。Nicholas Boucher 和 Ross Anderson 已發佈數種變體攻擊,包括以下各項:Early Returns、Commenting-Out 和 Stretched Strings。
範例 1:以下程式碼顯示一個控制字元,其存在於 C 原始程式碼檔案中,會導致 Early Return 攻擊:
在
需要特別注意的是,開發人員在易受攻擊的編輯器/檢視器中執行程式碼檢閱時,不會明顯看到易受攻擊的編譯器將處理的內容。特別是修改程序流程的 early return 陳述式。
範例 1:以下程式碼顯示一個控制字元,其存在於 C 原始程式碼檔案中,會導致 Early Return 攻擊:
#include <stdio.h>
int main() {
/* Nothing to see here; newline RLI /*/ return 0 ;
printf("Do we get here?\n");
return 0;
}
在
Example 1
中,從右到左隔離 (RLI) Unicode 雙向控制字元導致程式碼被視為以下內容:
#include <stdio.h>
int main() {
/* Nothing to see here; newline; return 0 /*/
printf("Do we get here?\n");
return 0;
}
需要特別注意的是,開發人員在易受攻擊的編輯器/檢視器中執行程式碼檢閱時,不會明顯看到易受攻擊的編譯器將處理的內容。特別是修改程序流程的 early return 陳述式。
References
[1] Nicholas Boucher, and R. Anderson Trojan Source: Invisible Vulnerabilities
[2] Standards Mapping - Common Weakness Enumeration CWE ID 451
[3] Standards Mapping - OWASP Top 10 2017 A1 Injection
[4] Standards Mapping - OWASP Top 10 2021 A03 Injection
[5] Standards Mapping - Smart Contract Weakness Classification SWC-130
desc.regex.universal.encoding_confusion_bidi_control_characters