출처:Beosin
2024년 1월 17일, Beosin의 보안 위험 모니터링, 경보 및 차단 플랫폼인 이글아이의 모니터링에 따르면, Socket 프로토콜이 공격자의 콜 인젝션 공격을 받아 다수의 인증된 사용자의 자금이 탈취당했습니다. 공격자는 현재 탈취한 자금을 공격자의 주소에 저장된 이더리움으로 교환하고 있습니다.
공격이 발생한 후 소켓은 공식적으로 공격을 받았다는 사실을 확인하고 영향을 받은 컨트랙트를 처음으로 중단했습니다.

그러는 한편, 메타마스크는 메타마스크 브리지 사용자들은 소켓의 영향을 받지 않았다고 X 플랫폼에 게시했습니다. 메타마스크는 이러한 공격으로부터 보호하도록 설계된 고유한 아키텍처로 크로스체인 브리지 컨트랙트를 설계했다고 밝혔습니다.

이번 공격과 관련하여 Beosin 보안팀은 취약점을 분석했습니다.
취약점 분석
이 사건의 주요 원인은 소켓 컨트랙트의 formAction 함수에 대한 안전하지 않은 호출입니다. 아래 그림에서 볼 수 있듯이 이 함수의 기본 기능은 사용자의 이더리움과 이더리움을 변환하는 것입니다. 호출자가 토큰을 이더리움으로 선택하면 컨트랙트의 토큰(WETH) 잔액이 조회되고, 이후 호출을 통해 토큰을 호출합니다(정상적인 논리에서는 여기서 이더리움 입금 함수를 호출해야 합니다). 사용자가 지정한 이더리움 금액을 이체하고, 다음으로 컨트랙트의 새로운 토큰(WETH) 잔액을 조회하여 사용자가 지정한 이더리움으로 이체한 금액과 같으면 호출자가 지정한 주소로 토큰을 전달하여 이체합니다. 호출자가 fromToken을 ETH가 아닌 다른 토큰으로 선택하면 위와 같은 방식으로 호출자의 WETH를 ETH로 변환하여(일반적으로 호출은 WETH의 출금 함수에 대한 호출이어야 함) 사용자가 지정한 주소로 전송하는 기능을 수행합니다.
이 함수는 WETH 주소를 전달하는 것 외에는 fromToken과 toToken에 대한 검사 제한이 없지만, 다른 ERC20 주소는 잔액 검사에 실패하므로 이 두 매개변수의 위조가 불가능하고 토큰 주소를 WETH로 간접적으로 제한합니다.

토큰 주소에 대한 제한이 있는 반면, 함수에 대한 문제도 있는데, 즉 금액에 대한 제한이 없고 호출자가 전달한 금액이 0이면 함수의 검사 조건이 영원히 통과되어 호출할 필요가 없다는 것입니다. WETH의 입금 및 출금 함수는 호출할 필요가 없습니다. 이 시점에서 공격 목적을 달성하기 위해 비정상적인 데이터를 호출에 주입할 수 있습니다.
공격 흐름
함수 문제를 이해했으면 공격자가 어떻게 공격을 실행할 수 있는지 살펴보겠습니다.
1. 공격자는 먼저 공격 컨트랙트를 생성합니다.
2. 그 후 공격자는 여러 주소의 WETH 잔액을 여러 번 조회하고 해당 주소가 소켓: 게이트웨이 컨트랙트에 대해 가지고 있는 권한의 수를 조회한 다음 마지막으로 소켓을 호출합니다. 게이트웨이 컨트랙트를 호출합니다.
3. 여기서 formAction 함수가 호출될 때 전달된 swapExtraData 매개변수가 0x23b872dd인 것을 볼 수 있습니다. ... 이 데이터는 전송함수의 시그니처로, 토큰의 전송함수가 여기서 직접 호출된다는 것을 의미합니다.

4. 공격자는 fromToken에 WETH로 전달하고 AMOUNT는 위에서 언급한 0과 정확히 일치하는 것을 알 수 있으며, 컨트랙트는 공격자의 WETH를 컨트랙트로 전송하지만 0을 전송하고 호출 호출에서 호출에서 공격자는 16개의 WETH를 전송한 공격자에게 사용자 주소를 지정합니다.
5. 공격자는 수많은 작업을 통해 수많은 사용자로부터 자신에게 WETH를 전송합니다.
6. 공격자는 동일한 방법으로 컨트랙트에 승인된 USDT를 자신에게 전송합니다.

7. WBTC, DAI, MATIC 토큰도 포함됩니다.


< img src="https://img.jinse.cn/7169267_image3.png">
보도 시점을 기준으로 약 330만 달러의 탈취 자금이 공격자들에 의해 일부 이더리움으로 교환되었으며, 해커의 주소는 이동하지 않았으며, Beosin Trace는 탈취된 자금을 계속 모니터링할 예정입니다.
현재 상호운용성 프로토콜인 소켓은 X 플랫폼에 대한 보안 사고 업데이트를 발표했습니다: 소켓은 현재 운영을 재개했고, 영향을 받은 계약은 중단되었으며, 피해는 완전히 억제되었습니다! . 번지 및 대부분의 파트너 프런트엔드의 브리징이 복구되었습니다. 자세한 사고 분석과 다음 단계는 곧 공개될 예정입니다.
소켓 주의 사항 :"피싱을 시도하는 회신에 포함된 가짜 소켓 계정을 주의하세요. 어떤 조치를 취하기 전에 반드시 해당 계정을 다시 확인하세요."

이 사건은 보안을 가볍게 여겨서는 안 된다는 것을 다시 한 번 일깨워줍니다.