아니
원래 설명했듯이 공격은 결코 위협이되지 않았습니다. 컴파일러는 이론적으로이 작업을 수행 할 수 있지만 실제로 공격을 시작하려면 컴파일러를 프로그래밍해야합니다.
- 컴파일되는 소스 코드가 컴파일러 인 경우를 인식하고
- 임의의 소스 코드를 수정하여 해킹을 삽입하는 방법을 알아 봅니다.
이를 위해서는 컴파일러가 소스 코드에서 작동하는 방식을 파악하여 손상없이 수정할 수 있습니다.
예를 들어, 링크 형식이 실행 파일 어딘가에 컴파일 된 기계 코드의 데이터 길이 또는 오프셋을 저장한다고 가정하십시오. 컴파일러는이 중 어느 것을 업데이트해야하는지, 익스플로잇 페이로드를 삽입 할 때 어디에 있는지 알아 내야합니다. 이후 버전의 컴파일러 (무해한 버전)는이 형식을 임의로 변경할 수 있으므로 익스플로잇 코드는 이러한 개념을 효과적으로 이해해야합니다.
이것은 높은 수준의 자체 지향 프로그래밍, 어려운 AI 문제입니다. 보세요 :이 일을 할 수있는 사람은 거의 없습니다. 프로그래밍 언어를 배우고 코드베이스를 먼저 이해해야합니다.
AI 문제가 해결 되더라도 작은 컴파일러를 컴파일하면 거대한 AI 라이브러리가 연결된 바이너리가 생성되는지 알 수 있습니다.
유사한 공격 : 부트 스트랩 신뢰
그러나 공격의 일반화는 관련이 있습니다. 기본적인 문제는 신뢰 체인이 어딘가에서 시작해야한다는 것입니다. 많은 도메인에서 그 체인의 기원이 감지하기 어려운 방식으로 전체 체인을 파괴 할 수 있습니다.
실생활에서 쉽게 벗어날 수있는 예
Ubuntu Linux와 같은 운영 체제는 리포지토리의 서명 키 (공개 키 암호화 사용)와 비교하여 다운로드 한 업데이트 패키지를 확인하여 업데이트의 보안 (무결성)을 보장합니다. 그러나 서명 키가 합법적 인 소스에 의해 소유되어 있음을 증명할 수있는 경우 에만 업데이트의 신뢰성 을 보장 합니다 .
서명 키는 어디서 얻었습니까? 운영 체제 배포를 처음 다운로드 한 경우
신뢰의 근원 인이 서명 키가 악한 것이 아니라는 것을 신뢰해야합니다.
귀하와 Ubuntu 다운로드 서버 간의 인터넷 연결을 MITM 할 수있는 사람 (이는 ISP, 인터넷 액세스를 제어하는 정부 (예 : 중국) 또는 Ubuntu 호스팅 제공 업체)이이 프로세스를 가로 챌 수 있습니다.
- Ubuntu CD 이미지를 다운로드하고 있음을 감지하십시오. 이것은 간단합니다. 요청이 (공개적으로 나열된) 우분투 미러 중 하나에 가고 ISO 이미지의 파일 이름을 요청하는 것을보십시오.
- 자신의 서버에서 요청을 처리하여 우분투 대신 공격자의 공개 키 및 리포지토리 위치가 포함 된 CD 이미지를 제공합니다.
그런 다음 공격자의 서버에서 안전하게 업데이트를받습니다. 업데이트는 루트로 실행되므로 공격자는 모든 권한을 갖습니다.
원본이 정품인지 확인하여 공격을 방지 할 수 있습니다. 그러나이를 위해서는 해시를 사용하여 다운로드 한 CD 이미지의 유효성을 검사해야합니다 ( 실제로이 작업을 수행하는 사람은 거의 없음 ). 해시 자체는 HTTPS를 통해 안전하게 다운로드해야합니다. 또한 공격자가 컴퓨터에 회사 환경에서 일반적으로 사용되는 인증서를 추가하거나 인증 기관 (예 : 중국)을 제어 할 수있는 경우 HTTPS조차도 보호 기능을 제공하지 않습니다.