단위 3 / 11

스마트 계약 감사 지원: 보안 검토 및 초안 결과

이득:

  • 인공지능이 감사자의 범위를 확장하지만 이를 대체하지는 않으며, 카테고리 스캐닝 및 초안 작성에 유용하다는 것을 이해하는 능력.
  • 인공지능이 원래의 취약성과 비즈니스 로직 오류를 놓쳤으며 유창한 '보안' 진술이 보장이 아니라는 점을 인식할 수 있는 능력
  • 심각도에 따라 조사 결과를 분류하고 최종 승인 및 전문적 책임이 유능한 감사자에게 있음을 이해하는 능력.

보안 감사(취약성에 대한 스마트 계약의 체계적인 조사)는 Web3의 가장 책임 있는 업무입니다. 감사자가 한 줄도 놓치면 수백만 달러의 손실이 발생할 수 있습니다. 이 단원에서는 AI를 감사 보조원으로 사용하는 방법을 배웁니다. 우리는 단서를 생성하는 것부터 결과 개요를 작성하는 것까지 배웁니다. 그러나 가장 중요한 문장은 다음과 같습니다. AI는 통제하지 않습니다. 감사자의 눈을 날카롭게 해주는 조수입니다. 최종 승인은 전문적인 책임을 맡은 유능한 감사관에게 있습니다.

감사가 보안에 중요한 이유

감사 보고서는 "이 코드가 검토되었습니다"라고 프로젝트와 투자자를 안심시킵니다. 이 확신이 거짓이라면 그 결과는 비참합니다: 프로토콜 악용, 자금 손실, 프로젝트 붕괴. 따라서 검사에 AI를 사용하는 것이 이 모듈에서 가장 신중한 부분입니다. AI는 감사자의 범위를 확장하지만(더 많은 패턴을 기억하고 더 빠르게 읽기) 감사자를 대체하지는 않습니다.

왜 통과되지 않습니까? 왜냐하면:

  • AI는 훈련 데이터에 없는 고유하거나 새로운 취약점을 볼 수 없습니다.
  • AI는 프로토콜의 비즈니스 논리에 있는 결함, 즉 코드가 기술적으로는 정확하지만 경제적으로 활용 가능하다는 점을 간과하는 경우가 많습니다.
  • AI는 유창한 언어로 "안전하다"고 말함으로써 잘못된 확신을 줄 수 있습니다. 이것은 가장 위험한 결과입니다.

제어에 AI를 사용하는 계층

1. 초기 스캔 및 패턴 알림. AI는 재진입, 액세스 제어, 오라클 조작, 선행 실행 등 체크리스트와 같은 알려진 취약성 패턴을 거칩니다. 이는 감사자가 어떤 범주도 놓치지 않도록 보장합니다.

2. 코드 설명. AI에게 복잡한 기능을 평이한 언어로 설명하면 감사자가 논리를 빠르게 파악할 수 있습니다. 그러나 설명은 항상 코드와 비교됩니다.

3. 조사 결과 초안 작성. 감사자가 취약점을 발견하면 AI는 보고서 초안(설명, 영향, 제안된 솔루션)을 작성하는 데 시간을 절약합니다.

4. 반가설 생성. AI에게 "이 기능을 어떻게 남용할 수 있나요?"라고 물어보세요. "라고 묻는 것은 공격적인 관점을 연상시킨다.

주의: AI가 "이 코드에서 어떤 취약점도 발견하지 못했습니다"라고 말한다고 해서 "이 코드가 안전하다"는 의미는 아닙니다. 부재의 증거는 증거의 부재가 아닙니다. AI가 무언가를 찾을 수 없다고 해서 감사관이 해당 영역을 조사하는 것이 불필요한 것은 아닙니다.

심각도 수준 찾기

감사 결과는 심각도 수준에 따라 분류됩니다. AI는 초안을 생성할 때 이 프레임워크를 사용해야 합니다.

레벨

의미

중요한

자금 손실/폐쇄 직접 가능

재진입으로 자금 인출

높다

