악성 코드를 숨길 수 있는 수많은 컴파일러에서 취약점이 발견되었습니다.

케임브리지 대학의 전문가들은 위험한 취약점에 대한 정보를 발표했습니다(CVE-2021-42574), 거의 모든 것에 영향을 미칩니다.최신 소스 코드 컴파일러. Trojan Source 기사에서는 해커가 다양한 프로그램의 소스 코드에 악성 코드를 숨길 수 있도록 하는 교활한 공격에 대해 설명합니다.

공격은 컴파일러가텍스트 방향을 결정하는 데 사용되는 고유 식별자를 처리합니다. 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로. 약점은 오른쪽에서 왼쪽으로, 왼쪽에서 오른쪽으로 쓰여진 단어를 함께 사용할 수 있는 유니코드 Bidi 알고리즘에 있습니다. 이 알고리즘 덕분에 아랍어와 영어 단어를 결합할 수 있습니다. 이를 통해 오른쪽에서 왼쪽으로, 왼쪽에서 오른쪽으로 또는 그 반대로 작성된 텍스트를 읽을 수 있습니다.

어떤 경우에는 알고리즘의 기능이유니코드 Bidi는 이러한 단어가 표시되는 방식을 변경하는 데 충분하지 않으며 이러한 경우 특수 제어 문자가 사용됩니다. 그러나 동일한 줄이 다른 텍스트 방향의 단어를 결합하는 경우 이러한 제어 문자를 사용하면 컴파일러가 해당 텍스트를 읽는 방향을 변경할 수 있습니다. 예를 들어 주석처럼 보이는 줄이 실행 가능한 코드처럼 작동하도록 할 수 있습니다.


</ img>

이 방법을 사용하면 악성 코드를 추가할 수 있습니다.명령을 일반 소스 코드에 추가하고 후속 주석을 사용하여 코드를 볼 때 이 명령의 텍스트를 보이지 않게 만듭니다. 이렇게 하면 실제로는 임의의 코드일 수 있는 완전히 다른 문자가 삽입됩니다. 최종 소스 코드는 의미상으로 올바른 상태로 유지되지만 일단 컴파일되면 완전히 다른 일이 발생합니다.

해당 소스코드를 열람하고 분석하는 경우프로그래머는 아무런 의심도 일으키지 않는 주석이 포함된 코드를 보게 되지만, 컴파일러나 해석기는 기호의 논리적 순서를 뒤집고 무해한 주석은 프로그램에 삽입된 추가 코드로 바뀔 것입니다. 이 오류는 거의 모든 컴파일러에 존재합니다. 프로그래밍 언어 C, C++(gcc 및 clang), C#, JavaScript(Node.js), Java(OpenJDK 16), Rust, Go 및 Python용 VS Code, Emacs, Atom을 포함한 다양한 인기 코드 편집기와 GitHub, Gitlab, BitBucket 및 모든 Atlassian 제품의 소스 코드 보기 인터페이스에서 사용 가능합니다.

출처: trojansource, zdnet

</ p>