SCW图标
英雄背景无分隔线
博客

트로얀 소스란 무엇이며 소스 코드에 어떻게 스며들게 되나요?

Laura Verheyde
发布于 2022 年 2 月 23 日
最后更新于 2026年3月9日

11월 초, 케임브리지 대학교는 다음과 같은 내용을 발표했습니다. 트로이 목마-소스라는 연구.이 연구는 방향성 서식 지정 문자를 사용하여 소스 코드와 댓글에 백도어를 숨길 수 있는 방법에 초점을 맞췄습니다.이는 컴파일러가 인간 코드 검토자와 다르게 로직을 해석하는 코드를 만드는 데 사용할 수 있습니다.

이전에 유니코드가 파일의 실제 파일 이름 확장자를 숨기는 등 악의적으로 사용된 적이 있긴 하지만 이 취약점은 새로 발생했습니다. 파일 이름의 마지막 부분의 방향 바꾸기.최근 연구에 따르면 많은 컴파일러는 경고 없이 소스 코드의 유니코드 문자를 무시하는 반면 코드 편집기를 비롯한 텍스트 편집기는 이를 기반으로 주석과 코드가 포함된 줄을 리플로우할 수 있습니다.따라서 편집기는 코드와 주석을 컴파일러가 파싱하는 방식과 다르게, 다른 순서로 표시할 수 있습니다. 심지어 코드와 주석을 교환하는 경우에도 마찬가지입니다.

자세히 알아보려면 계속 읽어보세요.또는 Trojan Source의 해킹 시뮬레이션을 시도해보고 싶으시다면, 무료로 제공되는 서비스로 바로 접속해 보세요. 공공 임무 직접 경험해 보세요.

양방향 텍스트

이러한 트로이 소스 공격 중 하나는 Unicode Bidi (양방향) 알고리즘을 사용합니다. 이 알고리즘은 영어 (왼쪽에서 오른쪽) 및 아랍어 (오른쪽에서 왼쪽) 와 같이 표시 순서가 다른 텍스트를 정렬하는 방법을 처리합니다.방향 서식 지정 문자를 사용하여 그룹을 재구성하고 문자 순서를 표시할 수 있습니다.

위 표에는 공격과 관련된 일부 Bidi 오버라이드 문자가 포함되어 있습니다.예를 들어,

RLI e d o c 피디

약어 RLI는 다음을 나타냅니다. 오른쪽에서 왼쪽 분리.텍스트를 컨텍스트 (PDI로 구분) 에서 분리합니다. 팝 디렉셔널 아이솔레이트) 를 클릭하고 오른쪽에서 왼쪽으로 읽습니다.결과는 다음과 같습니다.

ǞǞǞ

그러나 컴파일러와 인터프리터는 일반적으로 소스 코드를 파싱하기 전에 Bidi 오버라이드를 비롯한 서식 제어 문자를 처리하지 않습니다.방향성 형식 지정 문자를 그냥 무시하면 다음과 같이 파싱됩니다.

e d o c

새 병에 담긴 오래된 와인?

물론 이것은 태양 아래서 새로운 것이 아닙니다.과거에는 방향 지정 문자가 사용되었습니다. 파일 이름에 삽입 그들의 악의적인 성격을 감추기 위해서요'myspecialexe.doc '로 표시된 이메일 첨부 파일은 RLO가 아니었다면 충분히 순진해 보일 수 있습니다 (오른쪽에서 왼쪽으로 오버라이드) 실제 이름이 'myspecialcod.exe'임을 보여주는 캐릭터 선물

트로이 소스 공격은 소스 코드에 있는 주석과 문자열에 방향 서식 지정 문자를 삽입합니다. 이러한 경우 구문이나 컴파일 오류가 발생하지 않기 때문입니다.이러한 제어 문자는 코드 로직의 표시 순서를 변경하여 컴파일러가 사람이 읽는 것과는 완전히 다른 것을 읽게 합니다.

