작성자: Sissice
배경
2024년 4월 24일 2024년 4월 24일, Slow Fog 보안팀은 BSC 체인에서 YIEDL 프로젝트에 대한 공격을 보고했으며, 이로 인해 공격자들은 약 30만 달러의 수익을 얻었습니다. 슬로우 포그 보안팀은 이 공격을 분석하고 그 결과를 다음과 같이 공유했습니다.
(https://twitter.com/SlowMist_Team/status/1782962346039898473)
관련 정보
공격자 주소:
0x322696471792440499b1979e0a440491e870667a
공격받은 컨트랙트의 주소:
0x4edda16ab4f4cc46b160abc42763ba63885862a4
공격받은 트랜잭션의 일부:
0x49ca5e188c538b4f2efb45552f13309cc0dd1f3592eee54decfc9da54620c2ec
0x3629ad588ac120163792e92b6c43bd4bdc5bf35cac66eb7f3a0267df93abc849
0x0a89b8670c40b4067b9522a5933c3bf8c44c968103aa642b04c65d49ad9e6457
0x5e468cba495e5f6165418fb9d87d824309c54261055425f33f588dd3b3abbcea
0x8710034dadecfc8c26f651c612f613fffdece6e2f9957b9ec8ab843218168c1d
0x9da398ed274c8cfa774b36003fa8c930d3430d0fc5889b5008830fd6463f68a9
0x2e3d4332f66a334e0170187011ed673dc222f95bf4443b618e08f8052437ef7a
0x5a15fdc57c35f2305aaa0bb95b109ad412b17406d737d137190fe5867393339d
0x8ef3765665cd849cdf9132ab37caf6aa0f891e1f7d9f418f86a6ab6ea38b6f5b
0xa9fa04b033afbed2218679aea92e9429a5f7839d0b4c65358ebf9ba20efcd021
Attacking the Core
이번 공격의 핵심은 사용자가 리딤 함수 호출을 처리할 때 입력한 외부 파라미터를 적절히 검증하지 못한 컨트랙트를 악용한 것이었습니다. 이 매개변수는 자산 교환을 제어하는 중요한 데이터로, 일반적으로 특정 거래 지침이나 라우팅 정보를 포함합니다. 공격자는 이 외부 파라미터를 악의적으로 구성하여 무단 자산 전송을 가능하게 했습니다.
거래 분석
공격자는 상환 함수를 여러 번 호출하여 0 수량의 상환을 요청했는데, 0 수량은 일반적으로 실제 상환이 발생하지 않기 때문에 그 자체로 무해한 것처럼 보입니다. 0의 상환은 일반적으로 실제 자금 이동을 유발하지 않기 때문에 그 자체로는 무해해 보일 수 있습니다.
하지만 상환 함수를 자세히 살펴보면 컨트랙트에서 허용하는 자산 목록을 반복하고 현재 자산이 사용자가 받고자 하는 자산이 아닌 경우 들어오는 dataList 파라미터를 파싱하고 1inch 라우터에서 해당 함수를 외부로 호출하여 자산 상환을 수행하는 것을 볼 수 있습니다.
그리고 들어오는 dataList는 확인 및 검증되지 않기 때문에 공격에 노출되지 않습니다. 여기서 전달되는 데이터 리스트는 확인되거나 검증되지 않기 때문에 공격자는 악의적인 값을 구성하여 1inch 라우터 컨트랙트의 unoswapTo 함수를 실행하여 임의적이고 통제된 토큰 교환 작업을 수행할 수 있습니다.
그 결과, Yiedl BULL 컨트랙트에 대한 WBNB-ADA 토큰이 공격자의 주소로 BNB로 변환되었습니다.
이러한 방식으로 공격자는 실제로 주식을 소유하지 않고도 Yiedl BULL 컨트랙트에서 공격자의 주소로 WBNB-ADA 토큰의 상환을 트리거할 수 있습니다. 이러한 방식으로 공격자는 실제로 상환 주식을 소유하지 않고도 데이터리스트 매개변수로 제어되는 토큰 교환 작업을 트리거하고 자신의 자산을 고갈시키지 않고 계약된 자금을 여러 번 이동하여 이익을 얻을 수 있습니다.
요약
이 공격의 핵심은 함수가 사용자가 입력한 dataList 파라미터를 적절하게 검증하지 못하여 공격자가 악의적인 외부 데이터를 구성하고 1inch를 사용하여 계약을 탈취할 수 있다는 것입니다. 공격자는 악의적인 외부 데이터 목록을 구성하고 1inch를 사용하여 컨트랙트에서 토큰을 훔칠 수 있었습니다. 슬로우포그 보안팀은 프로젝트 소유자가 개발 과정에서, 특히 컨트랙트의 자금 운영과 관련하여 엄격한 매개변수 검증 메커니즘을 구현하여 모든 외부 호출이 예상되는 행동 규범을 준수하는지 확인하고, 유사한 사고가 다시 발생하지 않도록 컨트랙트 로직에 대한 철저한 보안 감사를 수행할 것을 권장합니다.