
Scout은 Soroban Stellar Smart Contract 개발자 및 감사인이 모범 사례에서 일반적인 보안 문제와 편차를 감지하는 데 도움이되는 확장 가능한 오픈 소스 도구입니다.
이 도구는 개발자가 안전하고 강력한 스마트 계약을 작성하는 데 도움이됩니다.
이 프로젝트에 대한 우리의 관심은 다른 블록 체인의 수동 감사 및 취약성 탐지 경험에서 비롯됩니다 (잉크 스카우트 참조).
스카우트 감사 설치 :
화물이 컴퓨터에 설치되어 있는지 확인하십시오. 그런 다음 다음 명령으로 스카우트를 설치하십시오.
cargo install cargo-scout-audit스카우트 감사 실행 :
프로젝트에서 스카우트를 실행하려면 다음 명령을 실행하십시오.
cargo scout-audit스카우트는화물 작업 공간을 지원합니다. 작업 공간에서 실행되면 스카우트는 작업 공간의 구성원으로 지정된 모든 패키지에서 실행됩니다.
설치 및 사용에 대한 자세한 내용은 아래 문서 섹션의 시작 섹션을 참조하십시오.
현재 스카우트에는 다음 탐지기가 포함되어 있습니다.
| 탐지기 ID | 그것이 감지하는 것 | 테스트 사례 | 심각성 |
|---|---|---|---|
| 다소 분열적으로 나눕니다 | 곱하기 전에 분할 작업을 수행하여 정밀도가 손실됩니다. | 1, 2, 3 | 중간 |
| 안전하지 않은 wrap | UNWRAP 방법의 부적절한 사용으로 예상치 못한 프로그램 충돌이 발생합니다. | 1 | 중간 |
| 안전하지 않은 표현 | 기대 방법의 부적절한 사용으로 예상치 못한 프로그램 충돌이 발생합니다. | 1 | 중간 |
| 오버플로 체크 | 산술 작동은 변수에 할당 된 사용 가능한 메모리를 넘치거나 언더 플로우입니다. | 1 | 비판적인 |
| 불충분 한 랜덤 값 | 조작을 방지하기 위해 임의의 숫자 생성에 블록 속성을 사용하지 마십시오. | 1 | 비판적인 |
| 보호되지 않은 업데이트-전류-계약 웨이스트 | 사용자가 update_current_contract_wasm() 호출 할 수있는 경우 의도적으로 계약 동작을 수정할 수 있습니다. | 1 | 비판적인 |
| 코어 메모 포 게트를 피하십시오 | core::mem::forget() 의 사용은 메모리 누출과 논리 오류로 이어질 수 있습니다. | 1 | 상승 |
| 계약 저장소 | env.storage() 메소드에서 액세스 제어가 충분하지 않습니다. | 1, 2, 3 | 비판적인 |
| 피를 피하십시오 | 서술 적 열거를 사용하는 대신 오류에 대한 공황 코드. | 1 | 상승 |
| 피를 피하십시오 | 위험에 안전하지 않은 블록을 사용하면 코드 안전 및 안정성이 있습니다. | 1 | 비판적인 |
| dos-unbounded-operation | 무한 운영으로 인한 DOS. | 1, 2, 3 | 중간 |
| 소로 반-버전 | 구형 버전의 소로 반을 사용하는 것은 버그 나 보안 문제가있을 수 있으므로 위험 할 수 있습니다. 사용 가능한 최신 버전을 사용하십시오. | 1 | 상승 |
| 사용되지 않은 퇴색 성 | 함수의 반환 열거는 완전히 사용되지 않습니다. | 1, 2 | 미성년자 |
| 반복자-인덱싱 | 하드 코딩 된 인덱스로 반복하는 것은 반복자를 사용하는 것보다 느립니다. 또한 인덱스가 한계를 벗어난 경우 당황합니다. | 1 | 상승 |
| assert-violation | 매크로 어설 싱의 사용을 피하십시오!, 그것은 당황 할 수 있습니다. | 1 | 상승 |
| 보호되지 않은 매핑 수용 | 사용자가 제공 한 임의의 키로 맵핑을 수정하는 것은 상당한 취약성이 될 수 있습니다. | 1, 2 | 비판적인 |
| DOS-Unexpected-Revert-with-Vector | 부적절한 저장으로 인한 DOS. | 1, 2 | 중간 |
| 무제한 전송-- | 사용자 정의 매개 변수를 전송에서 from 로 전달하지 마십시오. | 1 | 비판적인 |
| 안전하지 않은 맵시 | 소로 반에서 Map 에 대한 get 메소드의 부적절한 사용 | 1 | 중간 |
| 제로 또는 테스트 주소 | 계약 관리 손실을 방지하기 위해 0 또는 테스트 주소 할당을 피하십시오. | 1 | 중간 |
| 부정확 한 것입니다 | '^´의 잘못된 사용에 대해 경고합니다. | 1 | 비판적인 |
귀하의 요구에 가장 적합한 출력 형식을 선택할 수 있습니다. 스카우트는 HTML, Markdown, JSON, PDF 및 SARIF 보고서를 제공합니다. 원하는 출력을 지정하려면 다음 명령을 실행합니다.
cargo scout-audit --output-format [html|md|pdf|json|sarif]
HTML 보고서

