본문 바로가기
Science

탈중앙 금융 애플리케이션 스시스왑 코드의 인증 버그

by 애일리언 2023. 4. 10.

I. 탈중앙 금융 애플리케이션 스시스왑 코드의 인증 버그

인증 버그는 시스템이나 애플리케이션에 대한 무단 액세스를 허용할 수 있는 보안 취약점의 일종입니다. 디파이 애플리케이션 스시스왑의 경우, 라우터프로세서2 스마트 컨트랙트 코드에서 인증 버그가 발견되어 공격자가 코드의 취약점을 악용하여 사용자 자금을 탈취할 수 있었습니다. 이 버그는 사용자의 신원을 확인하고 플랫폼에서 수행할 수 있는 작업을 결정하는 데 사용되는 인증 프로세스와 관련된 것이었습니다. 이 버그를 통해 공격자는 인증 프로세스를 우회하여 사용자 자금에 무단으로 액세스할 수 있었으며, 이로 인해 영향을 받은 사용자는 상당한 금전적 손실을 입게 되었습니다.

II. 스시스왑의 배경

스시스왑은 이더리움 블록체인을 기반으로 구축된 탈중앙화 암호화폐 거래소입니다. 스시스왑은 자동화된 시장 조성 원칙에 따라 운영되며, 중개자 없이도 사용자가 서로 암호화폐를 거래할 수 있습니다. 스시스왑의 유동성은 유동성 풀이라고 하는 스마트 컨트랙트에 암호화폐 자산을 예치하는 유동성 공급자가 제공합니다. 트레이더는 이 풀을 사용하여 다른 암호화폐로 스왑하고 거래소에서 발생하는 거래 수수료의 일부를 받을 수 있습니다.

스시스왑의 기능은 전적으로 이더리움 블록체인에서 실행되는 스마트 콘트랙트 코드에 달려 있습니다. 스마트 콘트랙트는 거래를 실행하고 계약의 규칙을 자동으로 시행하도록 설계된 자체 실행 컴퓨터 프로그램입니다. 스마트 콘트랙트는 "코드가 곧 법"이라는 원칙에 따라 작동하며, 이는 코드가 콘트랙트의 행동을 결정하고 일단 배포된 후에는 변경할 수 없다는 것을 의미합니다.

스시스왑의 스마트 콘트랙트 코드는 유동성 풀을 생성하고 관리하는 방법, 거래가 실행되는 방법, 유동성 공급자에게 보상을 분배하는 방법을 결정하기 때문에 스시스왑의 기능에 매우 중요합니다. 코드에 버그나 취약점이 있으면 자금 손실이나 가격 조작과 같은 예기치 못한 치명적인 결과를 초래할 수 있습니다. 따라서 코드의 신뢰성과 보안을 보장하기 위해 코드를 철저히 검토하고 테스트하는 것이 중요합니다.

III. 라우터프로세서2 스마트 컨트랙트 코드의 인증 버그

스시스왑의 라우터프로세서2 스마트 컨트랙트 코드에서 발견된 인증 버그로 인해 공격자는 사용자로부터 자금을 탈취할 수 있었습니다. 이 버그는 권한이 없는 사용자가 유동성 풀에 액세스하고 조작할 수 있는 권한 부여 프로세스의 결함으로 인해 발생했습니다. 특히, 이 버그를 통해 공격자는 가짜 유동성 풀을 생성하고 이를 조작하여 풀과 상호작용하는 다른 사용자로부터 자금을 훔칠 수 있었습니다.

이 버그는 승인된 사용자만 유동성 풀과 상호작용할 수 있도록 하는 확인 절차가 누락된 코드의 부주의로 인해 발생했습니다. 공격자는 이 취약점을 악용하여 풀에 접근할 수 있었고, 이로 인해 사용자의 자금을 도난당할 수 있었습니다.

이러한 기본적인 버그가 코드에 존재한 이유는 몇 가지가 있을 수 있습니다. 한 가지 가능한 이유는 개발팀이 코드 검토 과정에서 버그를 간과했을 수 있습니다. 개발자가 마감일을 맞추기 위해 압박을 받거나 철저한 코드 검토를 위한 리소스가 부족할 때 이런 일이 발생할 수 있습니다.

