Back to Blog

팟캐스트: BlockSec이 실시간으로 1,500만 달러 규모의 Web3 익스플로잇을 차단한 방법

Phalcon
February 2, 2024
17 min read

BlockSec CEO Andy Zhou는 Spraping Bits 팟캐스트에 초청되어 BlockSec 팀이 Web3의 혼란스럽고 복잡한 환경에서 잠재적인 보안 취약점을 어떻게 식별하고 완화하는지에 대한 주제를 논의했습니다. 아래는 저희가 정리한 흥미로운 내용의 모음입니다. 팟캐스트 전체 버전을 들으시려면 여기를 클릭하세요.

Andy Zhou 00:00

저희 팀에는 해커가 공격 트랜잭션을 전송하기 전에도 공격 컨트랙트를 탐지할 수 있는 시스템이 운영되고 있습니다. 해커들은 공격 컨트랙트를 배포한 다음 프로토콜을 공격하기 위한 트랜잭션을 전송해야 하기 때문입니다. 따라서 공격 트랜잭션이 전송되기 전, 해커가 공격 스마트 컨트랙트를 배포하는 시점에 저희 AI 기반 엔진이 악성 컨트랙트를 정확하게 식별할 수 있습니다.

Andy Zhou 00:53

감사합니다, DeGatchi. 저도 이 자리에 함께하게 되어 매우 영광입니다.

DeGatchi 00:56

영광입니다. 정말 감사합니다. 저를 잘 모르시는 분들을 위해, 자기소개와 하시는 일에 대해 말씀해 주시겠어요?

Andy Zhou 01:02

저는 Andy이고, BlockSec의 CEO입니다. 또한 중국의 최고 대학인 저장대학교의 교수이기도 합니다. 사이버보안 분야에서 10년 이상의 경험을 가지고 있으며, 이전에는 스마트폰 보안 분야에서 일했고, 이후 몇 년간 스마트 컨트랙트 보안으로 전환했습니다.

DeGatchi 01:22

스마트 컨트랙트 보안 초기에는 어떻게 시작하셨나요? 수동 감사를 하셨나요, 아니면 저처럼 바로 자동화로 넘어가셨나요?

Andy Zhou 01:30

스마트 컨트랙트 보안과 관련하여, 회사와 연구팀 모두에서 정적 분석과 동적 분석을 함께 수행합니다. 정적 분석의 경우, 스마트 컨트랙트의 정적 분석을 향상시키기 위한 다양한 기술을 개발했습니다. 현재 커뮤니티에서 사용 가능한 대부분의 도구들은 공통적인 문제를 가지고 있는데, 바로 오탐(false positive)이 너무 많다는 것입니다. 예를 들어, 재진입(reentrancy) 문제를 탐지하기 위해 간단한 스마트 컨트랙트를 도구에 입력하면, 많은 재진입 문제나 다른 문제들을 보고할 수 있습니다. 하지만 이 보고서를 수동으로 확인해보면 대부분이 오탐임을 알 수 있습니다. 따라서 오탐이 현재 정적 분석 도구의 주요 문제임을 발견했습니다.

Andy Zhou 02:20

이러한 오탐의 근본적인 원인은 스마트 컨트랙트의 시맨틱(의미론)에 대한 이해 부족입니다. 시맨틱이란 컨트랙트 내의 변수들과 그 관계들의 의미를 말합니다. 예를 들어, ERC-20 토큰에는 각 소유자의 잔액을 나타내는 변수와 누가 얼마를 누구에게 전송하도록 승인했는지를 나타내는 승인 값이 있습니다. 정적 분석의 정밀도를 향상시키려면 어떤 변수가 잔액에 해당하고, 어떤 변수가 승인 및 기타 특정 기능과 관련이 있는지 정확하게 식별하는 것이 중요합니다. 이를 통해 정적 분석에서 훨씬 더 나은 정밀도를 달성할 수 있습니다.

Andy Zhou 03:00

정적 분석 도구 개발 경험에서 얻은 한 가지 인사이트는 변수 간의 상관관계를 확립하기 위한 강력한 오염 분석(taint analysis) 엔진의 필요성입니다. 정적 분석 도구가 활용하는 핵심 기술인 데이터 흐름 분석은 중요한 역할을 합니다. 여기에는 메모리와 스토리지 모델링, 그리고 정적 분석 도구 내에서 오염 분석 기술을 정밀하고 효율적으로 활용하는 방법이 포함됩니다. 오염 분석과 데이터 흐름 분석이라는 두 가지 핵심 기술은 저희 정적 분석 도구의 역량을 강화하는 데 매우 효과적임이 입증되었습니다.

Andy Zhou 03:48

연구팀에서는 이 정적 분석 도구를 개발하고 배포하여 블록체인에서 새롭게 생성되는 각 스마트 컨트랙트를 분석합니다. 저희가 식별한 제로데이 취약점을 개발자들에게 보고하고 있습니다. 안타깝게도 일부 개발자들은 취약점에 관심을 갖지 않습니다. 심지어 이를 보고할 효율적인 채널을 찾지 못하는 경우도 있습니다. 매우 안타까운 일입니다.

Andy Zhou 04:13

효과적인 정적 분석 도구를 원한다면 시맨틱과 오염 분석 엔진이 필요합니다. 이것이 정적 분석 도구에 대한 저희의 경험입니다. 정적 분석 도구 외에도, 연구팀에는 동적 분석 도구도 있습니다. 취약한 스마트 컨트랙트 외에도 악성 트랜잭션을 식별하고자 하기 때문입니다.

Andy Zhou 04:31