예를 들어 다음 바이트를 순서대로 포함하는 파일:

双向的Unicode文本

방향 형식 지정 문자별로 다음과 같이 재정렬됩니다.

方向性的格式化字符

방향 형식 지정 문자가 명시적으로 호출되지 않은 경우 코드가 다음과 같이 렌더링됩니다.

双向的Unicode字符

RLO는 마지막 줄에서 닫는 브레이스를 여는 브레이스로 뒤집고 반대도 마찬가지입니다.이 코드를 실행하면 다음과 같은 결과가 나옵니다. “당신은 관리자입니다.”관리자 검사가 주석 처리되었지만 제어 문자를 보면 해당 검사가 여전히 존재했다는 인상을 줍니다.

(출처: https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

이것이 여러분에게 어떤 영향을 미칠 수 있을까요?

C, C++, C#, 자바스크립트, 자바, 러스트, 고, 파이썬 등 많은 언어가 공격에 취약하며, 더 많은 언어가 공격에 취약한 것으로 추정됩니다.이제 일반 개발자는 소스 코드에서 방향 지정 문자를 보고 눈살을 찌푸릴 수도 있지만, 초보자는 어깨를 으쓱하고 아무 생각도 하지 않는 것이 나을 수도 있습니다.게다가 이러한 문자의 시각화는 IDE에 따라 크게 달라지므로 발견될 것이라는 보장은 없습니다.

하지만 애초에 이 취약점이 어떻게 소스 코드에 잠입할 수 있었을까요?무엇보다도 악성 코드 기여가 눈에 띄지 않는 신뢰할 수 없는 출처의 소스 코드를 사용할 때 이런 일이 발생할 수 있습니다.두 번째로, 인터넷에서 찾은 코드를 복사하여 붙여넣는 것만으로도 이런 일이 일어날 수 있습니다. 우리 개발자 대부분이 이전에 해본 일이죠.대부분의 조직은 여러 공급업체의 소프트웨어 구성 요소에 의존합니다.이로 인해 이 코드를 어느 정도까지 신뢰하고 신뢰할 수 있는지에 대한 의문이 생깁니다.숨겨진 백도어가 포함된 소스 코드를 어떻게 선별할 수 있을까요?

누구의 문제일까요?

한편으로 컴파일러와 빌드 파이프라인은 한 방향이 문자열과 주석으로 엄격하게 제한되지 않는 한 방향이 둘 이상인 소스 코드 라인을 허용하지 않아야 합니다.참고로 문자열이나 주석의 방향 서식 지정 문자는 팝되지 않을 경우 줄 끝까지 방향 변경을 연장할 수 있습니다.일반적으로 코드 편집자는 호모글리프 및 방향 형식 지정 문자와 같이 의심스러운 유니코드 문자를 명시적으로 렌더링하고 강조 표시해야 합니다.11월부터 GitHub는 이제 양방향 유니코드 텍스트가 포함된 모든 코드 줄에 경고 기호와 메시지를 추가합니다. 단, 이러한 문자의 줄 위치는 강조 표시하지 않습니다.이로 인해 여전히 악의적인 방향 변경과 함께 악의적인 방향 변경이 몰래 유입될 수 있습니다.

개발자와 코드 리뷰어 간의 인식은 필수적이므로 취약점을 설명하는 안내문을 만들었습니다.현재 이 연습은 Java, C#, Python, GO 및 PHP에서 사용할 수 있습니다.

더 자세히 알고 싶으시면 저희 제품을 사용해보세요 트로이 소스 시뮬레이션 (공개 임무), 그리고 읽어보세요 트로이 소스 리서치.

자바 시뮬레이션

C #에서의 시뮬레이션

PHP에서의 시뮬레이션

GO에서의 시뮬레이션

파이썬에서의 시뮬레이션

트로이 소스
트로이 소스
查看资源
查看资源

您对更多内容感兴趣吗?

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示
共享对象:
领英品牌社交x 标志
作者
Laura Verheyde
2022年2月23日出版

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

共享对象:
领英品牌社交x 标志
트로이 소스
트로이 소스

11월 초, 케임브리지 대학교는 다음과 같은 내용을 발표했습니다. 트로이 목마-소스라는 연구.이 연구는 방향성 서식 지정 문자를 사용하여 소스 코드와 댓글에 백도어를 숨길 수 있는 방법에 초점을 맞췄습니다.이는 컴파일러가 인간 코드 검토자와 다르게 로직을 해석하는 코드를 만드는 데 사용할 수 있습니다.

이전에 유니코드가 파일의 실제 파일 이름 확장자를 숨기는 등 악의적으로 사용된 적이 있긴 하지만 이 취약점은 새로 발생했습니다. 파일 이름의 마지막 부분의 방향 바꾸기.최근 연구에 따르면 많은 컴파일러는 경고 없이 소스 코드의 유니코드 문자를 무시하는 반면 코드 편집기를 비롯한 텍스트 편집기는 이를 기반으로 주석과 코드가 포함된 줄을 리플로우할 수 있습니다.따라서 편집기는 코드와 주석을 컴파일러가 파싱하는 방식과 다르게, 다른 순서로 표시할 수 있습니다. 심지어 코드와 주석을 교환하는 경우에도 마찬가지입니다.

자세히 알아보려면 계속 읽어보세요.또는 Trojan Source의 해킹 시뮬레이션을 시도해보고 싶으시다면, 무료로 제공되는 서비스로 바로 접속해 보세요. 공공 임무 직접 경험해 보세요.

양방향 텍스트

이러한 트로이 소스 공격 중 하나는 Unicode Bidi (양방향) 알고리즘을 사용합니다. 이 알고리즘은 영어 (왼쪽에서 오른쪽) 및 아랍어 (오른쪽에서 왼쪽) 와 같이 표시 순서가 다른 텍스트를 정렬하는 방법을 처리합니다.방향 서식 지정 문자를 사용하여 그룹을 재구성하고 문자 순서를 표시할 수 있습니다.

위 표에는 공격과 관련된 일부 Bidi 오버라이드 문자가 포함되어 있습니다.예를 들어,

RLI e d o c 피디

약어 RLI는 다음을 나타냅니다. 오른쪽에서 왼쪽 분리.텍스트를 컨텍스트 (PDI로 구분) 에서 분리합니다. 팝 디렉셔널 아이솔레이트) 를 클릭하고 오른쪽에서 왼쪽으로 읽습니다.결과는 다음과 같습니다.

