계: Code Quality
코드 품질이 낮으면 예측할 수 없는 동작이 발생합니다. 사용자 입장에서는 사용 편의성이 떨어지는 것으로 나타나는 경우가 많습니다. 공격자에게는 예상치 못한 방법으로 시스템에 부담을 줄 수 있는 기회가 됩니다.
Encoding Confusion: BiDi Control Characters
Abstract
소스 코드의 양방향 제어 문자가 트로이 목마 소스 공격으로 이어질 수 있습니다.
Explanation
유니코드 양방향 재정의 제어 문자가 포함된 소스 코드는 내부자 위협 공격의 신호일 수 있습니다. 이러한 공격은 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(오른쪽에서 왼쪽으로 격리) 유니코드 양방향 제어 문자는 코드를 다음과 같이 보이게 합니다.
#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