취약한 스마트 컨트랙트를 분석하는 것뿐만 아니라 프로토콜이나 다른 스마트 컨트랙트를 공격하는 트랜잭션을 탐지하는 것도 중요합니다. 이를 위해 저희는 인스트루멘테이션 기능을 갖춘 커스텀 가상 머신을 보유하고 있습니다. 이를 통해 가상 머신이나 스마트 컨트랙트의 실행 환경에 쉽게 연결될 수 있는 자체 탐지 규칙을 작성할 수 있습니다. 트랜잭션의 악성 여부를 판단하기 위해 다양한 신호를 포착합니다. 예를 들어, 트랜잭션 발신자가 공격 이력이 있는지, 자금이 의심스러운 출처에서 왔는지 등을 검토합니다. 다양한 신호를 결합하여 각 트랜잭션과 관련된 위험을 평가합니다. 저희 팀은 이 탐지 엔진을 배포하여 공격 트랜잭션을 신속하게 포착하고 식별할 수 있습니다.

DeGatchi 05:41

네, 흥미롭네요. 저도 정적 분석기로 같은 작업을 해봤습니다. 오염 분석은 기본적으로 필수적이지만, 정적 분석기로 하는 작업과 상관없이 모든 데이터를 퍼저(fuzzer)로 옮기죠, 그렇죠? 저도 퍼저를 만들고 있었는데, 사람들이 어떻게 접근하는지 보는 것이 정말 흥미롭습니다. 매우 흥미로운 해결책들이 있습니다. 사람들은 이 공간에서 매우 순차적으로 생각하는 경향이 있는데, 고려해야 할 차원이 많기 때문에 순차적 접근은 정답이 아닙니다.

DeGatchi 06:08

차원에 대해 이야기해봅시다. 트랜잭션의 콜데이터가 있다고 가정해봅시다. 함수와 컨트랙트도 있고, 또 다른 차원인 단계(stage)도 있습니다. 매우 맥락 의존적이죠. 이제 이 네 가지 변수와 차원이 있고, 가장 미묘한 조정으로도 서로 영향을 미칩니다. 예를 들어, 컨트랙트 A와 컨트랙트 B, 그리고 각각의 함수들이 있을 때, 모든 다양한 방식으로 순서를 정해야 하는데, 함수 A 다음에 함수 B, 함수 B 다음에 함수 A처럼 단순한 경우만 있는 게 아닙니다. 함수 A, 함수 B, 함수 B, 함수 B, 함수 A 순서로 실행하는 것도 가능합니다. 정말 어려운 문제입니다.

DeGatchi 06:43

그리고 당신이 하고 계신 작업이 매우 흥미롭다고 생각합니다. 최근에 Phalcon을 발전시켜 트랜잭션 탐지 기능을 포함시킨 것으로 알고 있습니다. 이는 해킹을 위한 일반화된 프론트러너(frontrunner)와 같은 것입니다. 이를 통해 많은 생각을 하게 됩니다. 프론트런닝 게임은 전담 MEV 팀이 지배하고 있습니다. 이들은 프론트런닝, 샌드위치 공격, 백런닝 등을 수행하며, 레이턴시가 매우 낮은 전용 인프라와 고빈도 거래 설비를 갖추고 있고, 블록 빌더, 릴레이 등과 파트너십을 맺고 있습니다. 그렇다면 이러한 MEV 팀 대신 어떻게 트랜잭션을 프론트런 할 수 있나요?

Andy Zhou 07:24

네, 매우 좋은 질문입니다. 기본적으로 저희 시스템의 주요 목표는 MEV 봇을 프론트런하는 것이 아니라 프로토콜을 보호하는 것이며, 저희는 해커를 대상으로 하고 있습니다.

DeGatchi 07:37

하지만 해커가 공개 멤풀(Mempool)에 트랜잭션을 제출하면, 비공개인 경우는 아무도 볼 수 없지만, 공개 멤풀이라면 다른 일반화된 프론트러너들도 볼 수 있습니다. 그렇다면 어떻게 그들을 이기나요?

Andy Zhou 07:51

네, 보안은 항상 선한 자와 나쁜 자 사이의 군비 경쟁이라고 말합니다. 초기에는 쉬웠는데, 나쁜 자들이 저희 팀과 MEV 봇의 존재를 몰랐기 때문입니다. 그 시절에는 가스비를 얼마나 지불하거나 검증인에게 뇌물을 얼마나 주느냐에 달려 있었습니다. 초기에는 훨씬 쉬웠지만, 요즘 해커들은 MEV 봇에 의해 프론트런되는 것을 방지하기 위한 기술을 사용합니다. 예를 들어, 저희는 해커들이 MEV 봇의 프론트런을 방지하기 위해 배포한 매우 흥미로운 기술을 목격했습니다. 기본적으로 트랜잭션에서, 해커들은 먼저 다른 스마트 컨트랙트에서 특정 값을 가져와 그 값이 해당 변수의 초기 값과 같은지 확인합니다. 공격을 수행할 때, 해커들은 먼저 다른 스마트 컨트랙트의 변수를 해당 조건을 충족시키도록 설정하는 트랜잭션을 보내고, 두 번째 트랜잭션으로 실제 해킹을 수행합니다. MEV 봇이 사용하는 가장 일반적인 기술은 단일 트랜잭션을 시뮬레이션하는 것이기 때문에, 두 번째 트랜잭션만 시뮬레이션하면 조건이 충족되지 않아 실패합니다. 조건이 첫 번째 공격 트랜잭션에 의해 설정되기 때문입니다. 이러한 까다로운 부분 때문에 일부 MEV 봇은 이를 처리하지 못합니다. 저희는 서로 다른 트랜잭션 간의 상관관계를 분석하는 기술이 있기 때문에 이를 처리할 수 있습니다.

DeGatchi 09:40

네, 여러 트랜잭션을 처리해야 합니다. 일반화된 프론트런닝을 수행하는 경우, 표준적인 방법은 주소를 교체하거나, 여러 주소가 있는 경우 모두 교체하고 기본적으로 모든 옵션을 시도하는 것이기 때문에 하나만으로는 안 됩니다.

Andy Zhou 09:52

정확합니다.

DeGatchi 09:53