ǞǞǞ

그러나 컴파일러와 인터프리터는 일반적으로 소스 코드를 파싱하기 전에 Bidi 오버라이드를 비롯한 서식 제어 문자를 처리하지 않습니다.방향성 형식 지정 문자를 그냥 무시하면 다음과 같이 파싱됩니다.

e d o c

새 병에 담긴 오래된 와인?

물론 이것은 태양 아래서 새로운 것이 아닙니다.과거에는 방향 지정 문자가 사용되었습니다. 파일 이름에 삽입 그들의 악의적인 성격을 감추기 위해서요'myspecialexe.doc '로 표시된 이메일 첨부 파일은 RLO가 아니었다면 충분히 순진해 보일 수 있습니다 (오른쪽에서 왼쪽으로 오버라이드) 실제 이름이 'myspecialcod.exe'임을 보여주는 캐릭터 선물

트로이 소스 공격은 소스 코드에 있는 주석과 문자열에 방향 서식 지정 문자를 삽입합니다. 이러한 경우 구문이나 컴파일 오류가 발생하지 않기 때문입니다.이러한 제어 문자는 코드 로직의 표시 순서를 변경하여 컴파일러가 사람이 읽는 것과는 완전히 다른 것을 읽게 합니다.

예를 들어 다음 바이트를 순서대로 포함하는 파일:

