界: Code Quality
コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。
Encoding Confusion: BiDi Control Characters
Abstract
ソース コード内の双方向制御文字は、トロイの木馬によるソース攻撃につながる可能性があります。
Explanation
Unicode 双方向オーバーライド制御文字を含むソース コードは、インサイダー脅威攻撃の兆候になる可能性があります。このような攻撃は、C、C++、C#、Go、Java、JavaScript、Python、Rust などのプログラミング言語のサプライ チェーンを利用して行われます。この攻撃の亜種のいくつかは、すでに Nicholas Boucher と Ross Anderson の両氏によって公開されています (Early Returns、Commenting-Out、および Stretched Strings)。
例 1: 次のコードは、C ソース コード ファイルにある制御文字を示しており、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 (Right-to-Left Isolate) Unicode 双方向制御文字により、コードは次のように表示されます。
#include <stdio.h>
int main() {
/* Nothing to see here; newline; return 0 /*/
printf("Do we get here?\n");
return 0;
}
特に注目すべきは、脆弱なエディター/ビューアーでコード レビューを実行する開発者は、脆弱なコンパイラーが何を処理するかを視覚的に確認できないことです。具体的には、プログラム フローを変更するアーリー リターン ステートメントです。
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