설정(setup)을 포함한 멀티 컨트랙트 방식을 사용한다면, 컨트랙트 배포 후 해당 설정 컨트랙트의 함수를 호출하여 새로운 것을 설정하고, 그것을 익스플로잇 컨트랙트에서 사용하게 됩니다. 이를 해결하는 방법은 기본적으로 다시 시뮬레이션하는 것이지만, 실제로 호출되는 것의 상태를 확인해야 합니다. 그것이 원래 컨트랙트의 배포 상태와 일치하지 않는다면, CFG를 통해 해당 함수를 찾아 익스플로잇 컨트랙트를 수정하여 설정하거나 완전히 제거해야 합니다. 매우 어려운 일이지만, 실제로 이것을 구현하고 작동시키셨다는 것이 놀랍습니다.

Andy Zhou 10:33

네, 작동하고 있지만, 많은 개발 노력이 필요하며 매우 좋고 효율적인 분석 엔진도 필요합니다.

DeGatchi 10:42

정말 인상적입니다. 여러분은 이미 20건의 해킹을 방지하고 약 1,500만 달러의 손실을 막았습니다. 그것도 출시 전 6개월 이내에요.

Andy Zhou 10:51

해킹 방지는 지난 1년 반 동안 이루어진 것입니다. 한 달이나 두 달 만에 이루어진 것이 아니라, 1년 반에 걸친 지속적인 노력의 결과입니다.

DeGatchi 11:04

그래도, 이런 일을 하는 곳은 없습니다. 정말 훌륭한 일이며, 모든 사람이 최소한 이를 갖춰야 한다고 생각합니다. 가입해야 하거나 다소 다른 난독화 기술이 있을 수 있어 모든 사람에게 100% 구원이 되지 않을 수도 있지만, 아무것도 없는 것보다는 낫습니다. 해킹당하는 것은 회사 전체, 모든 사용자, 모든 명성의 몰락과 같습니다—모든 것이 사라지는 거죠. 정말 중요한 일입니다. 어떻게 이것을 구축하셨나요? AI를 사용하셨나요? 아니면 완전히 휴리스틱 방식일 수는 없을 것 같은데요.

Andy Zhou 11:41

기본적으로 다양한 기술을 결합합니다. 해킹 탐지를 위해 AI 기반 솔루션과 행동 분석을 결합합니다. AI 기반 솔루션으로는 머신 러닝 기술을 사용하여 공격 컨트랙트를 탐지합니다. 저희 팀에는 해커가 공격 트랜잭션을 전송하기 전에도 공격 컨트랙트를 탐지할 수 있는 시스템이 운영되고 있습니다. 해커들은 공격 컨트랙트를 배포한 다음 프로토콜을 공격하기 위한 트랜잭션을 전송해야 하기 때문입니다. 따라서 공격 트랜잭션이 전송되기 전, 해커가 공격 스마트 컨트랙트를 배포하는 시점에 저희 AI 기반 엔진이 악성 컨트랙트를 정확하게 식별합니다. 오탐이 전혀 없다고 말하는 것은 아니지만, 오탐이 매우 낮습니다. 따라서 해킹 트랜잭션 이전 단계에서도 공격 스마트 컨트랙트를 탐지할 수 있습니다. 문제는 공격 스마트 컨트랙트를 식별할 때 해킹의 실제 피해자를 모를 수 있다는 것입니다. 때로는 대상 주소가 스마트 컨트랙트에 하드코딩되지 않고 파라미터로 전달될 수 있기 때문입니다. 이를 트리거하기 위해 퍼징 기술이 필요합니다. 하지만 모든 대상 스마트 컨트랙트 주소가 파라미터로 전달된다면, 퍼징도 도움이 되지 않습니다.

Andy Zhou 13:05

복잡한 경우에는 이 단계에서 공격 스마트 컨트랙트를 식별할 수 없으며, 공격 트랜잭션 탐지 단계에서 처리해야 합니다. 공격 트랜잭션의 경우, 행동 기반 솔루션을 사용하여 해킹 트랜잭션을 탐지합니다. 핵심 아이디어는 모든 해커가 이익을 원한다는 것입니다. 따라서 트랜잭션에서 이익을 얻기 위해 정확해야 합니다. 이러한 공격 트랜잭션을 탐지한 후, MEV 봇처럼 유사한 공격 트랜잭션을 자동으로 합성하고, 이익 주소를 교체하여 체인에 올립니다. 이것이 기본적으로 BlockSec Phalcon 출시 전 시스템이 원래 작동하던 방식입니다.

DeGatchi 13:54

AI와 관련하여, 지도 학습 모델일 것 같지는 않습니다. 해킹 데이터가 많지 않기 때문에 강화 학습이어야 할 것 같습니다. 실제로 모델을 훈련시키기에 충분한 데이터가 없잖아요.

Andy Zhou 14:08

머신 러닝에 대해 매우 좋은 지적을 하셨습니다. 악성 스마트 컨트랙트 탐지의 경우, 모델을 훈련하기 위한 샘플이 많지 않아 효과적이지 않습니다. 이 경우 핵심 인사이트는 스마트 컨트랙트 내의 핵심 특성을 추출하는 방법입니다. 일부는 바이트코드 시퀀스를 사용하여 모델을 훈련시키지만, 스마트 컨트랙트의 바이트코드 시퀀스는 너무 일반적이고 보편적이기 때문에 효과적이지 않습니다. 스마트 컨트랙트의 뚜렷한 특성을 추출해야 합니다. 현재 저희가 사용하는 것은 제어 흐름 그래프(control flow graph), 핵심 함수 간의 데이터 흐름 관계, 그리고 주소 레이블이나 스마트 컨트랙트 생성자의 속성을 함께 사용하여 모델을 훈련시키는 것으로, 매우 효과적임이 입증되었습니다.

DeGatchi 14:55

즉, 핵심 특성을 추출하는 거군요. 예를 들어, 하드코딩된 주소나 콜데이터로 전달되는 주소가 있을 수 있습니다. Solidity에서 마스킹을 사용할 수도 있는데, Solidity에서는 꽤 일반적입니다. 하지만 커스텀 하이 코드 컨트랙트라면 매우 정교한 해커일 것입니다. 정교한 해커들, 특히 철저하게 계획하는 해커들은 100% 커스텀 바이트코드의 비공개 트랜잭션이나 난독화를 위한 트랜잭션 무리를 사용할 것입니다. 이것은 제가 연구하고 매우 관심을 가졌던 것입니다. 효과적임이 증명되었습니다. 실제로 제가 발견한 기술을 사용하는 사람을 본 적이 없습니다. 사용할 일이 없기 때문에 실제로 이에 대한 글을 쓸 수도 있을 것 같습니다. 흥미로운 내용이었습니다.