특정 조건에서 심각한 영향

무단인쇄(민트)

중간

제한된 영향 또는 어려운 조건

Oracle 편차로 인한 작은 손실

낮음

사소한 위험, 모범 사례 위반

누락된 이벤트 방송

정보

비보안, 가독성

NatSpec 부족

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

약한 프롬프트:

이 계약은 안전한가요?

이 질문은 AI가 "예/아니요"와 같은 절대적이고 부당한 판단, 즉 정확히 우리가 원하지 않는 판단을 내리도록 강요합니다.

강력한 프롬프트:

귀하의 역할: 수석 스마트 계약 감사자의 보조자. 보안을 위해 다음 계약을 스캔하십시오. 재진입, 액세스 제어, 정수 연산, 입력 유효성 검사, 오라클/외부 데이터, 선행 실행, 가스 제한 등 다음 범주를 하나씩 살펴보세요. 각 결과에 대해: (1) 관련 코드 줄, (2) 원인 위험, (3) 예상 심각도(심각/높음/보통/낮음), (4) 솔루션 제안. 이는 확인되어야 할 가설입니다. "안전한" 평결을 내리지 마십시오. 확신할 수 없는 부분에는 "감사관이 확인하도록 하십시오"라고 명확하게 표시하십시오.

복사 가능한 템플릿 4개

1) 카테고리 기반 검색:

이 계약을 스캔하여 재진입, 액세스 제어, 정수 오버플로, 입력 검증, 오라클 종속성, 전면 실행, DoS/가스 카테고리를 확인하세요. 각 범주에 대해 "위험이 있습니다/위험이 없습니다/확실하지 않습니다"라고 말하고 근거를 코드 줄에 연결하세요. 최종 판단을 내리지 마십시오.

2) 공격자의 관점에서 본 반가설:

공격자처럼 생각하십시오. 이 기능을 남용하는 방법은 무엇입니까? 각 시나리오를 단계별로 작성하고 필요한 조건을 나타냅니다. 이러한 시나리오는 테스트할 가설입니다. 실제 익스플로잇 코드를 생성하지 말고 위험을 설명하세요.

3) 결과 보고서 초안:

제목, 심각도, 설명, 영향, 영향을 받은 코드, 재현 단계, 제안된 솔루션 등 확인된 발견 사항을 공식 감사 언어로 보고합니다. 측정된 기술 언어를 사용합니다. 과장. 조사 결과가 감사인에 의해 확인되었다고 가정하고 새로운 조사 결과를 만들어내지 마십시오.

4) 확인 수정:

아래는 개발자가 적용한 취약점과 수정 사항입니다. 수정 사항이 실제로 취약점을 해결하는지 확인하십시오. 새로운 부작용이나 취약점을 생성하는지 여부를 표시합니다. 확실히 "폐쇄"라고 말하지 마세요. "테스트를 통해 확인해야 합니다"로 끝납니다.

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

사례 1 - AI가 카테고리 호핑을 방지했습니다. 감사자는 400라인 계약에 집중하고 오라클 범주를 건너뛰려고 했습니다. AI의 카테고리 스캔은 "가격 데이터는 단일 소스에서 나온 것이며 조작 가능성이 있다"는 경고를 표시했습니다. 감사인은 이를 조사한 결과 실제로 중간 위험이라는 것을 확인했습니다. 교훈: AI는 적용 범위 규율을 유지합니다.

사례 2 — 잘못된 "안전" 보장. 또 다른 팀은 AI에게 “이거 안전한가요?”라고 물었다. 그는 물었다; AI는 “큰 문제는 없어 보인다”고 말했다. 승무원 점검은 가벼웠습니다. 그런 다음 독립 감사관은 비즈니스 논리 결함, 즉 기술적으로는 정확했지만 인센티브를 활용할 수 있는 계산을 발견했습니다. 교훈: AI가 비즈니스 로직 오류를 놓쳤습니다. 그는 "안전하다"고 말하는 것을 믿을 수 없습니다.

