읽기 시간: 5 분
Web3의 세계는 프로토콜과 표준의 세계입니다. 여러 ERC 표준을 접해보셨을 것입니다. 가장 유명한 ERC 표준 중 일부는 각각 토큰과 NFT에 대한 20 및 721입니다. 그러나 Web3는 이에 국한되지 않습니다.
Web3에서 정기적인 업데이트 및 업그레이드를 볼 수 있습니다. 최신 업그레이드 중 하나는 4337년 2023월 이더리움 메인넷에 배포된 ERC 4337이었습니다. 모든 업데이트가 한 번에 성공하는 것은 아닙니다. ERC 4337도 마찬가지입니다. 이 블로그에서는 표준의 사용자 작업 섹션과 그 영향에 관한 취약점에 대해 알아봅니다. 먼저 ERC XNUMX 표준에 대한 간략한 소개부터 시작하겠습니다.
ERC4337이란 무엇입니까?
비트코인의 네트워크와 달리 이더리움 체인에서 스마트 계약을 지원하므로 이더리움은 두 가지 유형의 계정(거래 계정 또는 운영 계정)을 갖게 됩니다. 그 외에도 스마트 계약에는 거의 계정과 같은 자체 공간이 있습니다. Ethereum의 이 두 가지 유형의 계정에는 고유한 기능이 있습니다.
Ethereum과 함께 작동하는 대부분의 지갑은 스마트 계약이 아닌 사용자 계정을 의미하는 EOA입니다. 이러한 유형의 계정에는 고유한 제한이 있습니다. 한 가지 제한 사항은 사용자가 개인 키에만 의존하여 계정에 액세스하고 거래를 위해 모든 서명을 요구하는 것입니다. 이러한 제한으로 인해 ERC 4337이 도입되었습니다.
ERC 4337은 두 가지 계정 유형 기능 중 가장 좋은 기능을 결합하여 계정 추상화를 제공하려고 시도합니다. 예, EOA 및 스마트 계약 계정입니다. 이것은 토큰을 거래하고 동시에 계약을 생성할 수 있는 단일 계약으로 가능하며 ERC 4337은 이 놀라운 새로운 발전을 촉진하는 표준입니다.
UserOperation 패킹 취약점?
이 표준과 프로젝트에 관한 모든 것이 훌륭하지만 무엇이 잘못되었습니까? 음, 서명하는 데 사용된 방법을 기반으로 일관성 없는 해시를 초래하는 구현 문제가 있었습니다. 이로 인해 주문 충돌, 특히 동일한 UserOperations에 대한 다양한 해시와 다른 UserOperations에 대한 충돌 해시가 발생합니다.
영향을 받는 지역은 EntryPoint 패킹 취약점과 VerifyingPaymaster 패킹 취약점의 두 가지 취약점으로 제한되었습니다. 나중에 자세히 설명합니다. 먼저 일반적인 이해를 한 다음 개별적으로 알아 보겠습니다.
UserOperation.sol을 살펴보겠습니다.
Pack 함수에 인수로 전달되는 UserOperation 매개변수인 Calldata를 볼 수 있습니다. 구조체를 살펴보겠습니다.
UserOperation 구조체가 전달하는 필드입니다. Calldata의 이 많은 부분을 메모리에 복사하기 위해 코드 세그먼트는 어셈블리를 사용합니다. 계약의 일부 메서드는 ABI 인코딩에서 동적 필드라고도 하는 가변 크기 필드를 포함하여 UserOperation의 모든 필드를 캡처하려고 합니다. 예를 들어 이 구조체의 동적 인코딩은 'initCode', 'callData' 및 'paymasterAndData'입니다.
일부 메소드는 해당 필드가 아직 정의 또는 선언되지 않았기 때문에 'paymasterAndData'를 포함할 수 없습니다. 메서드는 이를 수행하기 위해 동적 데이터 유형에 제공된 '.offset' 편의 필드를 사용합니다. 그러나 ABI로 인코딩된 인수를 사용하는 계약은 필드가 정의된 순서와 오프셋의 유효성을 확인하지 않습니다. 비정상적인 해시 속성을 사용하여 Calldata에서 사용자 작업의 유효한 표현을 구성할 수 있습니다.
EntryPoint 패킹 취약점
UserOperation의 문제는 표준의 다른 부분에도 영향을 미치며 EntryPoint Packing 취약점은 그 중 하나입니다. EntryPoint와 지갑 계약 간에 다른 해싱 체계가 사용되거나 비표준 사용자 작업 인코딩이 사용되는 경우 해시 차이가 발생합니다.
위험은 EntryPoint로 나타납니다. 이제 단일 사용자 작업은 여러 '사용자 작업 해시'로 나타낼 수 있으며 동일한 '사용자 작업 해시'는 여러 사용자 작업을 나타낼 수 있습니다. 이제 원하지 않는 효과가 발생할 수 있습니다. 그것이 미칠 수 있는 영향에 대해 논의해 봅시다.
Erc 4337은 XNUMX월에 출시된 초기 단계이므로 이러한 취약점의 영향은 완전히 알려지지 않았습니다. 조감도에서 잠재적인 영향을 설명하기는 어렵습니다. 그 이상으로 영향은 번들러, 인덱서, 사용자 작업 탐색기 및 기타 오프 체인 서비스 구현에 따라 다릅니다. 이 취약점으로 인해 발생하는 몇 가지 문제를 살펴보겠습니다.
- 사용자 작업 해시가 제출 시간과 포함 시간 사이에 변경될 수 있기 때문에 이로 인해 사용자에게 혼란스러운 경험이 발생할 수 있습니다. 이 현상은 대부분의 지갑에 알려지지 않았으므로 그 차이를 설명하지 못할 수도 있습니다.
- 모든 사용자 작업 해시를 동일하게 설정하여 의도적으로 인덱싱을 피하도록 지갑을 변경하고 설계할 수 있습니다.
- 사용자 작업 포함을 모니터링하는 오프체인 서비스가 주어진 사용자 작업 포함을 놓치는 경우 데이터 및 키의 잘못된 처리를 볼 수 있습니다.
Paymaster 패킹 취약점 확인
아무도 온라인 쇼핑에서 무언가를 주문하고 완전히 다른 제품을 받는 것을 좋아하지 않습니다. Web3에서도 마찬가지지만 이 취약점은 사용자 경험을 저하시킵니다. 사용자는 서명 시점과 체인에 포함된 시점 사이에 내용을 변경했거나 다를 수 있습니다. 그리고 이것이 발생하는 이유는 두 개의 서로 다른 사용자 작업이 'VerifyingPaymaster.getHash()' 함수에서 동일한 해시를 반환하기 때문입니다.
VerifyingPaymaster.getHash() 함수는 구조체인 'UserOperation', 'validUnitl', uint48 값 및 또 다른 uint48 값인 validAfter와 같은 몇 가지 인수를 사용합니다. 서명 시간과 포함 시간 사이의 다른 콘텐츠 문제는 사용자 경험과 전반적인 보안에 영향을 미칩니다. 그것이 제기하는 몇 가지 우려 사항에 대해 논의해 봅시다.
- 사용자 작업을 수신한 후 ABI 인코딩 형식으로 서명하는 오프체인 서명자 또는 서명을 위해 데이터를 준비하기 위한 계약 통합이 있는 서명자는 취약해집니다.
- 해시는 예상보다 적은 수의 요소를 포함하도록 수정될 수 있으며, 이로 인해 initCode 등과 같은 일부 정적 필드가 해시에서 제외될 수 있습니다. 이것은 페이마스터 스폰서쉽 서명을 위해 의도된 것과 다른 사용을 초래할 수 있습니다.
- 서명을 받은 후 userOp.initCode 및 userOp.callData를 변경하여 규칙 위반 및 우회를 확인할 수 있습니다. 이를 통해 페이마스터의 기본 토큰을 가스 없는 NFT 발행 이외의 목적으로 사용할 수 있습니다.
결론
끊임없는 발전과 발전으로 우리는 많은 멋진 것들을 목격하게 될 것이며 ERC 4337은 그 중 하나입니다. 보안을 개발하고 발전시키는 것은 결코 타협할 수 없는 것입니다. 표준에서 얼마나 빨리 취약점을 발견했는지, 그리고 이를 안전하게 하기 위해 지속적인 연구 개발이 진행되고 있는지가 놀랍습니다.
Web3에서 구축하는 가장 크고 잘 알려진 조직 중 일부라도 보안 관련 실수를 할 수 있으며 분명히 다른 프로토콜도 실수를 범한다는 점에 유의하는 것이 중요합니다. 의 지속적인 상승 Web3 인시던트 지난 몇 년 동안 분명합니다.
이러한 보안 위협으로부터 귀하, 귀하의 사용자 및 귀하의 프로토콜을 보호하기 위한 원스톱 솔루션이 감사를 받고 있습니다. 우리 QuillAudits는 스마트 계약 감사 및 블록체인 보안 분야의 최고 서비스 제공업체 중 하나입니다. 저희 웹사이트를 방문하여 자세한 내용을 알아보고 프로젝트를 보호하십시오. 더 많은 유익한 블로그를 즐길 수 있도록 계속 지켜봐 주시기 바랍니다.
34 조회수
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 미래 만들기 w Adryenn Ashley. 여기에서 액세스하십시오.
- 출처: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :이다
- :아니
- 20
- 2023
- a
- 소개
- ACCESS
- 계정
- 계정 추상화
- 계정
- 가로질러
- 또한
- 진보
- 후
- All
- 또한
- 변경
- an
- 및
- 다른
- 있군요
- 논의
- 인수
- AS
- 조립
- At
- 시도
- 회계 감사
- 감사
- 기반으로
- BE
- 때문에
- 가
- 존재
- BEST
- 사이에
- 가장 큰
- blockchain
- Blockchain security
- 블로그
- 위반
- 건물
- 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
- by
- 라는
- CAN
- 포착
- 원인
- 원인
- 체인
- 이전 단계로 돌아가기
- 변화
- 암호
- 결합
- 왔다
- 타협
- 우려 사항
- 혼란
- 구축
- 내용
- 끊임없는
- 계약
- 계약
- 편의
- 수
- 엄호
- 만들
- 데이터
- 한정된
- 따라
- 배포
- 설명
- 설계
- 개발
- 개발
- 차이
- 다른
- 토론
- 분기
- do
- 동적
- 초기의
- 초기 단계
- 효과
- 요소
- 즐겨
- 전적으로
- ERC-4337
- 등
- 이더리움
- 이더리움 메인넷
- 조차
- 모든
- 예
- 제외
- 기대하는
- 경험
- 탐험
- 탐험가
- 눈
- 촉진
- 유명한
- 특징
- 를
- 들
- Fields
- Find
- 먼저,
- 럭셔리
- 체재
- 발견
- 에
- 충분히
- 기능
- 기능성
- 작동
- 일반
- 얻을
- 점점
- 주어진
- Go
- 가는
- 발생
- 하드
- 해시
- 해싱
- 있다
- 방법
- HTTPS
- 영향
- 영향
- 이행
- 구현
- 중대한
- in
- 포함
- 포함
- 포함
- 포함
- 개별적으로
- 유익한 정보
- 통합
- 의도
- 의도적으로
- 으로
- 개요
- 발행물
- 문제
- IT
- 다만
- 키
- 알려진
- 넓은
- 성
- 최근
- 리드
- 배우다
- 처럼
- 한정
- 한계
- 제한된
- 보기
- 만든
- 메인 넷
- 확인
- 제작
- .
- Mar
- 최대 폭
- XNUMX월..
- 방법
- 메모리
- 방법
- 방법
- 수도
- minting
- 잘못 다루다
- 그리워하다
- 실수
- 수정
- 모니터링
- 배우기
- 가장
- 여러
- 출신
- 네이티브 토큰
- 네트워크
- 신제품
- NFT
- 지금
- of
- on
- ONE
- 온라인
- 온라인 쇼핑
- OP
- 조작
- 운영
- 행정부
- or
- 주문
- 조직
- 기타
- 기타 프로토콜
- 우리의
- 위에
- 전체
- 자신의
- 짐
- 매개 변수
- 특별히
- 부품
- 합격
- 현상
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 가능한
- 가능성
- Prepare
- 사설
- 개인 키
- 프로덕트
- 프로젝트
- 속성
- 보호
- 프로토콜
- 프로토콜
- 제공
- 제공
- 제공
- 목적
- 빨리
- 퀼해시
- 제기
- 이유
- 전수
- 에 관한
- 지역
- 정규병
- 출시
- 신뢰
- 대표
- 대표
- 대표되는
- 연구
- 연구 및 개발
- 결과
- return
- 상승
- 위험
- 규칙
- 같은
- 계획
- 섹션
- 안전해야합니다.
- 보안
- 보안
- 보안 위협
- 참조
- 세그먼트
- 서비스
- 서비스 제공자
- 서비스
- 설정
- 몇몇의
- 쇼핑
- 기호
- 서명
- 로그인
- 동시에
- 단일
- 스마트 한
- 똑똑한 계약
- 스마트 계약
- So
- SOL
- 해결책
- 일부
- 무언가
- 스페이스 버튼
- 후원
- 단계
- 표준
- 기준
- 스타트
- 유지
- 아직도
- 제출
- 성공한
- 이러한
- 지원
- 확실히
- 소요
- 보다
- 그
- XNUMXD덴탈의
- 그들의
- 그들
- 그곳에.
- Bowman의
- 그들
- 일
- 이
- 그
- 위협
- 시간
- 에
- 토큰
- 토큰
- 너무
- 상단
- 거래하다
- 거래상의
- 거래 내역
- 참된
- 유형
- 이해
- 불필요한
- 업데이트
- 업데이트
- 업그레이드
- 사용
- 익숙한
- 사용자
- 사용자 경험
- 사용자
- 유효 기간
- 가치
- 대단히
- 관측
- 방문
- 취약점
- 취약점
- 취약
- 지갑
- 지갑
- 였다
- we
- Web3
- 웹 사이트
- 잘
- 잘 알려진
- 했다
- 뭐
- 언제
- 어느
- 동안
- why
- 의지
- 과
- 목격자
- 세계
- 잘못된
- 년
- 자신의
- 너의
- 제퍼 넷