Andy Zhou 15:46

네, 이 연구 프로젝트를 시작하기 전에는 저도 효과가 있을 것이라고 생각하지 않았습니다. 하지만 6개월 후에 매우 효과적임을 증명했습니다.

DeGatchi 16:02

네, 정말 놀랍습니다. 정말 올바른 방향으로 나아가는 놀라운 발걸음이라고 생각합니다. 이와 같은 도구들이 더 많이 필요합니다. 하지만 이것은 또한 질문을 제기합니다. AI를 사용하고 계신데, AI가 첫째로 비즈니스에 어떤 영향을 미칠지, 그리고 AI로 인해 무엇이 구식이 될지, 오늘날 이 혁명에 대비하기 위해 무엇을 할 수 있을지 어떻게 생각하시나요?

Andy Zhou 16:23

솔직히 말씀드리면, 저는 AI 전문가가 아닙니다. 저희는 단지 악성 스마트 컨트랙트를 탐지하기 위한 연구 분야에 AI를 적용하고 있습니다. 보안 분야에서 AI의 잠재력은 아직 완전히 탐구되지 않았다고 생각합니다. 보안 분야에 AI를 적용하기 위해서는 해결하려는 문제에 대한 매우 깊은 이해가 필요합니다. 해결하려는 문제를 깊이 이해하면 좋은 특성을 추출할 수 있기 때문입니다. 특성이 매우 중요하다고 생각합니다. 같은 컨트랙트나 같은 트랜잭션이라도 훈련을 위한 좋은 특성이 없다면 결과가 완전히 달라질 수 있습니다. 제 관점에서 AI의 잠재력이 완전히 탐구되지 않은 이유는 매우 뛰어난 AI 전문가와 매우 전문적인 도메인 전문가가 결합하여 특성을 추출해야 하기 때문입니다.

DeGatchi 17:30

동의합니다. 매우 다릅니다. 두 분야, 두 도메인의 결합이죠. 우선 AI를 잘하는 것 자체가 어렵습니다. 그리고 그것을 배우는 데도 시간이 걸립니다. 수학을 알아야 하고, AI에 관한 모든 것을 알아야 합니다. 패키지와 라이브러리를 모르면 안 되고, 바이트코드와 사이버보안을 포함한 또 다른 도메인인 크립토 공간에도 있어야 합니다. 그것도 시간이 걸립니다. 하지만 순수 AI에서 크립토로 넘어오는 사람들이 크립토에서 AI로 넘어가는 것보다는 덜 어려울 것 같습니다. 순수 AI에 입문하는 것이 훨씬 더 어렵기 때문인데, 필요한 수학과 현재 아키텍처에 대한 총체적인 이해가 필요합니다.

DeGatchi 18:13

하지만 정말 흥미롭습니다. 무엇이 구식이 될 것 같으세요? AI는 분명히 모든 것을 바꿀 것입니다. AI를 사용하지 않으면 이러한 모든 비즈니스에서 다른 사람들보다 우위를 가질 수 없을 것 같습니다. 경쟁하기 어렵기 때문입니다. 저도 퍼저와 스택 분석기로 같은 일을 하고 있었지만, AI를 하는 사람들을 알고 있습니다. 그것은 이치에 맞습니다. 이 무한한 행동 공간을 생각해보면, 단순히 무차별 대입으로는 불가능합니다. 모든 행동을 필터링하고 실제로 무엇을 타겟팅해야 하는지 알기 위한 일종의 직관이 필요합니다. 그래서 이를 위해 AI가 필요합니다. 반복적인 인스턴스를 통해 학습할 수 있는 것이 필요하며, 특히 이 모든 프로토콜—모든 컨트랙트, 수백만 개의 인스턴스 또는 실행—에서 무언가를 실행한다면 말이죠. 그것은 직관을 학습할 수 있어야 합니다. 그렇지 않으면 자신 안에 그 직관을 구축하는 것인데, 그것은 매우 시간이 많이 걸리고 또한 매우 결함이 있습니다. 왜냐하면 모든 차원에서 생각할 수 없고, 결국 자신이 무엇을 모르는지조차 모르기 때문입니다. 개인적으로, AI에 관심이 없더라도 무조건 시작해야 한다고 생각합니다. 저도 수학을 모르지만 시작하고 있습니다. 제가 할 수 있다면 누구든 할 수 있습니다. 두고 봐야겠지만, 큰 헌신이 필요합니다.

Andy Zhou 19:36

맞습니다. 최근 AI에 관한 실험을 공유할게요. 앞서 말씀드렸듯이, 취약점을 찾기 위한 스마트 컨트랙트 퍼징 시스템이 내부에 있습니다. AI를 사용하여 퍼징을 위한 시드 입력을 생성할 수 있으며, 매우 효과적인 것으로 나타났습니다. 어떻게 하냐고요? 예를 들어, 퍼징할 스마트 컨트랙트가 다섯 개 있습니다. 먼저 이 스마트 컨트랙트들을 ChatGPT에 입력하고 각 함수의 핵심 기능을 요약할 수 있습니다. GPT에게 "이 함수의 주요 기능은 이것이고, 저 함수는 저것을 한다"고 알려줍니다. 그런 다음 GPT에게 "이 함수들에 대한 50가지 다른 입력을 생성해 달라"고 요청합니다. 매우 효과적인 것으로 나타났습니다. 이것을 시드 입력으로 사용하여 스마트 컨트랙트를 퍼징합니다.

DeGatchi 20:38

