데이터만으로 공격하는 방식: '데이터 전용 공격'의 위협성
Data-only attacks are easier than you think (2024)
Hacker News기존에는 너무 복잡하거나 전문적이라 실질적인 위협이 아닐 것으로 여겨졌던 '데이터만으로 공격하는 방식(data-only attacks)'을 자동 생성할 수 있는 도구 'Einstein'이 개발되었습니다.
- 이 공격은 프로그램의 실행 흐름 자체를 조작하기보다, 메모리 취약점을 이용해 시스템 호출 인자 같은 데이터를 악성으로 변경하여 임의의 프로그램을 실행시키는 방식으로 작동합니다.
- 데이터 공격이 더 이상 고도의 전문 지식을 요구하지 않고 자동화되어 실질적인 위협이 될 수 있음을 입증하며, 소프트웨어 보안 방어 전략 전반에 대한 재검토가 필요해졌습니다.
- Einstein은 특정 애플리케이션의 로직을 알 필요 없이, 모든 프로그램이 사용하는 범용 시스템 호출(syscall) 인터페이스를 분석하여 취약점을 찾아낸다는 점에서 큰 의미가 있습니다.
과거에는 프로그램의 제어 흐름을 조작하는 방식으로 취약점을 악용하는 것이 일반적이었으나, DEP나 CFI 같은 방어 기법이 도입되면서 이러한 방법은 실질적으로 어렵게 되었습니다. 이에 따라 연구진들은 프로그램이 의도한 코드를 실행하되, 그 인자(argument)에 악성 데이터를 주입하여 공격하는 '데이터 전용 공격(data-only attacks)'에 주목했습니다. 이 방식은 기존에는 너무 애플리케이션 특화적이거나 복잡하여 실질적인 위협으로 간주되지 않았으나, 새로운 연구를 통해 자동 생성 가능성이 입증되었습니다.
예시로 웹 서버의 취약점을 이용하는 공격이 제시되었는데, 이는 메모리 안전성 버그를 악용해 시스템 호출(syscall) 인자 같은 데이터를 조작하는 방식입니다. 이 경우, 공격자는 프로그램에 악성 코드를 직접 주입하지 않고도, 단순히 데이터만 변경하여 임의의 프로그램을 실행시킬 수 있습니다. 즉, 피해 서버는 동일한 절차와 함수를 수행하지만, 그 입력값인 인자(arguments)가 악성으로 변질되는 원리입니다.
연구진은 이러한 데이터 전용 공격을 자동 생성하는 도구 'Einstein'을 개발했습니다. Einstein의 핵심은 특정 애플리케이션의 내부 로직이나 복잡한 프로토콜 이해를 요구하지 않는다는 점입니다. 대신, 모든 프로그램이 운영체제 커널과 통신하는 범용적인 시스템 호출(syscall) 인터페이스에 초점을 맞춰, 공격자가 조작할 수 있는 데이터가 어떤 보안 민감한 syscall 인자로 흘러들어갈 수 있는지 추적합니다.