해커 사건이 빈발하고 있으니, 이 Crypto 방어 가이드를 받아주세요
원문 제목:《The State of Crypto Security》
저자:Kofi Kufuor
편집:Katie 辜,Odaily 星球日报
해커는 올해 암호화 애플리케이션에서 20억 달러 이상을 훔쳤습니다. 국경일 기간 동안, 업계는 TokenPocket의 플래시 스왑 서비스 제공업체 해킹 사건 (손실 2100만 달러 초과)과 BNB 체인 크로스 체인 브릿지 BSC Token Hub 공격 (손실 약 5.66억 달러)의 암호화 도난 사건을 겪었습니다.
암호화 생태계가 발전함에 따라, 보안 공격과 방어의 전쟁은 더욱 치열해질 것입니다. 따라서 본문에서는:
암호화 보안 사건의 분류법을 제안합니다;
지금까지 해커에게 가장 많은 수익을 안긴 공격 수단을 나열합니다;
해커 공격을 방지하기 위해 현재 사용되는 도구의 장단점을 검토합니다;
암호화 보안의 미래에 대해 논의합니다.
1. 해커 유형
암호화 애플리케이션 생태계는 상호 운용 프로토콜로 구성되어 있으며, 스마트 계약에 의해 지원되고, 체인과 인터넷의 기본 인프라에 의존합니다. 이 스택의 각 레이어는 고유한 취약점을 가지고 있습니다. 우리는 이용된 스택 레이어와 사용된 방법에 따라 암호화 해커를 분류할 수 있습니다.
공격 인프라
인프라 레이어에 대한 공격은 암호화 애플리케이션의 기본 시스템의 취약점을 이용합니다: 합의를 달성하기 위해 사용하는 블록체인, 프론트 엔드에 사용하는 인터넷 서비스 및 개인 키 관리를 위한 도구.
공격 스마트 계약 언어
이 레이어의 해커는 스마트 계약 언어(예: Solidity)의 취약점과 결함을 이용합니다. 예를 들어, 재진입성(reentrancy) 및 위임 호출(delegatecall)의 위험은 보안 규정을 준수함으로써 회피할 수 있습니다.
공격 프로토콜 논리
이러한 공격은 단일 애플리케이션 비즈니스 논리의 오류를 이용합니다. 해커가 오류를 발견하면, 그 오류를 이용하여 애플리케이션 개발자가 예상하지 못한 행동을 유발할 수 있습니다.
예를 들어, 새로운 DEX가 사용자가 거래에서 얼마나 많은 돈을 얻는지를 결정하는 수학 방정식에서 오류가 발생하면, 이 오류를 이용하여 사용자가 거래에서 얻을 수 있는 것보다 더 많은 돈을 얻을 수 있습니다.
프로토콜 논리 레벨 공격은 애플리케이션 매개변수를 제어하는 거버넌스 시스템을 이용할 수도 있습니다.
공격 생태계
많은 유명한 암호화 해커는 여러 애플리케이션 간의 상호 작용을 이용했습니다. 가장 일반적인 것은 해커가 하나의 프로토콜에서 논리적 오류를 이용하여 다른 프로토콜에서 빌린 자금을 사용하여 공격 규모를 확대하는 것입니다.
일반적으로 생태계 공격에 사용되는 자금은 플래시 론(flashloan)을 통해 빌려집니다. 플래시 론을 실행할 때, Aave 및 dYdX와 같은 프로토콜의 유동성 풀에서 원하는 금액을 빌릴 수 있습니다.
2. 데이터 분석
나는 2020년 이후 100건의 대규모 암호화폐 해킹 공격 데이터를 수집했으며, 도난당한 자금 총액은 50억 달러입니다.
생태계는 가장 빈번하게 공격을 받았습니다. 이들은 41%를 차지합니다.
프로토콜 논리의 결함은 가장 많은 금전적 손실을 초래했습니다.
가장 큰 세 가지 공격: Ronin 크로스 체인 브릿지 공격(6.24억 달러), Poly Network 공격(6.11억 달러) 및 BSC 크로스 체인 브릿지 공격(5.7억 달러).
상위 세 가지 공격을 제외하면, 인프라에 대한 도난 사건이 손실 자금이 가장 많은 범주입니다.
3. 해커는 어떻게 공격하는가?
인프라
61%의 인프라 취약점에서 개인 키는 알려지지 않은 방법으로 유출되었습니다. 해커는 피싱 이메일 및 가짜 채용 광고와 같은 사회적 공격을 통해 이러한 개인 키를 얻을 수 있습니다.
스마트 계약 언어
재진입성 공격은 스마트 계약 언어 수준에서 가장 인기 있는 공격 유형입니다.
재진입 공격에서, 취약한 스마트 계약의 함수 호출은 악의적인 계약의 함수를 호출합니다. 또는, 취약한 계약이 악의적인 계약에 토큰을 보낼 때, 악의적인 계약의 함수가 트리거될 수 있습니다. 그런 다음, 계약이 잔액을 업데이트하기 전에 악의적인 함수가 재귀 루프에서 취약한 함수를 호출합니다.
예를 들어, Siren Protocol 해킹 공격에서, 담보 자산 토큰을 인출하는 함수는 재진입이 용이하여 반복적으로 호출되었습니다(악의적인 계약이 토큰을 받을 때마다), 모든 담보가 소진될 때까지.
프로토콜 논리
프로토콜 레이어의 대부분의 취약점은 특정 애플리케이션에 고유합니다. 각 애플리케이션은 고유한 논리를 가지고 있기 때문입니다(순수 포크가 아닌 한).
접근 제어 오류는 샘플 그룹에서 가장 일반적으로 반복되는 문제입니다. 예를 들어, Poly Network 해킹 사건에서 "EthCrossChainManager" 계약에는 누구나 호출할 수 있는 기능이 있어 크로스 체인 거래를 수행할 수 있습니다.
주의: 여러 프로토콜이 동일한 기술을 사용하여 해킹당하는 경우가 많습니다. 이는 팀이 취약한 코드베이스를 포크했기 때문입니다.
예를 들어, CREAM, Hundred Finance 및 Voltage Finance와 같은 많은 Compound 포크가 재진입성 공격의 희생자가 되었습니다. 이는 Compound의 코드가 상호작용의 효과를 확인하지 않고 상호작용을 허용했기 때문입니다. 이는 Compound에게는 효과적이었지만, 포크를 만든 팀은 그렇게 하지 않았습니다.
생태계
98%의 생태계 공격에서 플래시 론이 사용되었습니다.
플래시 론 공격은 일반적으로 다음 공식을 따릅니다: 대규모 거래를 위해 대출을 사용하고, 대출 프로토콜에서 가격 피드로 사용되는 AMM에서 토큰 가격을 끌어올립니다. 그런 다음, 같은 거래에서 부풀려진 토큰을 담보로 사용하여 실제 가치보다 훨씬 높은 대출을 받습니다.
4. 해커는 어디에서 공격하는가?
도난당한 계약이나 지갑이 위치한 체인에 따라 데이터 세트를 분석합니다. 이더리움의 해커 수가 가장 많으며, 샘플 그룹의 45%를 차지합니다. 바이낸스 스마트 체인(BSC)은 20%의 점유율로 두 번째입니다.
이런 현상의 원인은 여러 가지가 있습니다:
이더리움과 BSC는 가장 높은 TVL(애플리케이션에 예치된 자금)을 보유하고 있어, 이 체인에서 해커에게 보상의 규모가 더 큽니다.
대부분의 암호화폐 개발자는 Solidity를 알고 있으며, 이는 이더리움과 BSC의 스마트 계약 언어이며, 이 언어를 지원하는 더 복잡한 도구가 있습니다.
이더리움에서 도난당한 자금이 가장 많습니다(20억 달러). BSC는 두 번째(8.78억 달러)입니다.
크로스 체인 브릿지나 멀티 체인 애플리케이션(예: 멀티 체인 거래 또는 멀티 체인 대출)이 데이터 세트에 큰 영향을 미쳤습니다. 이러한 해킹 사건은 총 수의 10%에 불과하지만, 25.2억 달러의 자금을 도난당했습니다.
5. 해커 공격을 방지하는 방법은?
위협 스택의 각 레이어에 대해, 우리는 잠재적인 공격 경로를 조기에 식별하고 공격을 방지하기 위해 몇 가지 도구를 사용할 수 있습니다.
인프라
대부분의 대규모 인프라 해킹 공격은 해커가 개인 키와 같은 민감한 정보를 얻는 것과 관련이 있습니다. 좋은 운영 보안(OPSEC) 단계를 따르고 정기적인 위협 모델링을 수행하면 이러한 상황이 발생할 가능성을 줄일 수 있습니다. 좋은 OPSEC 프로세스를 가진 개발 팀은:
민감한 데이터(개인 키, 직원 정보, API 키 등)를 식별합니다;
잠재적인 위협(사회적 공격, 기술적 이용, 내부 위협 등)을 식별합니다;
기존 보안 방어의 취약점과 약점을 찾습니다;
각 취약점의 위협 수준을 결정합니다;
위협을 완화하기 위한 계획을 수립하고 실행합니다.
스마트 계약 언어 및 프로토콜 논리
- 퍼징 테스트 도구
퍼징 테스트 도구인 Echidna는 스마트 계약이 대량의 무작위로 생성된 거래에 어떻게 반응하는지를 테스트합니다. 이는 특정 입력이 예기치 않은 결과를 초래하는 엣지 케이스를 감지하는 좋은 방법입니다.
- 정적 분석
정적 분석 도구인 Slither와 Mythril은 스마트 계약의 취약점을 자동으로 감지합니다. 이러한 도구는 일반적인 취약점을 빠르게 찾아내는 데 매우 유용하지만, 미리 정의된 문제 집합만 포착할 수 있습니다. 스마트 계약에 도구 규격에 없는 문제가 있는 경우 발견되지 않습니다.
- 형식 검증
형식 검증 도구인 Certora는 스마트 계약을 개발자가 작성한 규격과 비교합니다. 이 규격은 코드가 무엇을 해야 하는지와 필요한 속성을 자세히 설명합니다. 예를 들어, 개발자가 대출 애플리케이션을 구축할 때, 각 대출은 충분한 담보가 지원되어야 한다고 지정합니다. 스마트 계약의 어떤 가능한 행동이 규격에 부합하지 않으면, 형식 검증자는 그 위반을 식별합니다.
형식 검증의 단점은 테스트가 규격과 동일한 기준을 유지한다는 것입니다. 제공된 규격이 특정 행동을 명시하지 않거나 너무 느슨하면, 검증 과정에서 모든 오류를 포착할 수 없습니다.
- 감사 및 동료 검토
감사 또는 동료 검토 중에, 신뢰할 수 있는 개발자 그룹이 프로젝트 코드를 테스트하고 검토합니다. 감사자는 발견한 취약점과 이를 수정하는 방법에 대한 권장 사항을 자세히 설명하는 보고서를 작성합니다.
전문 제3자가 계약을 검토하는 것은 원래 팀이 놓친 취약점을 발견하는 좋은 방법입니다. 그러나 감사자도 사람이며, 모든 취약점을 포착할 수는 없습니다. 또한 감사자를 신뢰해야 하며, 감사자가 문제를 발견하면 이를 알려줄 것이고, 스스로 이를 이용하지는 않을 것입니다.
- 생태계 공격
생태계 공격은 가장 일반적이고 파괴적인 유형이지만, 기존 도구 중에는 이러한 공격을 방지하는 데 적합한 도구가 많지 않습니다. 자동 보안 도구는 매번 하나의 계약에서 오류를 찾는 데 집중합니다. 감사는 일반적으로 생태계 내 여러 프로토콜 간의 상호작용을 어떻게 이용할 수 있는지 해결하지 못합니다.
Forta 및 tenerly Alerts와 같은 모니터링 도구는 조합 공격이 발생할 때 조기 경고를 제공하여 팀이 조치를 취할 수 있도록 합니다. 그러나 플래시 론 공격에서는 자금이 일반적으로 단일 거래에서 도난당하므로, 어떤 경고도 너무 늦어져서 큰 손실을 방지할 수 없습니다.
위협 감지 모델은 메모리 풀에서 악의적인 거래를 발견하는 데 사용할 수 있습니다. 거래는 노드가 처리하기 전에 메모리 풀에 존재하지만, 해커는 flashbot과 같은 서비스를 사용하여 거래를 직접 채굴자에게 보내 이러한 검사를 우회할 수 있습니다.
6. 암호화 보안의 미래
나는 암호화 보안의 미래에 대해 두 가지 예측을 가지고 있습니다:
- 나는 최고의 팀이 보안을 사건 기반의 관행(테스트 -> 동료 검토 -> 감사)으로 보는 것에서 연속적인 프로세스로 전환할 것이라고 믿습니다. 그들은:
메인 코드베이스의 모든 신규 코드에 대해 정적 분석 및 퍼징 테스트를 수행합니다;
모든 주요 업그레이드에 대해 형식 검증을 수행합니다;
응답 동작이 있는 모니터링 및 경고 시스템(전체 애플리케이션 또는 영향을 받는 특정 모듈을 일시 중지)을 구축합니다;
일부 팀원이 보안 자동화 및 공격 대응 계획을 수립하고 유지하도록 합니다.
보안 작업은 감사 후에 끝나서는 안 됩니다. 많은 경우, 예를 들어 Nomad 크로스 체인 브릿지 해킹 공격에서 그 취약점은 감사 후 업그레이드 중에 도입된 오류에 기반합니다.
- 암호화 보안 커뮤니티가 해킹 공격에 대응하는 과정은 더 조직적이고 간소화될 것입니다. 해킹 공격이 발생할 때마다 기여자들은 암호화 보안 그룹 채팅에 몰려들어 도움을 제공하고자 하지만, 조직이 부족하면 중요한 세부 사항이 혼란 속에서 잃어버릴 수 있습니다. 나는 미래에 이러한 그룹 채팅이 더 체계적인 조직 형태로 전환될 것이라고 생각합니다:
체인 모니터링 및 소셜 미디어 모니터링 도구를 사용하여 능동적 공격을 신속하게 감지합니다;
보안 정보 및 사건 관리 도구를 사용하여 작업을 조정합니다;
독립적인 작업 흐름을 채택하여 블랙 해커와 화이트 해커의 작업, 데이터 분석, 근본 원인 및 기타 작업을 서로 다른 채널을 통해 소통합니다.