흥미롭네요. LLM은 실제로 꽤 좋다고 생각합니다. 임베딩 이해 측면에서 현재 최고라고 할 수 있는데 더 많이 알진 못하지만, 현재로서는 최선의 시도라고 할 수 있습니다. 그래서 이치에 맞습니다. 많은 사람들이 ChatGPT를 사용하고 있는데, 정말 좋은 사용 사례인 것 같습니다. 어떤 사람들은 컨트랙트를 이해하는 데 사용하고 있습니다. 모든 이해의 과정을 제거하고, 전체 코드베이스를 이해하려고 노력하는 대신 빠르게 파악하는 데 도움이 됩니다. 코드베이스가 수천 줄이 될 수도 있고, 여러 컨트랙트가 수천 줄일 수도 있습니다. 모든 것 사이의 관계와 의존성을 파악하기가 정말 어렵습니다.

DeGatchi 21:18

그런데 이 새로운 트랜잭션 차단 기능이 생겼는데, 왜 한 발 더 나아가 모든 제로데이와 모든 컨트랙트를 찾으려 하지 않으시나요? 만약 정교한 해커가 자신이 무엇을 하는지 알고 실제로 누군가를 표적으로 삼는다면, 예를 들어 Ronin 해킹처럼 6억 달러 규모이거나 아니면 좀 더 현실적으로 프로토콜에서 2억 달러나 2,000만 달러 규모라면, 그들은 그냥 비공개 트랜잭션을 보낼 것이고 당신은 그것을 차단할 수 없을 것입니다. 처음부터 모든 것을 구하는 비공개 트랜잭션을 실행하는 제로데이 방지에 완전히 집중하는 것이 더 낫지 않을까요?

Andy Zhou 22:02

네, 매우 좋은 질문입니다. 실제로 BlockSec 내에 프로젝트들에 대한 몇 가지 제안이 있습니다. 현재 BlockSec Phalcon의 경우, 체인 또는 멤풀에서 악성 트랜잭션을 탐지할 수 있습니다. 하지만 비공개 트랜잭션의 경우에는 볼 수 없습니다. 이것이 현재 단계입니다. 저희는 또한 노력을 더욱 발전시켜 해커들보다 먼저 스마트 컨트랙트의 취약점을 탐지하고 싶습니다. 방금 말씀드렸듯이, 이를 위한 퍼징 시스템이 있지만 현재 블록체인에 배포된 스마트 컨트랙트의 보안 취약점을 탐지하기 위한 퍼징 시스템을 계속 개선하고 있습니다.

Andy Zhou 22:55

취약점을 식별하기 위한 스마트 컨트랙트 퍼징을 수행할 때 몇 가지 과제가 있다고 생각합니다. 스마트 컨트랙트 퍼징의 과제 중 하나는 대상 컨트랙트에 대한 입력, 즉 트랜잭션을 생성하는 것입니다. 더욱이 스마트 컨트랙트의 경우 단일 트랜잭션이 아닌 취약점을 트리거하기 위한 일련의 트랜잭션 시퀀스를 생성해야 합니다. 때로는 트랜잭션 시퀀스가 서로 의존성을 가집니다. 첫 번째 트랜잭션, 두 번째, 세 번째가 있어야 하고, 이 세 트랜잭션의 완전한 시퀀스만이 취약점을 트리거할 수 있습니다. 여러 트랜잭션의 시퀀스를 생성해야 하며, 이 트랜잭션들의 의존성을 이해해야 합니다. 이것은 현재 상당히 어렵습니다. 첫 번째 과제입니다. 두 번째 과제는 취약점이 있는지 여부를 판단하기 위한 오라클(oracle)이 필요하다는 것입니다. 예를 들어, 스마트 컨트랙트에 트랜잭션을 보내면 취약점을 트리거했는지 어떻게 알 수 있을까요? 물론 이익을 계산하는 유사한 기술을 사용할 수 있습니다. 트랜잭션이 매우 높은 이익을 트리거하거나 특정 대출 프로토콜의 헬스 팩터(health factor)가 비정상적이 된다면 취약점이 있음을 알 수 있습니다. 하지만 퍼저를 위해 다양한 유형의 오라클을 요약해야 합니다. 이것이 두 번째 과제입니다.

DeGatchi 24:35

두 번째 부분이 상당히 흥미롭습니다. 새로운 프로토콜이 출시되고 토큰이 있는데, 주요 토큰과의 유동성 풀이 없고 다른 토큰과의 풀만 있다면 가격을 책정할 수조차 없습니다. 거대한 장벽이죠. 그런 종류의 오라클에 어떻게 접근할지 생각해보신 적 있나요?

Andy Zhou 24:57

네, 맞습니다. 퍼저와 DEX 풀을 위한 환경을 준비해야 하기 때문에 또 다른 과제입니다. 다양한 토큰을 준비하고 각 토큰의 가격을 시스템에 공급해야 합니다. 퍼저를 위해 다양한 종류의 것들을 준비해야 합니다. 매우 복잡합니다. 재진입(reentrancy)과 같은 단순한 취약점의 경우 퍼저로 트리거하기가 매우 쉽습니다. 하지만 가격 조작과 같은 복잡한 것들은 어렵습니다. 아직 시스템 작업 중이지만, 시간이 좀 더 필요합니다. 하지만 맞습니다, 저희는 이 방향으로 작업하고 있습니다.

DeGatchi 25:43

네, 전혀 사소한 작업이 아닙니다. 많은 복잡성이 필요하며, 다른 것들에 의존하는 많은 것들을 고려해야 합니다. 마치 질문 하나를 하면 두 가지 질문이 더 생기고, 이제 그것들이 서로 관련되어 계속 내려가는 것 같습니다. 오라클 문제는 아마도 가장 어려운 것 중 하나일 것입니다. 오라클 조작이 아마도 가장 큰 공격 요소이기 때문에 가장 중요한 것 중 하나이기도 합니다. 모든 것이 그것에 어느 정도 의존하고 있습니다. 내부 환율이 될 수도 있고, 외부 대 내부가 될 수도 있습니다.

DeGatchi 26:22