双向的Unicode文本

방향 형식 지정 문자별로 다음과 같이 재정렬됩니다.

方向性的格式化字符

방향 형식 지정 문자가 명시적으로 호출되지 않은 경우 코드가 다음과 같이 렌더링됩니다.

双向的Unicode字符

RLO는 마지막 줄에서 닫는 브레이스를 여는 브레이스로 뒤집고 반대도 마찬가지입니다.이 코드를 실행하면 다음과 같은 결과가 나옵니다. “당신은 관리자입니다.”관리자 검사가 주석 처리되었지만 제어 문자를 보면 해당 검사가 여전히 존재했다는 인상을 줍니다.

(출처: https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

이것이 여러분에게 어떤 영향을 미칠 수 있을까요?

C, C++, C#, 자바스크립트, 자바, 러스트, 고, 파이썬 등 많은 언어가 공격에 취약하며, 더 많은 언어가 공격에 취약한 것으로 추정됩니다.이제 일반 개발자는 소스 코드에서 방향 지정 문자를 보고 눈살을 찌푸릴 수도 있지만, 초보자는 어깨를 으쓱하고 아무 생각도 하지 않는 것이 나을 수도 있습니다.게다가 이러한 문자의 시각화는 IDE에 따라 크게 달라지므로 발견될 것이라는 보장은 없습니다.

하지만 애초에 이 취약점이 어떻게 소스 코드에 잠입할 수 있었을까요?무엇보다도 악성 코드 기여가 눈에 띄지 않는 신뢰할 수 없는 출처의 소스 코드를 사용할 때 이런 일이 발생할 수 있습니다.두 번째로, 인터넷에서 찾은 코드를 복사하여 붙여넣는 것만으로도 이런 일이 일어날 수 있습니다. 우리 개발자 대부분이 이전에 해본 일이죠.대부분의 조직은 여러 공급업체의 소프트웨어 구성 요소에 의존합니다.이로 인해 이 코드를 어느 정도까지 신뢰하고 신뢰할 수 있는지에 대한 의문이 생깁니다.숨겨진 백도어가 포함된 소스 코드를 어떻게 선별할 수 있을까요?

누구의 문제일까요?

한편으로 컴파일러와 빌드 파이프라인은 한 방향이 문자열과 주석으로 엄격하게 제한되지 않는 한 방향이 둘 이상인 소스 코드 라인을 허용하지 않아야 합니다.참고로 문자열이나 주석의 방향 서식 지정 문자는 팝되지 않을 경우 줄 끝까지 방향 변경을 연장할 수 있습니다.일반적으로 코드 편집자는 호모글리프 및 방향 형식 지정 문자와 같이 의심스러운 유니코드 문자를 명시적으로 렌더링하고 강조 표시해야 합니다.11월부터 GitHub는 이제 양방향 유니코드 텍스트가 포함된 모든 코드 줄에 경고 기호와 메시지를 추가합니다. 단, 이러한 문자의 줄 위치는 강조 표시하지 않습니다.이로 인해 여전히 악의적인 방향 변경과 함께 악의적인 방향 변경이 몰래 유입될 수 있습니다.

개발자와 코드 리뷰어 간의 인식은 필수적이므로 취약점을 설명하는 안내문을 만들었습니다.현재 이 연습은 Java, C#, Python, GO 및 PHP에서 사용할 수 있습니다.

더 자세히 알고 싶으시면 저희 제품을 사용해보세요 트로이 소스 시뮬레이션 (공개 임무), 그리고 읽어보세요 트로이 소스 리서치.

자바 시뮬레이션

C #에서의 시뮬레이션

PHP에서의 시뮬레이션

GO에서의 시뮬레이션

파이썬에서의 시뮬레이션

查看资源
查看资源

要下载报告,请填写以下表格。

我们请求您的同意,以便向您发送有关本公司产品及/或相关安全编码主题的信息。我们始终以最高标准谨慎处理您的个人信息,且绝不会出于营销目的向其他公司出售您的信息。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用'Analytics' Cookie。完成后,您可随时将其重新禁用。
트로이 소스

11월 초, 케임브리지 대학교는 다음과 같은 내용을 발표했습니다. 트로이 목마-소스라는 연구.이 연구는 방향성 서식 지정 문자를 사용하여 소스 코드와 댓글에 백도어를 숨길 수 있는 방법에 초점을 맞췄습니다.이는 컴파일러가 인간 코드 검토자와 다르게 로직을 해석하는 코드를 만드는 데 사용할 수 있습니다.

이전에 유니코드가 파일의 실제 파일 이름 확장자를 숨기는 등 악의적으로 사용된 적이 있긴 하지만 이 취약점은 새로 발생했습니다. 파일 이름의 마지막 부분의 방향 바꾸기.최근 연구에 따르면 많은 컴파일러는 경고 없이 소스 코드의 유니코드 문자를 무시하는 반면 코드 편집기를 비롯한 텍스트 편집기는 이를 기반으로 주석과 코드가 포함된 줄을 리플로우할 수 있습니다.따라서 편집기는 코드와 주석을 컴파일러가 파싱하는 방식과 다르게, 다른 순서로 표시할 수 있습니다. 심지어 코드와 주석을 교환하는 경우에도 마찬가지입니다.

자세히 알아보려면 계속 읽어보세요.또는 Trojan Source의 해킹 시뮬레이션을 시도해보고 싶으시다면, 무료로 제공되는 서비스로 바로 접속해 보세요. 공공 임무 직접 경험해 보세요.

양방향 텍스트

이러한 트로이 소스 공격 중 하나는 Unicode Bidi (양방향) 알고리즘을 사용합니다. 이 알고리즘은 영어 (왼쪽에서 오른쪽) 및 아랍어 (오른쪽에서 왼쪽) 와 같이 표시 순서가 다른 텍스트를 정렬하는 방법을 처리합니다.방향 서식 지정 문자를 사용하여 그룹을 재구성하고 문자 순서를 표시할 수 있습니다.

위 표에는 공격과 관련된 일부 Bidi 오버라이드 문자가 포함되어 있습니다.예를 들어,

RLI e d o c 피디

약어 RLI는 다음을 나타냅니다. 오른쪽에서 왼쪽 분리.텍스트를 컨텍스트 (PDI로 구분) 에서 분리합니다. 팝 디렉셔널 아이솔레이트) 를 클릭하고 오른쪽에서 왼쪽으로 읽습니다.결과는 다음과 같습니다.

