단위 4 / 11

취약점 검색: 일반적인 취약점 패턴 및 자동 분석

이득:

  • 재진입, 접근통제, 오라클 조작, 프론트러닝 등 일반적인 취약점 패턴을 인지하고 정적 분석 도구 + 인공지능 + 인간으로 스캔하는 능력
  • 도구 출력을 설명하고 MEV 및 비즈니스 로직의 오탐지와 약점의 우선순위를 지정하는 데 있어 AI의 강점을 구별하는 능력
  • '클린 스캔'은 보안 인증서가 아니며 스캔은 제어의 한 계층에 불과하다는 점을 이해하십시오.

우리는 이전 단원에서 감사의 전체적인 규율을 살펴보았습니다. 이 단원에서는 보다 기술적인 주제인 취약성 검색(코드의 알려진 취약성 패턴을 체계적으로 검색하는 것)에 중점을 둡니다. 여기서는 정적 분석 도구와 함께 AI를 알려진 취약점 패턴을 스캔하고 설명하는 보조자로 사용합니다. 목표는 가장 일반적인 취약점을 심층적으로 파악하고 AI가 신뢰할 수 있는 부분과 이를 스캔하는 데 부적합한 부분을 구별하는 것입니다.

정적 및 동적 스캐닝

스캔에는 두 가지 유형이 있습니다. 정적 분석 - 코드를 실행하지 않고 검사: Slither 및 Mythril과 같은 도구는 계약 코드를 스캔하고 알려진 패턴에 플래그를 지정합니다. 동적/기호 분석(다른 입력으로 코드 실행 또는 수학적으로 탐색): 퍼징(임의 입력으로 폭격) 및 기호 실행(가능한 모든 경로 탐색)이 이 그룹에 속합니다.

AI는 이러한 도구를 대체하는 것이 아니라 보완합니다. 차량이 경고를 발령하면 AI는 경고를 일반 언어로 설명합니다. AI는 도구가 패턴을 놓쳤을 때 상기시켜 줄 수 있습니다. 하지만 AI만으로는 얼마나 스캔하는지 보장할 수 없습니다. 올바른 작업 흐름: 도구 + AI + 인간.

팁: AI에 정적 분석 도구(예: Slither 보고서)의 출력을 제공하고 "각 경고를 일반 언어로 설명합니다. 어떤 것이 실제 위험이고 어떤 것이 오탐일 수 있습니까?"라고 질문합니다. 묻다. AI는 인간이 원시 도구 출력을 이해하고 우선순위를 지정할 수 있도록 하는 데 매우 중요합니다.

가장 일반적인 취약점 패턴

1. 재진입. 함수가 상태를 업데이트하지 않고 외부 계약을 호출하는 경우 호출된 계약은 다시 돌아가서 동일한 함수를 다시 트리거하고 자금을 여러 번 인출할 수 있습니다. 해결책: 검사-효과-상호작용 순서 및 재진입 가드.

2. 접근 통제가 부족합니다. 중요한 기능(철회, 탈퇴, 업그레이드)이 실수로 공개되었습니다. 이는 가장 흔하고 비용이 많이 드는 실수 중 하나입니다.

3. 오라클 조작. 외부 가격 소스(오라클)에 대한 계약의 맹목적인 의존입니다. 공격자는 즉시 가격을 조작하여 프로토콜을 속입니다. 솔루션: 시간 가중 평균 가격(TWAP), 다중 소스.

4. 정수 오버플로/언더폴. 숫자가 최대 허용 값을 초과하여 처음으로 돌아가는 경우. Modern Solidity는 대부분을 자동으로 포착하지만 위험은 하위 수준(어셈블리) 코드에 남아 있습니다.

5. 전면 실행. 거래는 확인되기 전에 공개 풀(mempool)에 나타납니다. 공격자는 귀하의 거래를 보고 그 앞에 자신의 거래를 삽입할 수 있습니다. MEV(Maximal Extractable Value — 거래 순서에서 추출된 값)는 이 주제의 총칭입니다.