따라서 그들이 고려하지 않은 일종의 차익 거래가 있을 수 있으며, 인간의 오류는 확실하기 때문에 모든 것에 버그가 있습니다. 상호작용의 수는 고려되지 않을 것입니다. 새로운 프로토콜이 매일 출시됩니다. 현재 프로토콜이 그것과 상호작용할 수 있습니다. 다섯 가지 다른 프로토콜의 시퀀스가 될 수 있습니다.

DeGatchi 26:45

쉽지 않습니다. AI가 필요하다고 생각합니다. 취약한 서로 다른 컨트랙트의 이 모든 다양한 함수들에 대해 공간적으로 생각해야 하기 때문에, 순차적으로는 파악할 수 없습니다. 가능성이 너무 많기 때문입니다. 올해 초에 누군가와 이야기를 나눴는데, Pickle Finance 익스플로잇에 대해 이야기했습니다. 정말 흥미로운 사례인데, 8가지 취약점이 있었습니다. 그 중 하나를 놓쳤다면 익스플로잇이 불가능했고, 특정 순서가 필요했습니다. 이 익스플로잇은 실제로 5개의 커스텀 컨트랙트로 구성되었습니다. 5개의 커스텀 컨트랙트로 이 취약한 함수들의 시퀀스를 특정 방식으로 사용할 수 있는 컨텍스트를 구축했습니다.

DeGatchi 27:44

또 다른 부분은 Athena의 인슐레이터에서 주소(address)와 bytes20이 같은 의미를 가진다는 것을 이해하는 것이었습니다. 이 타입들이 무엇을 의미하는지 알아야 하기 때문에 사람들이 간과합니다. 기본적으로 그들이 하고 있던 것은, 제가 정말 매력적이라고 생각했는데, 가짜 기반 토큰과 같은 컨트랙트를 만들었다는 것입니다. 그리고 그 가짜 기반 토큰의 balanceOf가 주소를 반환했는데, 실제 금액이 아니었습니다. 실제 금액은 bytes32이고 주소는 bytes20이기 때문에 기술적으로 해당되는 2, 5, 6으로 주소를 전달할 수 있었습니다. 이것이 실제로 전체 체인을 생성했습니다. delegate code 상황을 만들어 사용되고 있었고, 그것이 어떻게 일어난 것입니다. 하지만 정말 흥미로웠습니다. 특정 작업을 수행하는 컨트랙트를 생성해야 하고 그것들이 새로운 시퀀스를 가능하게 했습니다. 이것은 최소 5개의 익스플로잇 컨트랙트를 생성할 수 있다는 것이 전혀 사소하지 않습니다. 극도로 매혹적인 문제이며, 매우 자극적이라고 생각합니다. 이런 것을 하는 것 이상으로 좋은 것은 없습니다. 정말 너무 좋아합니다.

DeGatchi 29:06

하지만 이런 것들은 정말 어렵습니다. 이 모든 것들에 대해 생각해보셨나요? 지금 어떤 기술들을 탐구하고 계신가요? 방금 공간적으로, 격리된 함수들을 살펴보고 서로 어떻게 상호작용하는지 보는 것에 대해 말씀드렸습니다. 어떻게 접근하느냐에 따라 관계가 가장 어려운 부분 중 하나입니다. 왜냐하면 오염 분석은 솔직히 충분하지 않기 때문입니다.

Andy Zhou 29:26

네, 서로 다른 스마트 컨트랙트 간의 관계에 대해 현재 매우 흥미로운 작업을 하고 있습니다. 상위 DeFi 프로토콜의 스마트 컨트랙트를 수동으로 수집합니다. 그런 다음 수동 분석을 수행하여 서로 다른 스마트 컨트랙트 간의 관계도를 그립니다. 예를 들어, wstETH가 특정 프로토콜, ABC 프로토콜에서 담보로 사용될 수 있다면, 이 프로토콜들 사이에 선을 그을 것입니다. 하나의 토큰이 다른 스마트 컨트랙트의 기반 토큰으로 사용될 수 있다면, 이 프로토콜들을 연결합니다.

Andy Zhou 30:02

기본적으로 일부 스크립트를 수동으로 사용하여 서로 다른 상위 프로토콜 간의 관계 전체 그림을 얻습니다. 이러한 인사이트를 정적 분석 및 퍼징 기술을 강화하는 데 사용할 것입니다.

Andy Zhou 30:15

이것이 현재 작업 중인 한 가지입니다. 아직 초기 단계이지만, 생성된 관계들은 때때로 정적 분석과 퍼징 시스템에 도움이 됩니다. 현재 작업 중인 또 다른 작업은 타입 추론입니다. 스마트 컨트랙트 호출 내의 입력 데이터, 예를 들어 콜데이터의 타입을 추론하고 싶습니다. 예를 들어, 콜데이터의 바이트 0부터 바이트 20까지는 주소 타입으로 추론할 수 있습니다. 그리고 입력의 다른 세그먼트에서 타입은 또 다른 것입니다. 이것은 퍼징에 매우 도움이 될 것입니다. 정적 분석을 활용하여 타입 추론을 수행하려고 합니다.

DeGatchi 30:55

흥미롭네요. 네, 위의 것들 간의 관계는 일종의 그래프와 같습니다. 하시는 일이 어렵습니다. 예를 들어, 컨트랙트가 있고 다른 컨트랙트에 대한 참조가 있다고 합시다. 하드코딩된 주소라면 꽤 간단합니다. 액세스할 수 있는 공간의 종류와 그 관계에서 어떻게 연결되는지 알 수 있습니다. 하지만 서로를 직접 참조하지 않는 컨트랙트도 있습니다. 콜데이터로 참조하거나 새 컨트랙트를 참조하는 풀을 만들 수 있습니다. Iron Vault 같은 것이었던 것 같은데, 다른 생태계에 있었습니다.

Andy Zhou 31:33

네, 쉽지 않지만 온체인 트랜잭션을 활용하여 연결할 수 있습니다. 온체인 트랜잭션은 서로 다른 스마트 컨트랙트 간의 상호작용을 드러낼 수 있기 때문입니다.

DeGatchi 31:44

