뉴스

카르다노 하이드라 2.4.1 — 자금 탈취 취약점을 고쳤어요

카르다노 레이어2 하이드라가 9월 2일 2.4.1 을 냈어요. 헤드에 같이 참여한 사람이 남의 자금을 가져갈 수 있던 취약점(GHSA-cg83-6w6r-6hx3, 심각도 Critical)을 고친 버전이에요.

카르다노 하이드라 2.4.1 — 자금 탈취 취약점을 고쳤어요

3줄 요약

  • 1카르다노 레이어2 하이드라가 9월 2일 2.4.1 버전을 냈어요. 헤드 참여자가 다른 참여자의 자금을 가져갈 수 있던 취약점을 고쳤어요.
  • 2원인은 스냅샷을 확정할 때 서명 검사와 플루투스 스크립트 실행을 건너뛴 최적화였어요. 2.4.1 은 그 생략을 없앴어요.
  • 32.4.0 은 바로 교체하면 되고, 2.3.0 이하는 헤드를 닫고 팬아웃까지 마친 뒤 올려야 해요.

AI가 쓴 글이에요. 출처를 바탕으로 자동으로 작성·발행돼요. 사람이 검수하지 않으니 사실과 다를 수 있어요. 중요한 내용은 아래 출처 링크에서 원문을 확인해 주세요.

카르다노의 레이어2 하이드라(Hydra)가 9월 2일 2.4.1 버전을 냈어요. 같은 헤드에 참여한 사람이 다른 참여자의 자금을 가져갈 수 있던 취약점을 고친 버전이에요. 2.4.0 이하를 돌리는 노드는 올려야 하고, 실제 피해 사례는 아직 공개되지 않았어요.

하이드라 헤드가 뭐예요

하이드라는 카르다노 위에 올리는 레이어2예요. 레이어2 — 메인 체인 밖에서 거래를 처리하고 결과만 체인에 적는 방식이에요.

몇 명이 모여 "헤드(Head)"를 열고, 각자 자기 자금을 그 안에 넣어요. 헤드 안에서는 거래를 체인에 올리지 않고 주고받아요. 대신 지금 상태를 정리한 "스냅샷"에 참여자 전원이 서명해요. 서명이 다 모이면 그 스냅샷이 확정돼요.

헤드를 닫을 때는 마지막으로 확정된 스냅샷을 메인 체인에 펼쳐요. 이걸 팬아웃(Fanout)이라고 해요. 그래서 스냅샷이 틀리면 체인에 적히는 잔고도 틀리게 돼요.

무엇이 잘못됐나요

문제는 스냅샷을 확정하는 길목에 있었어요. GitHub 보안 권고 번호는 GHSA-cg83-6w6r-6hx3 이고, 심각도는 Critical(치명적)로 매겼어요. 영향을 받는 건 2.4.0 이하예요.

하이드라 노드는 속도를 위해 한 가지를 건너뛰고 있었어요. 스냅샷을 만들 때 저장해둔 거래를 다시 적용하는데, 이때 서명 검사와 플루투스 스크립트 실행을 생략했어요. 플루투스 — 카르다노의 스마트 계약이에요. "이미 검사한 거래니까 또 볼 필요 없다"는 전제였어요.

그런데 그 전제가 깨졌어요. 노드는 들어온 거래를 검사가 끝나기 전에 보관함에 먼저 넣었어요. 검사에서 떨어진 거래도 그 안에 남았어요. 검사 안 된 거래가 검사 안 하는 길로 흘러간 거예요.

권고문은 원인을 세 가지로 정리했어요. 검사 전에 거래를 상태에 넣는 것, 다시 적용할 때 서명과 스크립트를 건너뛰는 것, 그리고 "검사를 마친 거래만 넣어라"는 원장 함수의 조건을 코드가 지키지 않은 것이에요.

공격은 이렇게 돼요

권고문이 적은 순서는 이래요.

  1. 공격자가 피해자의 자금을 쓰는 거래를 만들어요
  2. 그 거래에 피해자의 키를 적고, 서명은 가짜로 넣어요
  3. 이 거래와 스냅샷 요청을 같이 뿌려요
  4. 정직한 노드가 그 거래를 보관함에 넣어요. 검사가 실패해도 남아요
  5. 스냅샷을 만들며 그 거래를 다시 적용해요. 이번에는 서명을 보지 않아요
  6. 피해자 자금이 공격자 주소로 넘어간 스냅샷이 확정돼요

공격자는 자기 키만 있으면 돼요. 피해자의 개인키는 필요 없어요. 다만 같은 헤드에 참여자로 들어가 있어야 해요.

2.4.1 은 뭘 바꿨나요

생략을 없앴어요. 스냅샷 요청을 처리할 때도 서명과 스크립트를 늘 전부 검사해요.

권고문은 검사 안 된 거래가 보관함에 들어가지 않게 막는 걸 1차 해법으로 적었어요. 스냅샷 처리에서 전체 검사를 다시 하는 건 이중 안전장치예요. 보관함 관리가 어떻든 막히게 하려는 거예요.

업그레이드는 버전에 따라 달라요

지금 버전해야 하는 일
2.4.0바로 교체하면 돼요. 하이드라 스크립트, 스냅샷 서명, hydra.db 형식이 그대로예요
2.3.0 이하열려 있는 헤드를 닫고 팬아웃까지 마친 뒤 올려야 해요. 2.4.0 에서 생긴 호환성 변경이 적용돼요

2.4.1 이 맞춰본 버전은 cardano-node 11.0.1, cardano-cli 11.0.0, mithril 2630.0 이에요.

에이다를 들고 있으면 어떻게 되나요

권고문이 말하는 위험은 헤드 안에 자금을 넣어둔 참여자 사이의 일이에요. 헤드를 직접 열어 쓰거나 노드를 운영하는 분이라면 버전을 확인해 보세요.

릴리스 노트는 내 노드를 올리는 것만으로도 내 자금을 지킬 수 있다고 적었어요. 스냅샷이 확정되려면 참여자 전원의 서명이 필요하니까요. 내 노드가 제대로 검사하면 잘못된 거래는 내 서명을 못 받아요.

실제로 이 취약점을 쓴 공격이나 피해 규모는 공개되지 않았어요. 9월 12일 에이다 가격 움직임과 이 패치를 이어주는 근거도 확인된 게 없어요.

정리

  • 하이드라 2.4.1 이 9월 2일 나왔어요. 헤드 참여자가 다른 참여자의 자금을 가져갈 수 있던 취약점을 고쳤어요. 권고 번호는 GHSA-cg83-6w6r-6hx3, 심각도는 Critical 이에요
  • 원인은 스냅샷을 확정할 때 서명 검사와 플루투스 스크립트 실행을 건너뛴 최적화였어요. 2.4.1 은 그 생략을 없앴어요
  • 2.4.0 은 바로 교체, 2.3.0 이하는 헤드를 닫고 팬아웃한 뒤 올려야 해요. 실제 피해 사례는 아직 공개되지 않았어요

다음에 할 일 한 가지 — 하이드라 노드를 돌리고 있다면 지금 버전을 확인하고, 2.4.1 릴리스 노트와 보안 권고를 직접 읽어 보세요.

출처 (3개)

이 글은 아래 출처를 바탕으로 작성됐어요

함께 보면 좋아요

코인풀이 텔레그램 소통방

차트 공부부터 실시간 분석까지, 같이 이야기해요. 새 글도 여기 가장 먼저 올라가요.