ǞǞǞ

그러나 컴파일러와 인터프리터는 일반적으로 소스 코드를 파싱하기 전에 Bidi 오버라이드를 비롯한 서식 제어 문자를 처리하지 않습니다.방향성 형식 지정 문자를 그냥 무시하면 다음과 같이 파싱됩니다.

e d o c

새 병에 담긴 오래된 와인?

물론 이것은 태양 아래서 새로운 것이 아닙니다.과거에는 방향 지정 문자가 사용되었습니다. 파일 이름에 삽입 그들의 악의적인 성격을 감추기 위해서요'myspecialexe.doc '로 표시된 이메일 첨부 파일은 RLO가 아니었다면 충분히 순진해 보일 수 있습니다 (오른쪽에서 왼쪽으로 오버라이드) 실제 이름이 'myspecialcod.exe'임을 보여주는 캐릭터 선물

트로이 소스 공격은 소스 코드에 있는 주석과 문자열에 방향 서식 지정 문자를 삽입합니다. 이러한 경우 구문이나 컴파일 오류가 발생하지 않기 때문입니다.이러한 제어 문자는 코드 로직의 표시 순서를 변경하여 컴파일러가 사람이 읽는 것과는 완전히 다른 것을 읽게 합니다.

예를 들어 다음 바이트를 순서대로 포함하는 파일:

双向的Unicode文本

방향 형식 지정 문자별로 다음과 같이 재정렬됩니다.

方向性的格式化字符

방향 형식 지정 문자가 명시적으로 호출되지 않은 경우 코드가 다음과 같이 렌더링됩니다.

双向的Unicode字符

RLO는 마지막 줄에서 닫는 브레이스를 여는 브레이스로 뒤집고 반대도 마찬가지입니다.이 코드를 실행하면 다음과 같은 결과가 나옵니다. “당신은 관리자입니다.”관리자 검사가 주석 처리되었지만 제어 문자를 보면 해당 검사가 여전히 존재했다는 인상을 줍니다.

(출처: https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

이것이 여러분에게 어떤 영향을 미칠 수 있을까요?

C, C++, C#, 자바스크립트, 자바, 러스트, 고, 파이썬 등 많은 언어가 공격에 취약하며, 더 많은 언어가 공격에 취약한 것으로 추정됩니다.이제 일반 개발자는 소스 코드에서 방향 지정 문자를 보고 눈살을 찌푸릴 수도 있지만, 초보자는 어깨를 으쓱하고 아무 생각도 하지 않는 것이 나을 수도 있습니다.게다가 이러한 문자의 시각화는 IDE에 따라 크게 달라지므로 발견될 것이라는 보장은 없습니다.

하지만 애초에 이 취약점이 어떻게 소스 코드에 잠입할 수 있었을까요?무엇보다도 악성 코드 기여가 눈에 띄지 않는 신뢰할 수 없는 출처의 소스 코드를 사용할 때 이런 일이 발생할 수 있습니다.두 번째로, 인터넷에서 찾은 코드를 복사하여 붙여넣는 것만으로도 이런 일이 일어날 수 있습니다. 우리 개발자 대부분이 이전에 해본 일이죠.대부분의 조직은 여러 공급업체의 소프트웨어 구성 요소에 의존합니다.이로 인해 이 코드를 어느 정도까지 신뢰하고 신뢰할 수 있는지에 대한 의문이 생깁니다.숨겨진 백도어가 포함된 소스 코드를 어떻게 선별할 수 있을까요?

누구의 문제일까요?

한편으로 컴파일러와 빌드 파이프라인은 한 방향이 문자열과 주석으로 엄격하게 제한되지 않는 한 방향이 둘 이상인 소스 코드 라인을 허용하지 않아야 합니다.참고로 문자열이나 주석의 방향 서식 지정 문자는 팝되지 않을 경우 줄 끝까지 방향 변경을 연장할 수 있습니다.일반적으로 코드 편집자는 호모글리프 및 방향 형식 지정 문자와 같이 의심스러운 유니코드 문자를 명시적으로 렌더링하고 강조 표시해야 합니다.11월부터 GitHub는 이제 양방향 유니코드 텍스트가 포함된 모든 코드 줄에 경고 기호와 메시지를 추가합니다. 단, 이러한 문자의 줄 위치는 강조 표시하지 않습니다.이로 인해 여전히 악의적인 방향 변경과 함께 악의적인 방향 변경이 몰래 유입될 수 있습니다.

개발자와 코드 리뷰어 간의 인식은 필수적이므로 취약점을 설명하는 안내문을 만들었습니다.현재 이 연습은 Java, C#, Python, GO 및 PHP에서 사용할 수 있습니다.

더 자세히 알고 싶으시면 저희 제품을 사용해보세요 트로이 소스 시뮬레이션 (공개 임무), 그리고 읽어보세요 트로이 소스 리서치.

자바 시뮬레이션

C #에서의 시뮬레이션

PHP에서의 시뮬레이션

GO에서의 시뮬레이션

파이썬에서의 시뮬레이션

观看网络研讨会
开始
了解更多

点击下方链接下载此资源的PDF文件。

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
共享对象:
领英品牌社交x 标志
您对更多内容感兴趣吗?

共享对象:
领英品牌社交x 标志
作者
Laura Verheyde
2022年2月23日出版

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

共享对象:
领英品牌社交x 标志

11월 초, 케임브리지 대학교는 다음과 같은 내용을 발표했습니다. 트로이 목마-소스라는 연구.이 연구는 방향성 서식 지정 문자를 사용하여 소스 코드와 댓글에 백도어를 숨길 수 있는 방법에 초점을 맞췄습니다.이는 컴파일러가 인간 코드 검토자와 다르게 로직을 해석하는 코드를 만드는 데 사용할 수 있습니다.

이전에 유니코드가 파일의 실제 파일 이름 확장자를 숨기는 등 악의적으로 사용된 적이 있긴 하지만 이 취약점은 새로 발생했습니다. 파일 이름의 마지막 부분의 방향 바꾸기.최근 연구에 따르면 많은 컴파일러는 경고 없이 소스 코드의 유니코드 문자를 무시하는 반면 코드 편집기를 비롯한 텍스트 편집기는 이를 기반으로 주석과 코드가 포함된 줄을 리플로우할 수 있습니다.따라서 편집기는 코드와 주석을 컴파일러가 파싱하는 방식과 다르게, 다른 순서로 표시할 수 있습니다. 심지어 코드와 주석을 교환하는 경우에도 마찬가지입니다.

자세히 알아보려면 계속 읽어보세요.또는 Trojan Source의 해킹 시뮬레이션을 시도해보고 싶으시다면, 무료로 제공되는 서비스로 바로 접속해 보세요. 공공 임무 직접 경험해 보세요.

양방향 텍스트

이러한 트로이 소스 공격 중 하나는 Unicode Bidi (양방향) 알고리즘을 사용합니다. 이 알고리즘은 영어 (왼쪽에서 오른쪽) 및 아랍어 (오른쪽에서 왼쪽) 와 같이 표시 순서가 다른 텍스트를 정렬하는 방법을 처리합니다.방향 서식 지정 문자를 사용하여 그룹을 재구성하고 문자 순서를 표시할 수 있습니다.

위 표에는 공격과 관련된 일부 Bidi 오버라이드 문자가 포함되어 있습니다.예를 들어,

RLI e d o c 피디

약어 RLI는 다음을 나타냅니다. 오른쪽에서 왼쪽 분리.텍스트를 컨텍스트 (PDI로 구분) 에서 분리합니다. 팝 디렉셔널 아이솔레이트) 를 클릭하고 오른쪽에서 왼쪽으로 읽습니다.결과는 다음과 같습니다.