하지만 그 흐름은 함수의 정상적인 시퀀스를 보는 것입니다. 제로데이를 찾으려면 정상에서 벗어나 다른 것을 해야 합니다. 정상이 무엇인지 식별하는 것은 좋다고 생각합니다. 그렇게 하면 무엇을 하지 말아야 하는지와 어떻게 깰 수 있는지를 알 수 있으니 좋습니다. 흥미롭네요. 퍼저에 대한 계획은 무엇인가요? 어떤 종류의 신경망 퍼징과 페어링할 생각인가요? Trail of Bits의 시도인데, 솔직히 가치 있지는 않지만 올바르게 구현되지 않고 있습니다. 퍼저에 대한 계획은 무엇인가요? 신경망 보조 퍼징을 할 건가요, 아니면 완전 AI 방식을 택할 건가요?

Andy Zhou 32:23

퍼징의 경우, 먼저 퍼저를 위한 시드 입력 생성과 입력 변이를 용이하게 하기 위한 좋은 타입 추론 시스템을 갖추려고 합니다. AI를 활용하여 시드 입력도 생성합니다. 또한 취약점을 신속하게 식별하기 위한 효율적인 시스템을 원하기 때문에 퍼징 프로세스의 속도를 높이려고 합니다. 퍼저를 개선하기 위해 작업 중인 세 가지 부분이 있습니다.

DeGatchi 33:01

알겠습니다, 흥미롭네요. 공간에 대해 생각할 때 이 도구 대화와는 조금 다른 것이 있습니다. 그리고 당신은 교수이시니 이런 것들에 대해 알고 계실 겁니다.

DeGatchi 33:10

많은 사람들이 최고 수준의 감사자가 되는 방법에 대해 설명하고 있습니다. Spearbit이나 Trail of Bits에서 선도적인 보안 연구를 하는 사람들, 솔로 감사자들 모두 새로운 감사자들의 유입으로 잘 되고 있습니다. 이러한 새로운 플레이어들과 다른 회사들, 그리고 그 기술을 원하는 사람들로부터 어떻게 차별화하려 하시나요? 물론 그런 사람들이 많지는 않지만, 계속 들어오고 있습니다. AI를 가진 더 똑똑한 사람들이 들어올 수도 있습니다. AI 익스플로잇 생성을 하는 사람들도 알고 있는데, 당신도 들어보셨을 겁니다. 새로운 감사자들과 새로운 플레이어들이 이 공간에 들어오면서 이들로부터 어떻게 차별화하시나요?

Andy Zhou 33:55

네, 매우 도전적인 질문입니다. 제 관점에서는 특정 분야, 예를 들어 DeFi 프로토콜 보안 분야의 트렌드를 잘 이해해야 합니다. 다양한 공격 벡터와 새로운 유형의 취약점이 있습니다. 이러한 새로운 것들을 공부하려는 좋은 동기와 기술이 필요합니다. 새로운 것을 빠르게 배우고 새로운 지식을 빠르게 소화하는 방법이 저의 강점입니다. 물론 이 분야에 들어올 똑똑한 사람들이 많겠지만, 저는 박사 과정에서 훈련을 받았기 때문에 새로운 분야에 빠르게 진입하는 방법, 최신 기술을 빠르게 이해하는 방법, 해결할 좋은 문제를 빠르게 찾는 방법, 그리고 다른 분야의 기술을 이 분야에 가져와 문제를 해결하는 방법을 알고 있습니다. 이것이 저를 다른 사람들과 차별화한다고 생각합니다.

DeGatchi 34:56

100%입니다. 사람들의 그룹을 생각할 때 그들 모두가 똑똑하고 유능하다면, 주요 차이는 창의성입니다. 모두가 동등하게 똑똑한 것은 절대 사실이 아니지만, 그렇다면 창의성이 가장 중요한 것입니다. 우리 모두는 다르게 생각하고 다른 관점을 가지고 있습니다. 그래서 창의성이 주요 요소라고 생각합니다. 진정으로 자신을 믿고, 다른 사람들이 믿지 않을 때도 뭔가를 할 수 있다고 믿으며, 다른 사람들은 실제로 그것을 하고 있지 않고, 그것이 가능하다고 믿으며, 어떻게 할 수 있는지 모르더라도, 계속 밀고 나가고 그것을 찾으려는 열정이 있다면, 그것이 정말 주요한 것입니다. 새로운 트렌드를 식별하고 이를 자본화하는 것이 주요한 것입니다. 그것은 매우 자주 일어납니다. 기회를 자본화하기 위한 지식을 준비하고 기회를 잡기 위해 뛰어들어야 합니다.

DeGatchi 35:45

안타깝게도 저는 AI를 모르기 때문에 하지 못했습니다. 모든 것은 올바른 시간에 올바른 장소에 올바른 기술을 가지고 있는 것입니다. AI가 진정한 다음 개척지라고 생각하며, 거기에 역량을 키우지 않는 사람은 뒤처질 것입니다. 개발자 세계에서 도메인 지식과 AI가 있지만, 그것들을 결합하면 두 분야의 지식을 가지고 있기 때문에 섹션화된 지식보다 더 나은 문제 해결책을 생각할 수 있어 엄청난 차이를 만들 수 있습니다. 좋은 예는 수학을 이해하는 것입니다. 수학을 이해하지 못하는 사람과는 다르게 세상을 봅니다. 그리고 금융 분야와 같은 다른 것들과 결합하면 정말 효율적인 알고리즘 거래 시스템을 구축하는 방법을 생각할 수 있고, 경쟁에서 엄청난 우위를 얻을 수 있습니다. AVAX에 수학적 우위로 인해 모든 차익 거래의 90%를 포착한 사람이 있다고 생각합니다. 두 도메인만 있으면 많은 기회를 포착할 수 있습니다. 이것을 배우는 것이 어렵기 때문입니다. 더 많은 도메인을 결합할수록 경쟁이 줄어듭니다.

DeGatchi 36:55

앞으로 자신과 BlockSec을 어디서 보시나요? 경력과 회사 자체에서 어떻게 발전해 나가실 건가요? 그리고 업계는 어디로 가고 있으며, 어디로 가야 한다고 생각하시나요?

