2024년 2월 28일 - Beosin Trace 펀딩 분석 플랫폼에 따르면, ETH 체인의 SenecaUSD 프로젝트 계약에 취약점이 있으며, 해커는 신중하게 구성된 calldata 파라미터를 사용하여 transferfrom을 호출하여 토큰을 전송하는 데 사용했습니다. 해커는 신중하게 구성된 calldata 매개 변수를 사용하여 transferfrom을 호출하여 프로젝트 계약에 승인된 토큰을 자신의 주소로 전송한 후 최종적으로 ETH로 교환했습니다. 해커는 현재 자금의 80%를 반환했으며, 나머지 20%는 화이트햇 보상으로 사용했습니다. 다음은 이 공격에 대한 Beosin의 분석입니다.
취약점 분석
세네카 프로젝트 계약에 있는 파라미터를 전달하여 다른 함수 로직을 수행하도록 선택하는 수행 오퍼레이션 함수가 있습니다.
사용자가 action을 다음과 같이 지정하면 30으로 지정하면 함수는 _call 함수를 호출하고 사용자가 지정한 호출 매개변수를 전달하도록 선택합니다.
_call 함수는 호출 주소의 블랙리스트만 확인한 다음 호출자나 호출 매개변수에 대한 제한적인 확인 없이 사용자가 지정한 주소에서 직접 함수를 호출합니다. 호출자나 호출 인수를 제한적으로 확인하지 않고 호출합니다.
발신자가 여기에 불법적인 통화 데이터를 구성하면 공격으로 이어질 수 있습니다.
공격 흐름
이 사건의 공격자는 동일한 기법을 여러 번 사용하여 공격했습니다. 다음은 0x23fcf9d4517f7cc39815b09b0a80c023ab2c8196c826c93b4100f2e26b701286 트랜잭션의 예시입니다. 이 공격자가 어떻게 통화 데이터를 구성하고 공격을 실행했는지 살펴보겠습니다.
1. 공격자는 수행 오퍼레이션 함수를 직접 호출하고 다음 파라미터를 구성했으며, 여기서 actions는 위에서 30으로 전달되어 _call 함수를 호출하게 됩니다.
2. Datas 데이터는 다음과 같습니다.
0x000000000000000000000000b05cabcd99cf9a73b19805edefc5f67ca5d1895e
23b872dd00000000000000000000000000009cbf099ff424979439dfba03f00b5961
784c06ce00000000000000000000000094641c01a4937f2c8ef930580cf39614
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.
두 번째 callData는 a0, 100(0x64) 바이트에 있으며, 이는
. 왼쪽;">콜데이터는:
입니다.
3. 쿼리 함수 선택기, 에 따르면 callData 데이터를 보면 callData가 transferFrom 함수를 지정하고 있음을 알 수 있습니다. 그러면 이 호출은 다음과 같이 파싱할 수 있습니다.
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.transferFrom( 0x9cbf099ff424979439dfba03f00b5961784c06ce,0x94641c01a4937f2c8ef930580cf396142a2942dc,1385238431763437306795).
4. 이전 트랜잭션에서 이후. 0x9cbf099ff424979439dfba03f00b5961784c06ce는 0x65c210c59b43eb68112b7a4f75c8393c36491f06 주소에 최대 값을 승인했으므로 여기서는 공격자가 직접 0x9cbf099ff424979439dfba03f00b5961784c06ce의 슈퍼 1385 PT-rsETH-27JUN2024 (0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e) 토큰의 값을 자신의 주소로 직접 전송합니다. >.
5. 공격자는 PT-rsETH-. 27JUN2024 토큰을 ETH로 전송했습니다.
자금 추적
공격 후, Seneca. 배포자는 공격자에게 자금을 반환하라고 외치며 화이트햇 보상으로 자금의 20%를 가져갈 수 있다고 말했습니다.
베오신 추적 자금 추적 플랫폼에 따르면, 보도 시점을 기준으로 공격자는 탈취한 1,900여 개의 이더리움 중 1,537개(80%)를 배포자의 지정된 주소로 반환했으며, 나머지 370개(20%)는 공격자의 주소에 흩어져 보관하고 있는 것으로 확인되었습니다.