
최근 공개된 bidi-attack (CVE-2021-42574)을 사용하여 악성 파일 생성
// 업데이트: 05.11.2021
이제 인코딩뿐만 아니라 디코딩도 가능합니다. 즉, 지원되는 bidi 문자를 포함하는 파일을 이제 bidi 자리 표시자(LRO, ...)가 있는 템플릿 파일로 변환할 수 있습니다.
최근 공개된 bidi-공격 취약점을 사용해 악성 파일을 생성합니다. 이 취약점은 유니코드 표준에서 발견되었으며 많은 인터프리터/컴파일러에 영향을 미칩니다.
cve.mitre.org에서 인용:
유니코드 표준 14.0까지의 Bidirectional Algorithm에서 문제가 발견되었습니다. 이 알고리즘은 제어 시퀀스를 통한 문자의 시각적 재정렬을 허용하며, 이를 이용해 컴파일러와 인터프리터가 처리하는 토큰의 논리적 순서와 다르게 렌더링되는 소스 코드를 만들 수 있습니다. 공격자는 이를 활용하여 유니코드를 허용하는 컴파일러용 소스 코드를 인코딩함으로써, 사람이 검토할 때는 보이지 않게 특정 취약점을 주입할 수 있습니다.
unicode.org의 Bidirectional Algorithm 보고서를 참조하십시오:
https://www.unicode.org/reports/tr9/tr9-42.html
Camebridge University의 원본 소스를 참조하십시오:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
| arg | long arg | param | description |
|---|---|---|---|
| -h | --help | none | 이 도움말 메시지를 표시하고 종료합니다 |
| -i | --infile | INFILE | 유니코드 자리 표시자를 포함하는 입력 파일(템플릿) |
| -o | --outfile | OUTFILE | 최종 코드를 저장할 출력 파일 |
| -u | --uctable | none | 지원되는 bidi 관련 문자 |
| -a | --about | none | 정보 텍스트 출력 |
| -m | --mode | MODE | e|ncode로 템플릿을 악성 코드로 변환하고 d|ecode로 그 반대를 수행합니다 |
이 모드는 bidi 자리 표시자가 포함된 템플릿 파일을 실제 bidi 문자가 있는 파일로 변환합니다. 모든 예제는 참조된 PDF에서 가져왔습니다. 이 예제를 실행하려면 필요한 인자와 함께 codegen.py를 실행하십시오:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz 그런 다음 outfile.xyz를 실행/컴파일하십시오.
이 모드는 bidi 문자를 포함하는 파일을 해당 bidi 자리 표시자가 있는 파일로 변환합니다. 참고: 출력물은 템플릿일 뿐이므로 실행할 수 없습니다.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
나만의 템플릿을 만들려면 특수 문자가 나타나길 원하는 위치에 자리 표시자를 설정하십시오(python3 codegen.py -u). 템플릿이 어떤 모습일지 감을 잡으려면 예제를 참조하십시오.
다음 표(원본 Camebridge 보고서에서 가져옴)는 현재 이 스크립트가 지원하는 문자를 보여줍니다.
~ https://www.trojansource.codes/trojan-source.pdf