Andy Zhou 37:05

업계에 대해서, Web3는 매우 새로운 분야이며 아직 이 새로운 분야의 초기 단계에 있습니다. 제 관점에서는 업계가 매우 빠르게 움직이고 있습니다. 동시에 업계에서 아직 해결되지 않은 많은 보안 문제들이 있습니다. 저희는 자체 솔루션을 사용하여 생태계가 빠르게, 하지만 안전하게 발전할 수 있도록 돕고자 합니다. 저희는 제품과 프로토콜을 보유하여 자산을 보호하고 있습니다. 이것이 한 가지입니다. 또한 앞으로 이 분야에 여러 다른 Web3 사용자들이 있을 것이라고 봅니다. 사용자들도 보안 보호가 필요합니다. 현재 Web3 제품을 사용하는 것이 그들에게는 다소 복잡하기 때문입니다. 개인 키와 자산을 보호하기 위한 매우 좋은 방법이 필요합니다. 대부분의 사용자들은 ERC20 토큰의 승인 과정을 이해하지 못하기 때문입니다. 그들은 단지 악성 컨트랙트에서 모든 토큰을 승인해버립니다.

Andy Zhou 38:10

따라서 현재 업계에서 아직 해결되지 않은 DeFi 사용자를 위한 매우 좋은 보호 시스템이 필요합니다. 물론 이를 수행하는 회사들이 있지만, 사용자를 보호하는 더 나은 방법들이 있습니다.

DeGatchi 38:27

사용자 보호에 대해 말씀하실 때, 퍼저 위에 지갑과 같은 것으로 확장할 수 있다고 생각합니다. 두 가지 또는 세 가지 다른 방법이 있습니다. 보류 중인 트랜잭션처럼, 100% 확실하지 않습니다. 따라서 좀 더 세부적으로 접근해야 합니다. 제로데이 자체를 찾는 것이 될 수 있습니다. 하지만 그것이 선택 사항이 아니라면, 지갑 자체에 분석을 내장하는 것이 좋을 수 있습니다. 빠른 분석이라도 말이죠. 토큰 등을 처리할 것이지만, 트랜잭션을 수행하기 전에 일부 분석을 수행할 수 있다면, 누군가 이전에 이런 것을 해봤다고 생각합니다.

Andy Zhou 39:01

트랜잭션을 시뮬레이션하고 사용자에게 서명 시 트랜잭션의 결과를 알려주는 회사들이 있습니다.

DeGatchi 39:10

정말 스마트하다고 생각하며, 보안을 수행하는 회사나 무엇이든 쉽게 확장할 수 있는 방법이라고 생각합니다. 직접 그들에게 제공하는 것이 정말 좋은 방법입니다. fire 같은 것이었던 것 같은데 기억이 안 납니다. 하지만 네, 시뮬레이션들이 정말 좋습니다. 하지만 어느 정도 결함이 있다고 생각합니다. 예를 들어, LP에 트랜잭션을 하는 경우를 생각해보세요. 사람들은 커스텀 바이트코드를 사용하고 조건부 기능을 수행할 것입니다. 100가지 종류의 LP가 다른 것으로 전환한다고 해봅시다. 돈이나 그것이 무엇이든 있을 때의 초기 시뮬레이션은 모든 것, 모든 단일 함수 경로를 실제로 테스트하지 않으면 나타나지 않을 것입니다. 그것이 생각하고 있던 것입니다. 하지만 또한 어려운 문제들이 많이 있습니다. 독을 골라야 합니다. 사이버보안과 AI가 결합하는 미래에 무엇이 기대되시나요? 분명히 훨씬 더 많이 사용하실 것 같습니다. 그 방향으로 어떻게 나아가실 계획이신가요?

Andy Zhou 40:06

네, 계획에 대해서는, 이러한 새로운 기술들을 결합하여 커뮤니티와 사용자들을 더 잘 보호하고 싶습니다. AI와 Web3 보안 분야를 결합하면 더 나은 제품이 만들어질 것이기 때문에 AI에 계속 투자할 것입니다. 더 나은 공격 탐지 시스템, 더 나은 퍼징 시스템, 그리고 사용자 자산을 보호하기 위한 더 나은 솔루션을 향해 더욱 발전시키고 싶습니다. 이것이 현재 BlockSec 내부의 계획입니다.

DeGatchi 40:36

흥미롭습니다. 네. 분명히 훨씬 더 좋아지고 훨씬 더 많은 일을 할 수 있을 것이라 확신합니다. 이미 이 모든 해킹을 방지하기 위해 많은 일을 하고 계십니다. 하지만 더 많은 혁신을 위한 여지가 아직 많이 있다고 생각하며, 이제 막 시작되고 있습니다. 사람들이 이에 대해 알게 되고 더 많은 해킹을 방지하게 되면, 훨씬 더 두드러지게 될 것이고 훨씬 더 많은 경쟁이 생길 것입니다. 해킹을 방지하고 실제로 생태계를 확장하기 위한 건전한 경쟁이 될 것입니다. 궁극적인 목표는 CeFi를 대체하는 것이기 때문입니다. 은행 계좌에서 돈을 꺼내는 데 4개월을 기다리고 싶지 않습니다. 정말 말도 안 되는 일이죠. 정보 분야의 노력은 소매 및 기존 프로토콜에게 실제로 저평가되어 있습니다. 해킹을 당하기 전까지는 진정으로 깨닫지 못합니다. 실제로 몇몇 사람들이 이를 계기로 이 분야에 뛰어들었다고 생각합니다. 하지만 여러분이 구축하고 있는 것에 정말 흥분됩니다. 사이버와 크립토의 미래에 대해 정말 낙관적입니다. Andy, 와주셔서 정말 감사합니다. 첫 번째 팟캐스트에 제가 초대할 수 있어서 정말 기쁩니다. 네, 시간 내주셔서 정말 감사합니다. 정말 좋은 대화였습니다.

Andy Zhou 41:38

네, 이 자리에 함께하게 되어 영광입니다. 감사합니다, DeGatchi.