친애하는 KLAYSWAP 커뮤니티 회원 여러분,

 

KLAYswap 개발을 담당하는 법인 Ozys는 사용자들의 신뢰 확보와 함께 제품 보안을 최우선으로 여긴다.클레이스왑은 클레이튼 생태계의 대표적인 분권형 금융 프로토콜인 만큼 정기적인 감사와 보호조치를 통해 보안 강화를 목적으로 모든 노력과 자원을 쏟아 부었다.

 

그러나 오늘날 외부 사이트에서 SDK 파일이 감염되어 악의적인 외부 공격이 발생했는데, 이는 KLAYswap의 자체적인 프런트 엔드 소스 코드와 스마트 계약 보안 문제에서 비롯된 것이 아니다.진심으로 사과드리며, KLAYswap 이용자들의 깊은 이해를 부탁드린다.

 

이 게시물에는 다음과 같은 내용이 포함된다.사고 원인에 대한 자세한 설명과 가이드라인, KLAYswap 서비스의 신속한 정상화를 위한 대책, 사고와 직접 관련이 있는 이용자에 대한 후속 가이드라인, KLAYswap 팀이 현재 검토하고 있는 보상 방안 등이 담겨 있다.

 

또한 클레이튼 생태계에서 이 불행한 사건과 유사한 사례가 더 이상 발생하지 않도록 하려는 바람에서 오늘날 외부 공격의 특징과 구체적인 방법을 지역사회와 공유하게 된다.

 

1.사고내역

2022년 2월 3일(UTC+9) 11시 31분 41초 82005544블록에서 토큰 관련 기능을 실행할 때 특정 지갑으로 토큰을 보내는 초기 의심거래가 실행됐다.