또 다른 가능한 이유는 코드 변경의 결과로 개발 프로세스 중에 버그가 도입되었을 수 있기 때문입니다. 코드는 복잡하고 상호 작용하는 여러 구성 요소가 포함되어 있기 때문에 코드의 한 부분을 변경하면 코드의 다른 부분에 의도하지 않은 결과가 발생하여 새로운 버그가 발생할 수 있습니다.

전반적으로 라우터프로세서2 스마트 컨트랙트 코드에 권한 부여 버그가 존재한다는 것은 스마트 컨트랙트 기반 시스템의 안정성과 보안을 보장하는 데 있어 철저한 코드 검토와 테스트가 중요하다는 것을 강조합니다.

IV. 스시스왑에 대한 해커의 공격

스시스왑의 라우터프로세서2 스마트 컨트랙트 코드의 인증 버그를 악용한 해커는 가짜 유니스왑 V3 풀을 사용하여 암호화폐 거래자로부터 1,800 이더리움을 훔쳤습니다. 해커는 가짜 유동성 풀을 생성하고 이를 조작하여 풀과 상호 작용하는 다른 사용자로부터 자금을 훔칠 수 있었습니다.

공격을 수행하기 위해 해커는 스시스왑 라우터를 사용하는 가짜 유니스왑 V3 풀을 만들었습니다. 이 가짜 풀은 합법적인 풀의 동작을 모방하도록 설계되었지만, 한 가지 중요한 차이점이 있었습니다: 진위 여부에 대한 증명을 요구하지 않았습니다. 사용자가 풀과 상호 작용할 때 잘못된 인수를 사용하여 "라우터 콜백" 함수를 호출했고, 이로 인해 "transferFrom()"이라는 함수가 잘못된 사용자로부터 자금을 이체하도록 만들었습니다.

이 특정 공격에서 해커는 스시스왑 스마트 컨트랙트에 자금 접근 권한을 부여한 암호화폐 트레이더를 표적으로 삼았습니다. 해커는 인증 버그를 이용해 1,800개의 이더리움을 훔쳤으며, 공격 당시 330만 달러 이상의 가치가 있는 이더리움을 훔쳤습니다.

이번 공격은 더 이상 사용하지 않거나 알려진 취약점이 있는 스마트 컨트랙트의 승인을 취소하는 것이 중요하다는 점을 강조합니다. 사용자는 특정 컨트랙트 주소의 모든 권한을 취소할 수 있는 revoke.cash와 같은 도구를 사용하여 권한을 취소할 수 있습니다. 승인 취소를 통해 사용자는 스마트 컨트랙트 코드의 잠재적 공격과 취약점으로부터 자금을 보호할 수 있습니다.

V. 버그와 공격의 결과

스시스왑 라우터프로세서2 스마트 컨트랙트 코드에 대한 공격은 피해자에게 상당한 금전적 비용을 초래했으며, 피해자는 공격 당시 330만 달러 이상의 가치가 있는 이더리움 1,800개를 잃었습니다. 이러한 금전적 비용은 스마트 컨트랙트 기반 시스템의 보안과 안정성을 보장하는 것이 얼마나 중요한지 강조합니다. 코드의 취약성은 사용자에게 상당한 금전적 손실을 초래할 수 있기 때문입니다.

또한 이번 공격은 플랫폼의 보안과 신뢰성에 대한 의문을 제기하여 스시스왑의 평판에도 영향을 미쳤습니다. 사용자들은 향후 플랫폼 사용을 주저하거나 스마트 컨트랙트를 신뢰하지 않을 수 있으며, 이는 플랫폼의 성장과 채택에 부정적인 영향을 미칠 수 있습니다.

이번 사건은 유사한 공격을 예방하기 위해 철저한 코드 검토와 테스트의 중요성을 강조합니다. 스마트 컨트랙트 코드는 복잡하고 상호 작용하는 여러 구성 요소가 포함되어 있어 모든 잠재적 취약점을 식별하고 수정하기가 어렵습니다. 하지만 개발자는 철저한 코드 검토와 테스트를 수행함으로써 코드에 취약점이 도입될 가능성을 최소화하고, 존재하는 취약점을 식별하고 수정할 수 있습니다.