스카우트 대 코드 확장으로 개발 작업 공간에 스카우트를 추가하여 파일을 저장할 때 스카우트를 자동으로 실행하십시오.

팁 : 코드에서 강조 표시된 오류를 보려면 오류 렌즈 확장을 설치하는 것이 좋습니다.
Visual Studio Marketplace에서 Scout 대 코드를 다운로드하십시오.
스카우트를 CI/CD 파이프 라인에 통합하십시오! 타겟팅 된 스마트 계약에 대해 도구를 자동으로 실행합니다. 이 즉각적인 피드백 루프를 통해 개발자는 코드를 메인 브랜치로 병합하기 전에 모든 문제를 신속하게 해결하여 버그 나 취약점을 도입 할 위험이 줄어 듭니다.
풀 요청에서 주석으로 스카우트 출력

Github Marketplace에서 Scout Github 액션을 찾으십시오.
스카우트를 설치하고 실행하는 방법을 배우는 흥미로운 일련의 비디오 자습서에 참여하십시오. 도구에서 감지 한 특정 문제를 식별하고 해결하는 방법을 알아 내고 전문가지도를 통해 기술을 향상시킵니다.
? 더 많은 비디오가 곧 커밋됩니다!
도구를 검증하기 위해 테스트 케이스 폴더에있는 코드 예제 세트를 제공합니다.
통합 테스트를 실행하려면 apps/cargo-scout-audit 로 이동하여 실행하십시오.
cargo test --all --all-features 특정 테스트 사례에 대한 테스트를 실행하려면 특정 테스트 사례 폴더에서 동일한 명령을 실행하십시오 (예 : test-cases/divide-before-multiply/divide-before-multiply-1 ).
아래 문서 링크를 따르고 스카우트가 감지 한 취약점, 도구 작동 방식 및 프로젝트에 기여하는 방법에 대해 자세히 알아보십시오!
Scout for Soroban은 Coinfabrik의 연구 개발 팀이 개발 한 오픈 소스 취약성 분석기입니다.
우리는 Stellar Community Fund (SCF)의 보조금을 통해 지원을 받았습니다.
우리 - Coinfabrik-는 사이버 보안에 대한 강력한 배경 지식을 가진 Web3를 전문으로하는 연구 개발 회사입니다. 2014 년에 설립 된 우리는 180 개가 넘는 블록 체인 관련 프로젝트, EVM 기반 및 Solana, Algorand, Stellar 및 Polkadot에서 작업했습니다. 개발 외에도 우리는 현재 기판, 견고성, 선명도, 녹, 청록 및 스텔라 소로반의 코드를 연구하고있는 수석 사이버 보안 전문가로 구성된 전용 사내 팀을 통해 보안 감사를 제공합니다.
우리 팀은 컴퓨터 과학 및 수학에 대한 학문적 배경을 가지고 있으며, 학술 간행물, 특허가 제품으로 전환 된 특허, 컨퍼런스 프레젠테이션을 포함한 사이버 보안 및 소프트웨어 개발에 중점을 둔 업무 경험이 있습니다. 또한, 우리는 Buenos University of Buenos Aires와의 지식 이전 및 오픈 소스 프로젝트에 대한 지속적인 협력을 가지고 있습니다.
스카우트는 MIT 라이센스에 따라 라이센스 및 배포되었습니다. 약관에 대한 예외를 찾고 있다면 저희에게 연락하십시오.