Κέρδη:
- Ικανότητα κατανόησης ότι η τεχνητή νοημοσύνη διευρύνει το πεδίο εφαρμογής του ελεγκτή, αλλά δεν το αντικαθιστά και είναι χρήσιμο στη σάρωση κατηγοριών και στην εύρεση σύνταξης.
- Η ικανότητα αναγνώρισης ότι η τεχνητή νοημοσύνη έχει χάσει το αρχικό σφάλμα ευπάθειας και επιχειρηματικής λογικής και ότι μια άπταιστη «ασφαλής» δήλωση δεν αποτελεί βεβαιότητα
- Ικανότητα ταξινόμησης ευρημάτων ανάλογα με το επίπεδο σοβαρότητάς τους και κατανόηση ότι η τελική έγκριση και η επαγγελματική ευθύνη ανήκει στον αρμόδιο ελεγκτή.
Ο έλεγχος ασφαλείας (συστηματική εξέταση ενός έξυπνου συμβολαίου για τρωτά σημεία) είναι η πιο υπεύθυνη δουλειά του Web3. Μια μόνο γραμμή που χάνεται από έναν ελεγκτή μπορεί να οδηγήσει σε ζημίες εκατομμυρίων δολαρίων. Σε αυτή την ενότητα θα μάθετε πώς να χρησιμοποιείτε την τεχνητή νοημοσύνη ως βοηθός ελέγχου. Θα μάθουμε από τη δημιουργία ενδείξεων για τη σύνταξη ενός περιγράμματος ευρημάτων. Αλλά η πιο κρίσιμη πρόταση είναι η εξής: Η τεχνητή νοημοσύνη δεν ελέγχει. Είναι ένας βοηθός που ακονίζει το μάτι του ελεγκτή. Η τελική έγκριση ανήκει στον αρμόδιο ελεγκτή που αναλαμβάνει την επαγγελματική ευθύνη.
Γιατί ο έλεγχος είναι κρίσιμος για την ασφάλεια
Μια έκθεση ελέγχου καθησυχάζει το έργο και τους επενδυτές ότι «αυτός ο κώδικας έχει αναθεωρηθεί». Εάν αυτή η διαβεβαίωση είναι ψευδής, οι συνέπειες είναι καταστροφικές: αξιοποιημένο πρωτόκολλο, απώλεια χρηματοδότησης, κατάρρευση έργου. Επομένως, η χρήση της τεχνητής νοημοσύνης στην επιθεώρηση είναι το πιο προσεκτικό μέρος αυτής της ενότητας. Η τεχνητή νοημοσύνη επεκτείνει το πεδίο εφαρμογής του ελεγκτή (ανακαλεί περισσότερα μοτίβα, διαβάζει πιο γρήγορα) αλλά δεν αντικαθιστά τον ελεγκτή.
Γιατί δεν περνάει; Επειδή:
- Το AI δεν μπορεί να δει τη μοναδική/νέα ευπάθεια που δεν υπάρχει στα δεδομένα εκπαίδευσης.
- Η τεχνητή νοημοσύνη συχνά χάνει το ελάττωμα στην επιχειρηματική λογική του πρωτοκόλλου - ότι ο κώδικας είναι τεχνικά σωστός αλλά οικονομικά εκμεταλλεύσιμος.
- Η τεχνητή νοημοσύνη μπορεί να δώσει ψευδείς διαβεβαιώσεις λέγοντας «ασφαλές» σε άπταιστη γλώσσα. Αυτό είναι το πιο επικίνδυνο αποτέλεσμα.
Επίπεδα χρήσης AI στον έλεγχο
1. Αρχική σάρωση και υπενθύμιση μοτίβου. Η τεχνητή νοημοσύνη περνά μέσα από γνωστά μοτίβα ευπάθειας όπως μια λίστα ελέγχου: επανεισαγωγή, έλεγχος πρόσβασης, χειραγώγηση μαντείου, εκ των προτέρων. Αυτό διασφαλίζει ότι ο ελεγκτής δεν χάνει καμία κατηγορία.
2. Επεξήγηση κώδικα. Η εξήγηση μιας σύνθετης λειτουργίας στο AI σε απλή γλώσσα επιτρέπει στον ελεγκτή να κατανοήσει γρήγορα τη λογική. αλλά η περιγραφή συγκρίνεται πάντα με τον κώδικα.
3. Σύνταξη προσχέδιο πορισμάτων. Όταν ο ελεγκτής εντοπίσει μια ευπάθεια, η τεχνητή νοημοσύνη εξοικονομεί χρόνο για τη σύνταξη του προσχέδιου της έκθεσης (περιγραφή, αντίκτυπος, προτεινόμενη λύση).
4. Δημιουργία αντίθετης υπόθεσης. Ρωτήστε το AI "πώς μπορεί να γίνει κατάχρηση αυτής της λειτουργίας;" Το να ρωτάμε «μας θυμίζει την επιθετική προοπτική.
Προσοχή: Ακριβώς επειδή η τεχνητή νοημοσύνη λέει "Δεν βρήκα καμία ευπάθεια σε αυτόν τον κωδικό" ΔΕΝ σημαίνει ότι "αυτός ο κωδικός είναι ασφαλής". Η απόδειξη απουσίας δεν είναι απουσία αποδεικτικών στοιχείων. Το γεγονός ότι το AI δεν μπορεί να βρει κάτι δεν καθιστά περιττό για τον ελεγκτή να εξετάσει αυτήν την περιοχή.
Εύρεση επιπέδων σοβαρότητας
Τα ευρήματα του ελέγχου ταξινομούνται ανάλογα με το επίπεδο σοβαρότητάς τους. Η τεχνητή νοημοσύνη θα πρέπει να χρησιμοποιεί αυτό το πλαίσιο όταν δημιουργεί προσχέδια:
Επίπεδο
Σημασία
παράδειγμα
κριτικό
Απώλεια/κλειδί κεφαλαίου άμεσα δυνατή
Ανάληψη κεφαλαίων με επανείσοδο
ψηλά
Σοβαρές επιπτώσεις υπό ορισμένες συνθήκες
Μη εξουσιοδοτημένη εκτύπωση (νομισματοκοπείο)
μεσαίο
Περιορισμένη επίδραση ή δύσκολη κατάσταση
Μικρή απώλεια με απόκλιση Oracle
χαμηλά
Μικρός κίνδυνος, παράβαση ορθής πρακτικής
Λείπει μετάδοση συμβάντος
Πληροφορίες
Μη ασφάλεια, αναγνωσιμότητα
Έλλειψη NatSpec
Αδύναμη προτροπή / Ισχυρή προτροπή
Αδύναμη προτροπή:
Είναι ασφαλές αυτό το συμβόλαιο;
Αυτή η ερώτηση αναγκάζει την τεχνητή νοημοσύνη να κάνει μια απόλυτη, αδικαιολόγητη κρίση όπως «ναι/όχι» — ακριβώς αυτό που δεν θέλουμε.
Ισχυρή προτροπή:
Ο ρόλος σας: βοηθός ανώτερου ελεγκτή έξυπνων συμβολαίων. Σαρώστε την ακόλουθη σύμβαση για ασφάλεια. Ανατρέξτε στις ακόλουθες κατηγορίες μία προς μία: επανεισαγωγή, έλεγχος πρόσβασης, λειτουργίες ακέραιου αριθμού, επικύρωση εισόδου, oracle/εξωτερικά δεδομένα, εκ των προτέρων, όριο αερίου. Για κάθε ΕΥΡΗΜΑ: (1) σχετική γραμμή κώδικα, (2) αιτία κινδύνου, (3) εκτιμώμενη σοβαρότητα (Κρίσιμη/Υψηλή/Μεσαία/Χαμηλή), (4) πρόταση λύσης. Αυτές είναι ΥΠΟΘΕΣΕΙΣ ΠΡΟΣ ΕΠΙΒΕΒΑΙΩΣΗ. Μην δίνετε «ασφαλή» ετυμηγορία. Σημειώστε τις περιοχές για τις οποίες δεν είστε σίγουροι λέγοντας ξεκάθαρα "να επιβεβαιώσει ο ελεγκτής".
Τέσσερα πρότυπα με δυνατότητα αντιγραφής
1) Περιήγηση βάσει κατηγορίας:
Σαρώστε αυτό το συμβόλαιο για τις ακόλουθες κατηγορίες: επανεισαγωγή, έλεγχος πρόσβασης, υπερχείλιση ακέραιου αριθμού, επικύρωση εισόδου, εξάρτηση μαντείου, εκ των προτέρων, DoS/gas. Για κάθε κατηγορία, πείτε "δεν υπάρχει/δεν υπάρχει κίνδυνος/δεν είμαι σίγουρος" και συνδέστε την αιτιολόγησή σας στη γραμμή του κωδικού. Μην κάνετε τελική κρίση.
2) Αντιυπόθεση από την οπτική γωνία του εισβολέα:
Σκεφτείτε σαν εισβολέας: ποιοι είναι οι τρόποι κατάχρησης αυτής της λειτουργίας; Γράψτε κάθε σενάριο βήμα προς βήμα και υποδείξτε ποιες προϋποθέσεις απαιτούνται. Αυτά τα σενάρια είναι οι υποθέσεις που πρέπει να ελεγχθούν. ΜΗΝ δημιουργείτε πραγματικό κώδικα εκμετάλλευσης, απλώς περιγράψτε τον κίνδυνο.
3) Σχέδιο έκθεσης πορισμάτων:
Αναφέρετε το ακόλουθο επαληθευμένο εύρημα στην επίσημη γλώσσα ελέγχου: τίτλος, σοβαρότητα, περιγραφή, αντίκτυπος, επηρεαζόμενος κώδικας, βήματα για αναπαραγωγή, προτεινόμενη λύση. Χρησιμοποιήστε μετρημένη και τεχνική γλώσσα. υπερβολή. Ας υποθέσουμε ότι το εύρημα επιβεβαιώνεται από τον ελεγκτή, μην κάνετε νέα διαπίστωση.
4) Διορθώστε την επαλήθευση:
Παρακάτω είναι μια ευπάθεια και η επιδιόρθωση που εφαρμόστηκε από τον προγραμματιστή. Εξετάστε εάν η επιδιόρθωση κλείνει πραγματικά την ευπάθεια. σημειώστε εάν δημιουργεί μια νέα παρενέργεια ή ευπάθεια. Μην πεις "κλειστό" σίγουρα? Τέλος με "πρέπει να επιβεβαιωθεί με δοκιμή".
Τρεις μίνι θήκες (σε αριθμούς)
Περίπτωση 1 — Η τεχνητή νοημοσύνη απέτρεψε το hopping κατηγορίας. Ένας ελεγκτής επρόκειτο να επικεντρωθεί σε μια σύμβαση 400 γραμμών και να παρακάμψει την κατηγορία του μαντείου. Η σάρωση κατηγορίας της τεχνητής νοημοσύνης έδωσε μια προειδοποίηση ότι "τα δεδομένα τιμών προέρχονται από μία μόνο πηγή, ανοιχτά σε χειραγώγηση". Ο ελεγκτής το εξέτασε και διαπίστωσε ότι ήταν πράγματι μεσαίου κινδύνου. Μάθημα: Η τεχνητή νοημοσύνη διατηρεί την πειθαρχία κάλυψης.
Περίπτωση 2 — Ψευδής «ασφαλής» διασφάλιση. Μια άλλη ομάδα ρώτησε την AI "είναι αυτό ασφαλές;" ρώτησε? «Δεν φαίνεται να υπάρχει σημαντικό πρόβλημα», είπε η AI. Η επιθεώρηση του πληρώματος ήταν ελαφριά. Στη συνέχεια, ο ανεξάρτητος ελεγκτής βρήκε ένα ελάττωμα επιχειρηματικής λογικής: έναν υπολογισμό που ήταν τεχνικά σωστός αλλά του οποίου τα κίνητρα ήταν εκμεταλλεύσιμα. Μάθημα: Η τεχνητή νοημοσύνη χάνει το σφάλμα επιχειρησιακής λογικής. Δεν μπορεί να τον εμπιστευτεί κανείς να πει «ασφαλής».
Περίπτωση 3 — Κατά τη σύνταξη της έκθεσης εξοικονομήθηκαν 3 ώρες. Ο ελεγκτής περνούσε τη μισή ημέρα αναφέροντας χειροκίνητα 8 ευρήματα. Μόλις έδωσα τα επαληθευμένα ευρήματα στο AI και τύπωσα το επίσημο προσχέδιο, ο χρόνος μειώθηκε κατά ~3 ώρες. Ο ελεγκτής αφιέρωσε χρόνο στην εμβάθυνση. Μάθημα: Η τεχνητή νοημοσύνη είναι ασφαλής και αποτελεσματική στην αναφορά, επειδή τα ευρήματα έχουν ήδη επαληθευτεί από τον άνθρωπο.
Ευπάθεια επιχειρηματικής λογικής: το τυφλό σημείο του AI
Τα πιο ακριβά τρωτά σημεία δεν προέρχονται συχνά από ένα τεχνικό σφάλμα στον κώδικα, αλλά από τη δυνατότητα εκμετάλλευσης της επιχειρηματικής λογικής: στρογγυλοποίηση εκμετάλλευσης ενός λογαριασμού ανταμοιβής, αστραπιαία πειρατεία μιας ψήφου από δάνειο, στιγμιαία χειραγώγηση μιας τιμής. Αυτές είναι περιπτώσεις όπου ο κώδικας λειτουργεί "σωστά" αλλά το πρωτόκολλο μπορεί να εξαπατηθεί οικονομικά. Η τεχνητή νοημοσύνη είναι πιθανό να παραλείψει τέτοια σφάλματα —ειδικά αυτά που σχετίζονται με το πρωτόκολλο. Επομένως, η ανασκόπηση της επιχειρηματικής λογικής είναι ο τομέας της πιο ανθρώπινης έντασης του ελεγκτή και ο λιγότερο εξαρτώμενος από την τεχνητή νοημοσύνη.
Συμβουλή: Ρωτήστε το AI «πώς μπορούν να αξιοποιηθούν τα οικονομικά κίνητρα αυτού του πρωτοκόλλου;» και χρησιμοποιήστε τα σενάρια που εμφανίζονται ως σημείο εκκίνησης — αλλά να θυμάστε ότι εσείς και η ομάδα σας πρέπει να κάνετε την πραγματική ανάλυση.
Συνήθη λάθη
- Ρωτήστε το AI "είναι ασφαλές;" Ζητώντας και εμπιστεύομαι το ναι σας. Δεν απαιτείται απόλυτη κρίση.
- Διακοπή της αναθεώρησης όταν το AI λέει "Δεν μπορούσα να το βρω". Η απουσία δεν είναι απόδειξη.
- Ανάθεση επισκόπησης επιχειρηματικής λογικής στην τεχνητή νοημοσύνη. Είναι το μεγαλύτερο τυφλό σημείο του.
- Μη χρήση ανεξάρτητων εργαλείων (Slither κ.λπ.). Το AI από μόνο του δεν αρκεί.
- Τοποθετώντας το πόρισμα που προέκυψε από το AI στην αναφορά χωρίς να το επαληθεύσετε. Κίνδυνος παραισθήσεων.
- Προσπαθώντας να αναθέσουμε την ευθύνη ελέγχου στην τεχνητή νοημοσύνη. Η ευθύνη ανήκει στον ειδικό.
Συνοπτικά
- Ο έλεγχος είναι κρίσιμος για την ασφάλεια. Το AI διευρύνει το πεδίο εφαρμογής του ελεγκτή αλλά δεν το αντικαθιστά.
- Η τεχνητή νοημοσύνη χάνει το αρχικό σφάλμα ευπάθειας και επιχειρηματικής λογικής. Το να λες "ασφαλές" δεν είναι διαβεβαίωση.
- Τα ευρήματα ταξινομούνται ανάλογα με το επίπεδο σοβαρότητας. Η τεχνητή νοημοσύνη είναι χρήσιμη για τη δημιουργία προσχεδίων.
- Η αντιυπόθεση και ο έλεγχος κατηγοριών διατηρούν την πειθαρχία της ένταξης.
- Η τελική έγκριση και η επαγγελματική ευθύνη βαρύνουν πάντα τον αρμόδιο ελεγκτή.
Εργασία εφαρμογής
Βρείτε ένα δείγμα σύμβασης που περιέχει μια γνωστή ευπάθεια (για εκπαιδευτικούς σκοπούς, παραδείγματα "ευάλωτων συμβάσεων" είναι διαθέσιμα σε ανοιχτό κώδικα). Εφαρμόστε την προτροπή "σάρωση βάσει κατηγορίας" στο AI. Σημειώστε εάν η τεχνητή νοημοσύνη: (1) βρήκε την πραγματική ευπάθεια, (2) παρήγαγε κατασκευασμένα/ψευδή ευρήματα, (3) έκανε απόλυτες κρίσεις όπως "ασφαλές". Στη συνέχεια, συγκρίνετε το με ένα εργαλείο στατικής ανάλυσης.
λίστα ελέγχου
- [ ] Ρωτήστε το AI "είναι ασφαλές;" Αντίθετα, έκανα σάρωση βάσει κατηγορίας.
- [ ] Αντιμετώπισα κάθε εύρημα ως υπόθεση.
- [ ] Έκανα τον έλεγχο επιχειρηματικής λογικής μόνος μου/ομάδα.
- [ ] Το επικύρωσα με ένα ανεξάρτητο εργαλείο στατικής ανάλυσης.
- [ ] Έχω επιβεβαιώσει ότι το AI δεν κατασκευάζει ευρήματα.
- [ ] Ταξινόμησα τα ευρήματα ανάλογα με το επίπεδο σοβαρότητας.
- [ ] Αποδέχτηκα ότι η τελική έγκριση ανήκει στον αρμόδιο ελεγκτή.