ǞǞǞ

그러나 컴파일러와 인터프리터는 일반적으로 소스 코드를 파싱하기 전에 Bidi 오버라이드를 비롯한 서식 제어 문자를 처리하지 않습니다.방향성 형식 지정 문자를 그냥 무시하면 다음과 같이 파싱됩니다.

e d o c

새 병에 담긴 오래된 와인?

물론 이것은 태양 아래서 새로운 것이 아닙니다.과거에는 방향 지정 문자가 사용되었습니다. 파일 이름에 삽입 그들의 악의적인 성격을 감추기 위해서요'myspecialexe.doc '로 표시된 이메일 첨부 파일은 RLO가 아니었다면 충분히 순진해 보일 수 있습니다 (오른쪽에서 왼쪽으로 오버라이드) 실제 이름이 'myspecialcod.exe'임을 보여주는 캐릭터 선물

트로이 소스 공격은 소스 코드에 있는 주석과 문자열에 방향 서식 지정 문자를 삽입합니다. 이러한 경우 구문이나 컴파일 오류가 발생하지 않기 때문입니다.이러한 제어 문자는 코드 로직의 표시 순서를 변경하여 컴파일러가 사람이 읽는 것과는 완전히 다른 것을 읽게 합니다.

예를 들어 다음 바이트를 순서대로 포함하는 파일:

双向的Unicode文本

