트로이 목마 소스, 개발자에게 보이지 않는 코드 변경 사항을 추가할 수 있는 공격

몇일 전에 케임브리지 대학 연구원 발표 출판 코드를 미묘하게 대체하는 기술 애플리케이션 소스 코드의 악성 코드.

준비한 공격 방법은 CVE-2021-42574에 이미 나열되어 있습니다. 이것은 Trojan Source라는 이름으로 제공되며 컴파일러/인터프리터와 코드를 보는 사람이 보기에 다르게 보이는 텍스트 구성을 기반으로 합니다.

트로이 목마 소스 정보

방법 코드 주석에 특수 유니코드 문자 적용에 의존, 양방향 텍스트의 표시 순서를 변경합니다. 이러한 제어 문자의 도움으로, 텍스트의 일부는 왼쪽에서 오른쪽으로 표시될 수 있고 다른 일부는 오른쪽에서 왼쪽으로 표시될 수 있습니다..

일상적인 관행에서 이러한 제어 문자는 예를 들어 코드 파일에 히브리어 또는 아랍어 문자열을 삽입하는 데 사용할 수 있습니다. 그러나 이러한 문자를 사용하여 동일한 행에 다른 텍스트 방향의 행을 결합하면 오른쪽에서 왼쪽으로 표시되는 텍스트의 구절이 왼쪽에서 오른쪽으로 표시되는 기존의 일반 텍스트와 겹칠 수 있습니다.

이 방법으로, 악성 구조가 코드에 추가될 수 있습니다. 그러나 다음 주석이나 리터럴 내부에 오른쪽에서 왼쪽으로 표시된 문자를 추가하여 코드를 볼 때 이 구조의 텍스트를 보이지 않게 하면 악의적인 삽입물에 완전히 다른 문자가 겹쳐지게 됩니다. 이러한 코드는 여전히 의미상 정확하지만 다르게 해석되고 표시됩니다.

우리는 인간 뷰어와 컴파일러가 다른 논리를 볼 수 있도록 소스 코드 파일의 인코딩을 조작하는 방법을 발견했습니다. 특히 해로운 방법 중 하나는 유니코드 방향 재정의 문자를 사용하여 코드를 실제 논리의 아나그램으로 표시합니다. 우리는 이 공격이 C, C ++, C #, JavaScript, Java, Rust, Go 및 Python에 대해 작동함을 확인했으며 대부분의 다른 최신 언어에 대해 작동할 것으로 의심합니다.

코드를 검토하면서, 개발자는 캐릭터의 시각적 순서에 직면하게 되며 편집기에서 의심스러운 댓글을 보게 됩니다. 텍스트, 웹 인터페이스 또는 IDE, 그러나 컴파일러와 인터프리터는 문자의 논리적 순서를 사용하고 악성 코드를 처리합니다. 주석의 양방향 텍스트에 관계없이 있는 그대로입니다. 여러 인기 있는 코드 편집기(VS Code, Emacs, Atom)와 리포지토리에서 코드를 보기 위한 인터페이스(GitHub, Gitlab, BitBucket 및 모든 Atlassian 제품)가 영향을 받습니다.

이 방법을 사용하여 악의적인 작업을 구현하는 방법에는 여러 가지가 있습니다. 숨겨진 "반환" 표현식을 추가하면 함수 실행이 조기에 종료됩니다. 일반적으로 유효한 구성으로 간주되는 표현식 주석의 결론(예: 중요한 검사 비활성화) 문자열 유효성 검사 실패로 이어지는 다른 문자열 값을 할당합니다.

또한, 상형 문자를 사용하는 또 다른 공격 옵션이 제안되었습니다(CVE-2021-42694). 모양은 비슷하지만 의미가 다르고 유니코드 코드가 다른 기호입니다. 이러한 문자는 일부 언어에서 함수 및 변수 이름으로 사용되어 개발자를 오도할 수 있습니다. 예를 들어, 서로 다른 작업을 수행하는 구별할 수 없는 이름을 가진 두 개의 함수를 정의할 수 있습니다. 자세한 분석 없이는 이 두 함수 중 특정 위치에서 호출되는 함수를 즉시 이해할 수 없습니다.

보호 조치로, 오류 또는 경고를 표시하는 유니코드 문자를 지원하는 컴파일러, 인터프리터 및 어셈블리 도구에서 구현하는 것이 좋습니다. 주석, 문자열 리터럴 또는 출력 방향을 변경하는 식별자에 짝을 이루지 않은 제어 문자가 있는지 여부. 또한 이러한 문자는 프로그래밍 언어 사양에서 명시적으로 금지되어야 하며 리포지토리 작업을 위한 코드 편집기 및 인터페이스에서 고려해야 합니다.

그 외에 취약점은 이미 수정되기 시작했습니다 GCC, LLVM/Clang, Rust, Go, Python 및 binutils를 위해 준비되었습니다. GitHub, Bitbucket, Jira도 이미 GitLab과 함께 솔루션을 준비하고 있습니다.

최종적으로 그것에 대해 더 많이 알고 싶다면 당신은 상담 할 수 있습니다 다음 링크의 세부 사항.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.