6. 서비스 거부(DoS). 루프는 비용이 너무 많이 들고 함수를 사용할 수 없게 만들거나 주소에 대한 종속성이 잠깁니다.

7. 업그레이드 위험. 업그레이드 가능한 계약에서 스토리지 충돌 및 권한 남용.

취약성

AI 스캐닝 신뢰

왜?

재진입

높다

잘 알려진 명확한 패턴

접근 제어

높다

금형을 스캔할 수 있습니다.

정수 연산

높다

표준 제어

오라클 조작

중간

맥락이 필요함

프론트러닝/MEV

중간-낮음

프로토콜별

비즈니스 로직 오류

낮음

진정성 있고 상황에 맞는

약한 프롬프트 / 강한 프롬프트

약한 프롬프트:

이 코드에 허점이 있나요?

강력한 프롬프트:

귀하의 역할: 보안 검색 보조원. 아래 계약을 스캔하여 알려진 패턴과 재진입, 액세스 제어, 정수 작업, 오라클 종속성, 전면 실행, DoS, 업그레이드 보안 각각에 대해 "위험/없음/불확실"을 확인하세요. 각 결정을 관련 행에 연결하고 위험이 있는 이유를 설명하십시오. 이는 정적 분석 도구와 감사자를 통해 검증될 가설입니다. 오탐(false positive)이 있을 수 있으니 참고하세요.

복사 가능한 템플릿 4개

1) 도구 출력 설명:

아래는 정적 분석 도구(Slither)에 대한 보고서입니다. 각 경고를 일반 언어로 설명합니다. 이는 무엇을 의미합니까, 실제 위험인지 아니면 오탐지 가능성이 있는지, 우선 순위는 무엇입니까? 확고한 결정을 내리지 마십시오. 감사자 확인을 우선시합니다.

2) 재진입 집중 심사:

이 계약에서 외부 호출을 수행하는 모든 함수를 찾으세요. 각각에 대해 검사-효과-상호작용 순서를 따르는지, 재진입 가드가 있는지 검사합니다. 위험한 것은 선으로 표시하세요. 확실하지 않은 경우 표시하십시오. 익스플로잇 코드 생성.

3) 접근 통제 지도:

이 계약의 모든 외부/공개 기능을 나열하고 각각에 대해 "호출할 수 있는 사람"(모든 사람/소유자/역할)을 지정합니다. 중요한 작업(철회, 인쇄, 업그레이드)을 수행하고 액세스 제어가 취약한 작업을 표시합니다. 표와 함께 제시하세요.

4) 거짓 긍정 제거:

이 검사 경고가 실제 위험(거짓양성)이 아닐 수 있는 이유를 생각해 보세요. 어떤 컨텍스트 또는 코드 조건이 이 경고를 무효화합니까? 그러나 “전혀 문제가 없다”고 말하지 마십시오. 확인이 필요한 사항을 나열하십시오.

미니 케이스 3개(숫자 기준)

사례 1 — 차량 + AI가 효율성을 두 배로 높였습니다. 한 팀은 12개 계약 프로젝트에서 Slither를 실행했고 140번의 경고를 받았습니다. AI가 경고를 설명하고 우선순위를 지정하도록 했더니 140개 경고 중 95개가 오탐(false positive)인 것으로 나타났습니다. 팀은 45명의 실제 후보자에게 집중했습니다. 분류 시간이 2일에서 5시간으로 단축되었습니다. 교훈: AI는 차량 출력을 인간화하는 데 강력합니다.

사례 2 - AI가 MEV를 탈취했습니다. DEX(분산형 교환) 계약에서 AI는 표준 패턴이 깨끗하다는 것을 발견했지만 선행 취약점을 감지하지 못했습니다. 이는 프로토콜의 작업 순서에 따라 달라지기 때문입니다. 인간 감사자 및 시뮬레이션이 캡처되었습니다. 교훈: MEV/선제 실행과 같은 프로토콜 관련 위험은 AI의 약점입니다.