이는 사용자의 정상적인 카카오 SDK 자바스크립트 파일 요청(https://developers.kakao.com/sdk/js/kakao.min.js)이 카카오 서버가 아닌 공격자가 구축한 제3자 서버에 접속돼 악성코드 파일이 다운로드되는 사고가 발생했기 때문이다.

(수정 전)

공격자는 기존 KLAYswap 코드(1월 4일경)의 구버전에 근거해 사용자의 모든 거래 요청을 직접 계약으로 변경하고, 기존 KLAYswap 코드의 작동을 방해할 목적으로 KLAYswap 사이트에 로드된 카카오 SDK 스크립트를 변경하고 악성코드를 생성했다.

(수정후)

공격자는 KLAYswap 코드의 이전 버전(1월 4일경)을 토대로 악성코드를 생성해 사용자의 모든 거래 요청을 변경할 목적으로 했다.

공격자의 계약에 사용자 토큰 전송 또는 승인그리고 KLAYswap 사용자가 통상적으로 'https://developers.kakao.com/sdk/js/kakao.min.js'을 요청하더라도 기존 클레이코드의 작동을 막고 카카오가 생산하는 일반 SDK가 아닌 공격자 자신의 악성코드 파일을 다운받을 수 있도록 KLAYswap 기능이 변경됐다.

오염된 논리로 거래가 발생하는 경우, 사용자의 자산을 공격자의 주소(0x3f315f2bfa8452 decbc08a9e3a7fdf8872f9527c, 0xdb0861dd3cb09975dbbb0995c4e152823c1c1a0b)로 직접 보내거나 승인하도록 설계되었다.

2. 대책

추가 피해가 발생하지 않도록 하기 위해 다음과 같은 조치를 취했다.사건 파악에 따라 KLAYswap의 모든 기능이 차단되고 긴급점검이 실시되었으며, 도난자산이 다른 거래소 플랫폼으로 넘어가는 것을 막기 위해 궤도교 내 클레이튼 마인터 운영이 제한되었다.

(수정 전)

KLAYswap, Orbit Bridge 기능 제한과 함께 이번 사태의 주요 원인으로 분석되는 오염된 카카오 SDK 파일은 삭제됐다.그 외에도 우리는 해커가 사용하는 스마트 계약에 노출된 지갑 주소와 자산 목록을 모두 확인했다.나아가 KLAYswap 정상화를 통해 악성계약에 대해 승인된 자산목록이 무허가 될 수 있도록 추가 개발을 진행하였다.다음은 노출된 지갑 목록과 승인된 이력을 삭제하는 방법에 대해 설명하겠다.

(수정후)

KLAYswap, Orbit bridge 기능 제한과 함께 사고를 정밀 분석한 결과, 카카오가 생산한 일반 SDK가 아닌 악성코드 파일이 카카오의 가이드라인에 따라 일반 루트를 통한 카카오 SDK의 요청에도 불구하고 다운로드 된 것을 확인하였고, KL에서 카카오 SDK 로드를 제거하였다.AYswap.게다가 해커가 사용하는 스마트 계약에 대해 승인된 KLAYswap 사용자 지갑 주소와 자산 목록을 즉시 확인하고, KLAYswap의 정상화를 통해 문제가 있는 계약에 대해 승인된 자산목록을 무허가하는 추가 개발을 완료했다.노출된 지갑 주소와 토큰 승인 리스트를 제거하는 방법을 아래에서 다시 한 번 설명하겠다.

"현재 이번 사태의 근본 원인을 규명하기 위해 다양한 거래소 플랫폼 및 보안감사 업체와 긴밀히 협력하고 있다.

사건 발생 전 KLAYswap에 접속해 계속 사용한 이용자는 악성 계약 코드가 남아 있어 의도하지 않은 거래가 반복될 수 있기 때문에 여전히 자산 착취 위험에 노출될 수 있다.이 문제는 KLAYswap에서 처리할 수 없으므로 사용자는 인터넷 브라우저의 캐시를 수동으로 삭제해야 한다.

다만 KLAYswap 프런트 엔드 소스 코드나 스마트 컨트랙트의 결함이나 보안 문제가 아니므로, 사고 당시 발생한 거래를 제외한 모든 자산은 안전하다는 것을 절대적으로 확신하여 알려드리고자 한다.

3. 보상계획

케이레이스왑의 개발사인 오지스는 누구보다 분권형 금융을 개발하기 위해 노력하는 단체여서 이번 사건을 완화해 불미스러운 사건으로 인한 피해를 최소화하기 위해 보상계획을 세울 계획이다.현재 예상 피해액은 약 22억 원 규모로, 문제의 원인을 정확히 파악하고 관련 업체와 긴밀한 협의를 통해 후속 대책을 마련할 계획이다.정확한 보상 날짜와 방법은 추후 통지를 통해 신속히 알려줄게.

사건 당시 총 325개의 지갑에서 407건의 비정상적인 거래가 발생한 것으로 확인됐다.

더 이상의 예기치 못한 사고를 막기 위해, 사건 발생 당시 KLAYswap 내에서 거래를 만든 유저에게 지갑을 새것으로 교체해 줄 것을 강력히 권고한다.지갑을 교환할 때는 소액을 먼저 송금해야 한다는 점에 유의하십시오.이송의 안전성을 확보한 후 남은 금액을 이송한다.

4. 승인되지 않은 토큰 승인 가이드

악성계약에서 요청한 토큰 승인이 완료된 지갑의 경우 서비스를 이용하기 전에 KLAYswap UI에서 토큰 승인 거래를 수동으로 허가해야 한다.토큰 승인은 다음 절차에 따라 승인되지 않은 상태로 진행할 수 있다.

1) KLAYswap 사이트에 접속한 후 나타나는 팝업을 확인하고 [인증되지 않은 토큰 승인 페이지로 이동] 버튼을 클릭한다.

* 사이트에 액세스할 때 팝업이 표시되지 않으면 인터넷 캐시를 삭제한 후 사이트에 액세스하십시오.

2) [토큰 승인 취소] 페이지에서 [Wallet 연결] 버튼을 클릭하여 지갑에 대한 연결을 완료하십시오.

3) 지갑연결이 완료되면 악성계약서상의 요청을 승인한 자산목록을 모두 확인할 수 있다.그 후,[토큰 승인 취소]버튼을 클릭해 거래를 실행할 수 있다.복수의 자산이 승인되는 경우, 승인된 자산목록의 수가 '0'에 이를 때까지 각 거래와 각각의 거래가 연속적으로 이루어져야 한다.

*토큰, LP토큰, 단일예금 탭 각각

4) 모든 토큰 무단거래가 완료되면 [토큰승인 미승인] 버튼이 비활성화되고 승인된 자산목록은 '0'이 된다.

버튼을 클릭하면 모든 승인이 승인되지 않았음을 확인할 수 있다.

5) 위와 같은 절차를 모두 마쳤다면, 지갑은 악의적인 계약으로부터 자산을 안전하게 관리할 수 있지만, 자산을 새로운 지갑 주소로 이전하고 KLAYswap을 계속 사용하는 것이 좋다.

 

 

https://medium.com/klayswap/klayswap-incident-report-feb-03-2022-f20ba2d8e4dd

 

KLAYswap Incident Report (Feb 03, 2022)

Dear KLAYswap community members

medium.com

 

+ Recent posts