또한, 이번 사건은 스마트 컨트랙트와 상호작용할 때 발생할 수 있는 잠재적 위험에 대한 사용자 교육과 인식의 중요성을 강조합니다. 사용자는 스마트 컨트랙트를 사용할 때 주의를 기울여야 하며, 완전히 이해하고 신뢰하는 컨트랙트에만 상호작용해야 합니다. 또한 사용자는 더 이상 사용하지 않거나 알려진 취약점이 있는 스마트 계약의 승인을 정기적으로 검토하고 취소해야 합니다. 이러한 모범 사례를 따르면 사용자는 스마트 컨트랙트 코드의 잠재적인 취약성으로부터 자신과 자금을 보호할 수 있습니다.

VI. 버그 해결 및 향후 공격 방지를 위해 취한 조치

이 공격에 대응하여 사용자들은 revoke.cash와 같은 도구를 사용하여 영향을 받은 주소의 모든 권한을 취소하도록 권고받았습니다. 승인을 취소하면 스마트 컨트랙트 코드의 잠재적인 취약점으로부터 사용자를 보호하고 공격자가 알려진 취약점을 악용하여 자금을 훔치는 것을 방지할 수 있습니다.

라우터프로세서2 스마트 컨트랙트 코드의 취약점을 해결하기 위해 향후 유사한 공격을 방지하기 위해 코드를 변경했습니다. 이러한 변경에는 추가 보안 검사 및 유효성 검사 구현, 종속성 업데이트, 향후 코드 변경에 대한 테스트 및 검토 프로세스 개선 등이 포함될 수 있습니다.

이 사건은 코드를 프로덕션 환경에 배포하기 전에 취약점을 식별하고 수정하기 위해 철저한 코드 검토 및 테스트를 수행하는 것이 중요하다는 점을 강조합니다. 또한, 이번 사건은 잠재적인 취약점과 공격을 감지하고 대응하기 위해 스마트 컨트랙트에 대한 지속적인 모니터링과 감사가 필요하다는 점을 강조합니다.

향후 유사한 공격을 방지하기 위해 개발자는 보안 모범 사례 구현, 정기적인 보안 감사 실시, 스마트 컨트랙트와 안전하게 상호 작용하는 방법에 대한 사용자 교육 등의 조치를 취할 수 있습니다. 개발자는 보안을 우선시하고 공격 방지를 위한 사전 조치를 취함으로써 스마트 콘트랙트 기반 시스템에 대한 신뢰를 쌓고 탈중앙 금융(DeFi) 애플리케이션의 채택을 촉진할 수 있습니다.

VII. 결론

요약하자면, 이번 블로그 포스트에서는 스시스왑의 라우터프로세서2 스마트 콘트랙트 코드에서 인증 버그가 발견되어 공격자가 코드의 취약점을 악용해 사용자의 자금을 탈취할 수 있었던 사례에 대해 설명했습니다. 이 공격으로 한 암호화폐 트레이더는 330만 달러가 넘는 이더리움의 손실을 입었습니다.

이 사건은 스마트 컨트랙트 코드의 취약점을 방지하기 위해 철저한 코드 검토와 테스트를 수행하는 것의 중요성과 잠재적인 취약점과 공격을 감지하고 대응하기 위해 스마트 컨트랙트에 대한 지속적인 모니터링과 감사의 필요성을 강조합니다.

사용자들은 영향을 받은 주소의 모든 권한을 취소하도록 권고받았으며, 향후 유사한 공격을 방지하기 위해 코드를 변경했습니다. 이번 사건은 암호화폐 업계의 사이버 보안 위협에 대해 경계를 늦추지 않고 선제적으로 대응하고 스마트 컨트랙트 기반 시스템에 대한 사용자의 자금과 신뢰를 보호하기 위한 조치를 취하는 것이 중요하다는 점을 강조합니다.

전반적으로 이 블로그 게시물은 탈중앙 금융 애플리케이션의 잠재적 위험과 과제를 상기시키고, 신뢰를 구축하고 탈중앙 금융 애플리케이션의 채택을 촉진하기 위해 스마트 컨트랙트의 개발과 배포에서 보안을 우선시하는 것이 중요하다는 점을 강조합니다.

댓글