방향 형식 지정 문자별로 다음과 같이 재정렬됩니다.

方向性的格式化字符

방향 형식 지정 문자가 명시적으로 호출되지 않은 경우 코드가 다음과 같이 렌더링됩니다.

双向的Unicode字符

RLO는 마지막 줄에서 닫는 브레이스를 여는 브레이스로 뒤집고 반대도 마찬가지입니다.이 코드를 실행하면 다음과 같은 결과가 나옵니다. “당신은 관리자입니다.”관리자 검사가 주석 처리되었지만 제어 문자를 보면 해당 검사가 여전히 존재했다는 인상을 줍니다.

(출처: https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

이것이 여러분에게 어떤 영향을 미칠 수 있을까요?

C, C++, C#, 자바스크립트, 자바, 러스트, 고, 파이썬 등 많은 언어가 공격에 취약하며, 더 많은 언어가 공격에 취약한 것으로 추정됩니다.이제 일반 개발자는 소스 코드에서 방향 지정 문자를 보고 눈살을 찌푸릴 수도 있지만, 초보자는 어깨를 으쓱하고 아무 생각도 하지 않는 것이 나을 수도 있습니다.게다가 이러한 문자의 시각화는 IDE에 따라 크게 달라지므로 발견될 것이라는 보장은 없습니다.

하지만 애초에 이 취약점이 어떻게 소스 코드에 잠입할 수 있었을까요?무엇보다도 악성 코드 기여가 눈에 띄지 않는 신뢰할 수 없는 출처의 소스 코드를 사용할 때 이런 일이 발생할 수 있습니다.두 번째로, 인터넷에서 찾은 코드를 복사하여 붙여넣는 것만으로도 이런 일이 일어날 수 있습니다. 우리 개발자 대부분이 이전에 해본 일이죠.대부분의 조직은 여러 공급업체의 소프트웨어 구성 요소에 의존합니다.이로 인해 이 코드를 어느 정도까지 신뢰하고 신뢰할 수 있는지에 대한 의문이 생깁니다.숨겨진 백도어가 포함된 소스 코드를 어떻게 선별할 수 있을까요?

누구의 문제일까요?

한편으로 컴파일러와 빌드 파이프라인은 한 방향이 문자열과 주석으로 엄격하게 제한되지 않는 한 방향이 둘 이상인 소스 코드 라인을 허용하지 않아야 합니다.참고로 문자열이나 주석의 방향 서식 지정 문자는 팝되지 않을 경우 줄 끝까지 방향 변경을 연장할 수 있습니다.일반적으로 코드 편집자는 호모글리프 및 방향 형식 지정 문자와 같이 의심스러운 유니코드 문자를 명시적으로 렌더링하고 강조 표시해야 합니다.11월부터 GitHub는 이제 양방향 유니코드 텍스트가 포함된 모든 코드 줄에 경고 기호와 메시지를 추가합니다. 단, 이러한 문자의 줄 위치는 강조 표시하지 않습니다.이로 인해 여전히 악의적인 방향 변경과 함께 악의적인 방향 변경이 몰래 유입될 수 있습니다.

개발자와 코드 리뷰어 간의 인식은 필수적이므로 취약점을 설명하는 안내문을 만들었습니다.현재 이 연습은 Java, C#, Python, GO 및 PHP에서 사용할 수 있습니다.

더 자세히 알고 싶으시면 저희 제품을 사용해보세요 트로이 소스 시뮬레이션 (공개 임무), 그리고 읽어보세요 트로이 소스 리서치.

자바 시뮬레이션

C #에서의 시뮬레이션

PHP에서의 시뮬레이션

GO에서의 시뮬레이션

파이썬에서의 시뮬레이션

目录

查看资源
您对更多内容感兴趣吗?

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示下载
共享对象:
领英品牌社交x 标志
资源中心

有助于开始的资源

更多帖子
资源中心

有助于开始的资源

更多帖子