사례 3 - 거짓 긍정으로 인한 시간 낭비를 방지했습니다. AI가 재진입 경고가 실제로는 거짓 긍정(함수는 이미 보호되어 있음)이라고 설명했을 때 팀은 불필요한 재작성을 면했습니다. 하지만 팀은 여전히 ​​한 번의 테스트로 이를 확인했습니다. 교훈: AI가 우선순위를 정합니다. 테스트와 함께 다시 확인이 이루어집니다.

스캔의 한계

스캔을 통해 알려진 패턴을 찾습니다. 도구나 AI 모두 새롭고 고유하거나 프로토콜별 취약점을 탐지한다고 보장되지 않습니다. 따라서 심사는 감사의 일부입니다. 그 자신이 아닙니다. "스캔이 깨끗하므로 안전하다는 뜻이다"라는 생각은 이 분야에서 가장 위험한 오해 중 하나입니다. 준설 작업은 낮게 매달린 과일을 집어들습니다. 심층적이고 고유한 위험의 경우 인간의 전문 지식, 테스트, 퍼징 및 공식 감사가 필수적입니다.

주의: 스캔 도구나 AI에 대한 "깨끗한" 보고서는 보안 인증서가 아닙니다. 특히 투자자들에게 그런 식으로 제시하는 것은 오해의 소지가 있고 비윤리적입니다.

일반적인 실수

  • 검사를 선별검사로 대체합니다. 스캔은 전체가 아닌 하나의 레이어입니다.
  • 도구 없이 AI를 사용합니다. 정적 분석 + AI + 인간이 함께 작동합니다.
  • 확인 없이 오탐지를 제거합니다. 각 화면은 테스트/사람의 검증을 거쳤습니다.
  • AI를 활용하여 프로토콜별 위험(MEV)을 우회합니다. AI의 취약한 부분.
  • "클린 스캔" = "안전"이라고 생각합니다. 미지의 것을 찾을 수 없습니다.
  • 익스플로잇 코드 생성. 방어적 위험 설명만이 합법적입니다.

요약하면

  • 취약점 스캔은 차량 + AI + 인간을 통해 알려진 취약점 패턴을 찾습니다.
  • AI는 정적 분석 도구 결과를 설명하고 우선순위를 지정하는 데 강력합니다.
  • 재진입 및 액세스 제어와 같은 명확한 패턴에서 신뢰성이 높습니다. MEV 및 비즈니스 로직에 약합니다.
  • 오탐지를 제거하는 것에도 확인이 필요합니다.
  • "클린 스캔"은 보안 인증서가 아닙니다. 이는 감독을 대체할 수 없습니다.

응용과제

가능한 경우 샘플 계약에 대해 정적 분석 도구를 실행하거나 미리 만들어진 Slither 보고서를 찾으세요. AI에 "도구 출력 설명" 프롬프트를 적용합니다. AI가 (1) 경고를 올바르게 설명하는지, (2) 거짓 긍정을 구별하는 데 의미가 있는지, (3) 프로토콜별 위험을 놓쳤는지 평가합니다. 표에 '차량 발견 / AI 설명 / 사람 확인' 열을 입력합니다.

체크리스트

  • [ ] 해치를 컨트롤 레이어로 배치했습니다.
  • [ ] 정적 분석 도구 + AI + 인간을 함께 사용했습니다.
  • [ ] 알려진 패턴을 카테고리별로 검색했습니다.
  • [ ] 확인을 통해 오탐지를 제거했습니다.
  • [ ] MEV/비즈니스 로직 등 취약한 영역에서는 인간에게 의존했습니다.
  • [ ] 나는 "깨끗한 청소"를 보장하지 않았습니다.
  • [ ] 나는 국방 목적으로만 일했습니다. 나는 익스플로잇을 만들지 않았습니다.