ton-vulnerability-scanner
작성자 trailofbitston-vulnerability-scanner는 FunC로 작성된 TON 스마트 컨트랙트를 위한 집중형 감사 스킬입니다. 정수-불리언 오용, 가짜 Jetton 컨트랙트 처리, 그리고 TON 전송 시 가스 체크 누락을 식별하는 데 도움이 됩니다. 더 깊은 수동 검토 전에 빠르게 1차 Security Audit를 진행할 때 사용하세요.
이 스킬의 점수는 78/100으로, TON/FunC 컨트랙트를 감사하는 사용자에게 꽤 탄탄한 디렉터리 후보입니다. 구체적인 보안 범위와 명확한 사용 사례가 있고, 패턴 가이드도 충분해 일반적인 프롬프트보다 추측 여지를 줄여 줍니다. 다만 저장소에 설치 명령이나 실행 스크립트가 없어 도입 장벽은 다소 있을 수 있으며, 완전 자동화 도구라기보다 상세한 감사 플레이북에 더 가깝게 보입니다.
- TON/FunC 감사, Jetton 검토, 가스 전송 점검에 바로 적용할 수 있는 명확한 사용 조건이 있고, 언제 쓰면 좋은지도 분명합니다.
- 내용이 탄탄합니다: 본문 길이가 11k+이고, 여러 개의 섹션과 TON 특화 취약점 3가지를 다루는 전용 체크리스트가 있습니다.
- resources/VULNERABILITY_PATTERNS.md의 근거 기반 패턴 라이브러리가 있어 에이전트가 구체적인 실패 모드를 인식하고 컨트랙트를 더 체계적으로 살필 수 있습니다.
- 설치 명령과 스크립트가 없어, 패키지된 실행형 워크플로우보다는 수동 사용 또는 프롬프트 안내용에 가깝습니다.
- 범위가 FunC 기반 TON 스마트 컨트랙트로 좁아, 더 넓은 블록체인 보안 검토나 다중 언어 검토에는 덜 유용합니다.
ton-vulnerability-scanner skill 개요
ton-vulnerability-scanner는 FunC로 작성된 TON 스마트 컨트랙트를 위한 집중형 감사 skill입니다. 일반적인 스마트 컨트랙트 프롬프트가 자주 놓치는 플랫폼 특화 버그를 찾는 데 도움을 주며, 특히 boolean 처리, Jetton 로직, gas forwarding 주변의 문제를 잘 잡아냅니다. 깊은 수동 분석이나 외부 감사에 들어가기 전, 빠른 1차 보안 검토가 필요할 때 쓰기 좋습니다.
이 skill이 가장 잘 맞는 경우
ton-vulnerability-scanner skill은 감사자, 프로토콜 엔지니어, 그리고 배포 전 TON 코드를 검토하는 개발자에게 가장 유용합니다. 컨트랙트의 제어 흐름, 토큰 검증, 메시지 처리 방식이 TON 관례에 맞는지 확인해야 할 때 특히 잘 맞습니다. 범용 코드 리뷰 skill은 아니며, 영향이 큰 TON 실패 모드 몇 가지에 초점을 맞추도록 설계되어 있습니다.
핵심 취약점 초점
이 저장소는 세 가지 핵심 패턴에 집중합니다. 정수를 boolean처럼 잘못 쓰는 문제, 가짜 Jetton 컨트랙트 처리, 그리고 적절한 gas 검증 없이 TON을 전달하는 문제입니다. 이 범위가 중요한 이유는, “버그를 찾아라”라는 넓은 프롬프트보다 훨씬 선명한 신호를 주기 때문입니다. FunC 컨트랙트에 대한 Security Audit가 목적이라면, 이런 식의 좁고 정교한 도구가 맞습니다.
사용하지 말아야 할 경우
FunC가 아닌 스택, 일반적인 EVM 컨트랙트, 또는 TON과 무관한 아키텍처 리뷰에서는 기대만큼 좋은 결과를 얻기 어렵습니다. 스타일 문제를 찾거나, 테스트를 생성하거나, 완전한 형식 검증 감사가 필요하다면 ton-vulnerability-scanner만으로는 범위가 너무 좁습니다. 더 큰 리뷰 워크플로 안에서 쓰는 표적형 scanner로 볼 때 가장 효과적입니다.
ton-vulnerability-scanner skill 사용 방법
설치하고 skill 파일 위치 확인하기
ton-vulnerability-scanner install 단계에서는 디렉터리의 일반적인 skills 흐름을 따르면 됩니다. 예를 들어 npx skills add trailofbits/skills --skill ton-vulnerability-scanner처럼 설치할 수 있습니다. 설치 후에는 먼저 skill의 진입점을 읽고, 그다음 저장소에서 연결된 컨텍스트를 따라가세요. 가장 유용한 시작 파일은 SKILL.md와 resources/VULNERABILITY_PATTERNS.md입니다.
올바른 입력을 넣기
ton-vulnerability-scanner usage 패턴은 구체적인 컨트랙트, 리뷰 목표, 그리고 범위 경계를 함께 줄 때 가장 잘 작동합니다. 좋은 입력은 파일 유형과 보안 질문을 함께 명시합니다. 예를 들면: “contracts/wallet.fc에서 Jetton 전송 검증, boolean 플래그, gas forwarding 위험을 검토해줘.”처럼 쓰는 방식입니다. “이 코드 스캔해줘”처럼 애매한 입력은 얕은 결과로 이어질 가능성이 큽니다.
대략적인 과제를 강한 프롬프트로 바꾸기
ton-vulnerability-scanner guide 개념을 프롬프트 템플릿처럼 활용하세요. 컨트랙트를 식별하고, Jetton인지 wallet인지 transfer handler인지 적고, skill이 무엇을 우선적으로 봐야 하는지 알려주면 됩니다. 예시: “resources/VULNERABILITY_PATTERNS.md에 있는 TON의 세 가지 패턴 기준으로 이 FunC 컨트랙트를 감사해줘. boolean을 잘못 다루거나, Jetton 컨트랙트를 사칭하거나, gas를 확인하지 않고 value를 전달하는 구체적인 라인이나 조건이 있으면 보여줘.” 이런 식의 프롬프트는 일반적인 코멘트가 아니라 패턴 기반 추론을 요청하기 때문에 정확도가 올라갑니다.
실무 워크플로와 먼저 봐야 할 부분
recv_internal, recv_external, 메시지 파싱, 그리고 transfer-notification 로직 같은 컨트랙트 진입점부터 시작하세요. 그다음 boolean 플래그, sender 검증, send_raw_message(), load_msg_addr(), 그리고 coin loading/storing helper가 들어간 호출을 점검합니다. skill을 빠르게 이해하고 싶다면, 저장소 전체 트리보다 resources/VULNERABILITY_PATTERNS.md를 먼저 보는 편이 좋습니다. 이 파일이 scanner가 실제로 찾도록 만들어진 정확한 실패 모드를 보여주기 때문입니다.
ton-vulnerability-scanner skill FAQ
이 skill은 FunC 컨트랙트에만 해당하나요?
네, ton-vulnerability-scanner skill은 FunC로 작성된 TON 컨트랙트, 특히 .fc와 .func 파일을 대상으로 합니다. 프로젝트에 wrapper, test, TypeScript tooling이 있더라도 그것들은 맥락 파악에는 도움이 되지만, 취약점 논리는 컨트랙트 수준에서 판단됩니다. Security Audit 관점에서는 컨트랙트 소스가 핵심 입력입니다.
일반 프롬프트와 무엇이 다른가요?
일반 프롬프트는 “수상한 코드” 정도는 알아볼 수 있지만, ton-vulnerability-scanner는 boolean 진릿값이나 Jetton 메시지 패턴처럼 TON 특유의 가정에 맞춰져 있습니다. 그래서 플랫폼을 이미 잘 모르면 놓치기 쉬운 버그를 찾는 데 더 강합니다. 범용 AI 코드 리뷰어보다 범위는 좁지만, 바로 그 좁음이 장점입니다.
초보자도 사용할 수 있나요?
네, 특정 FunC 컨트랙트를 지정하고 리뷰 목표를 설명할 수 있다면 가능합니다. 초보자는 저장소 전체를 한 번에 완전 감사해 달라고 하기보다, 한 번에 하나의 보안 패스만 요청할 때 가장 좋은 결과를 얻습니다. 가장 큰 제한은 skill의 복잡도가 아니라, 해당 컨트랙트가 skill이 이해하는 TON 패턴을 쓰고 있느냐는 점입니다.
이 skill의 주요 경계는 무엇인가요?
이 skill은 boolean 로직, Jetton 진위 검증, gas-forwarding 위험에 가장 강합니다. 반면 비즈니스 로직 리뷰, 크로스컨트랙트 시스템 설계, TON 메시지 의미론과 무관한 이슈에는 약합니다. 리뷰에 이런 더 넓은 차원이 필요하다면, 더 일반적인 감사 워크플로와 함께 사용하는 것이 좋습니다.
ton-vulnerability-scanner skill 개선 방법
감사 대상이 무엇인지 명확하게 지정하기
더 나은 ton-vulnerability-scanner 결과를 얻으려면, 검토 중인 파일에서 세 가지 패턴 중 무엇이 중요한지 직접 알려주세요. 예를 들어 “transfer notification과 fake Jetton 탐지에 집중해줘”라고 하는 편이 “전부 확인해줘”보다 훨씬 유용합니다. 이렇게 하면 실패 가능성이 높은 코드 경로에 주의를 더 정확히 맞출 수 있습니다.
소스 코드만 주지 말고 컨트랙트 맥락도 함께 제공하기
이 skill은 해당 컨트랙트가 wallet인지, Jetton minter인지, transfer handler인지, receiver인지 알려줄 때 더 잘 작동합니다. 이런 맥락에 따라 boolean, message address, forwarded value를 해석하는 방식이 달라집니다. 이미 기대하는 invariant를 알고 있다면 처음부터 함께 적어두세요. 그래야 scan 결과를 코드 동작과 비교할 수 있습니다.
흔한 실패 모드를 확인하기
가장 큰 실수는 양의 정수를 boolean처럼 쓰는 것, 토큰처럼 보이는 메시지를 검증 없이 신뢰하는 것, 그리고 충분한 gas 규율 없이 TON을 forwarding하는 것입니다. 출력 결과를 볼 때는 각 finding이 구체적인 라인, 특정 조건, 그리고 현실적인 exploit path를 가리키는지 확인하세요. 그렇지 않다면 resources/VULNERABILITY_PATTERNS.md의 패턴 체크리스트를 기준으로 더 엄격하게 재검토해 달라고 요청하는 것이 좋습니다.
코드 발췌와 기대 동작으로 반복 개선하기
첫 결과가 모호하다면, 의심되는 함수를 다시 보내고 의도한 동작을 한 문장으로 적어 주세요. 예를 들어: “이 handler는 기대하는 master contract에서 온 진짜 Jetton transfer notification만 받아야 한다.”처럼 쓰면 됩니다. 이런 후속 질문은 ton-vulnerability-scanner skill이 진짜 양성(true positive)과 TON에서 흔한 패턴을 구분하도록 도와주며, 더 실행 가능한 Security Audit 결과를 얻는 데 도움이 됩니다.