사례 3 - 보고서 초안 작성에 3시간이 절약되었습니다. 감사자는 8개의 발견 사항을 수동으로 보고하는 데 반나절을 소비했습니다. 검증된 결과를 AI에 제공하고 공식 초안을 인쇄한 후에는 시간이 ~3시간 단축되었습니다. 감사자는 심화에 시간을 할애했습니다. 교훈: AI는 결과가 이미 인간에 의해 검증되었기 때문에 안전하고 효율적으로 보고합니다.

비즈니스 로직 취약점: AI의 사각지대

가장 비용이 많이 드는 취약점은 코드의 기술적 오류가 아니라 비즈니스 로직의 악용 가능성(보상 계정의 반올림 악용, 투표의 플래시 대출 하이재킹, 즉각적인 가격 조작)에서 발생하는 경우가 많습니다. 이는 코드가 "올바르게" 작동하지만 프로토콜이 경제적으로 속일 수 있는 경우입니다. AI는 이러한 오류, 특히 프로토콜 관련 오류를 놓칠 가능성이 높습니다. 따라서 비즈니스 로직 검토는 감사관이 가장 인간 집약적인 영역이며 AI에 대한 의존도가 가장 낮은 영역입니다.

힌트: AI에게 "이 프로토콜의 경제적 인센티브를 어떻게 활용할 수 있습니까?"라고 물어보세요. 그리고 나오는 시나리오를 시작점으로 사용하세요. 그러나 실제 분석은 귀하와 귀하의 팀이 수행해야 한다는 점을 기억하십시오.

일반적인 실수

  • AI에게 "안전한가요?"라고 물어보세요. 당신의 예를 묻고 신뢰하십시오. 절대적인 판단은 필요하지 않습니다.
  • AI가 "찾을 수 없습니다"라고 하면 리뷰를 중단합니다. 부재는 증거가 아닙니다.
  • 비즈니스 로직 검토를 AI에 위임합니다. 그의 가장 큰 사각지대다.
  • 독립적인 도구(Slither 등)를 사용하지 않습니다. AI만으로는 충분하지 않습니다.
  • AI가 만들어낸 결과를 검증하지 않고 보고서에 넣는 것. 환각의 위험이 있습니다.
  • AI에 통제 책임을 부여하려고 합니다. 책임은 전문가에게 있습니다.

요약하면

  • 감사는 안전에 매우 중요합니다. AI는 감사인의 범위를 확장하지만 대체하지는 않습니다.
  • AI는 원래의 취약점과 비즈니스 로직 버그를 놓칩니다. "안전하다"고 말하는 것은 보증이 아닙니다.
  • 조사 결과는 심각도 수준에 따라 분류됩니다. AI는 초안을 생성하는 데 유용합니다.
  • 반가설과 범주 선별은 포함 규율을 유지합니다.
  • 최종 승인과 전문적 책임은 항상 유능한 감사자에게 있습니다.

응용과제

알려진 취약성을 포함하는 샘플 계약을 찾으십시오(교육 목적으로 "취약한 계약"의 예는 오픈 소스에서 사용 가능). AI에 "범주 기반 검색" 프롬프트를 적용합니다. AI가 (1) 실제 취약점을 발견했는지, (2) 조작된/거짓 결과를 생성했는지, (3) "안전함"과 같은 절대적 판단을 내렸는지 확인하십시오. 그런 다음 정적 분석 도구와 비교해 보세요.

체크리스트

  • [ ] AI에게 "안전합니까?"라고 물어보세요. 대신 카테고리 기반 스캔을 사용했습니다.
  • [ ] 나는 각 결과를 하나의 가설로 간주했습니다.
  • [ ] 비즈니스 로직 검토를 직접/팀에서 수행했습니다.
  • [ ] 독립적인 정적 분석 도구를 사용하여 교차 검증했습니다.
  • [ ] AI가 조사 결과를 조작하지 않는 것을 확인했습니다.
  • [ ] 심각도에 따라 결과를 분류했습니다.
  • [ ] 본인은 최종 승인이 담당 감사관에게 있음을 인정했습니다.