Είμαστε έτοιμοι για κώδικα που δημιουργείται από AI; Ευφυΐα Δεδομένων PlatoBlockchain. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Είμαστε έτοιμοι για κώδικα που δημιουργείται από AI;

Τους τελευταίους μήνες, έχουμε θαυμάσει την ποιότητα των προσώπων που δημιουργούνται από υπολογιστή, των εικόνων από γάτες, των βίντεο, των δοκιμίων, ακόμη και της τέχνης. Η τεχνητή νοημοσύνη (AI) και η μηχανική μάθηση (ML) έχουν επίσης διολισθήσει αθόρυβα στην ανάπτυξη λογισμικού, με εργαλεία όπως GitHub Copilot, Tabnine, Polycode, και άλλοι κάνοντας το λογικό επόμενο βήμα της τοποθέτησης της υπάρχουσας λειτουργίας αυτόματης συμπλήρωσης κώδικα σε στεροειδή AI. Σε αντίθεση με τις φωτογραφίες γάτας, ωστόσο, η προέλευση, η ποιότητα και η ασφάλεια του κώδικα εφαρμογής μπορεί να έχουν εκτεταμένες επιπτώσεις - και τουλάχιστον για την ασφάλεια, η έρευνα δείχνει ότι ο κίνδυνος είναι πραγματικός.

Πριν ακαδημαϊκή έρευνα έχει ήδη δείξει ότι το GitHub Copilot συχνά δημιουργεί κώδικα με τρωτά σημεία ασφαλείας. Πιο πρόσφατα, η πρακτική ανάλυση από τον μηχανικό ασφαλείας του Invicti Kadir Arslan το έδειξε αυτό ανασφαλείς προτάσεις κωδικών εξακολουθούν να είναι ο κανόνας παρά η εξαίρεση με το Copilot. Ο Arslan διαπίστωσε ότι οι προτάσεις για πολλές κοινές εργασίες περιελάμβαναν μόνο τα απόλυτα γυμνά οστά, συχνά ακολουθώντας την πιο βασική και λιγότερο ασφαλή διαδρομή, και ότι η αποδοχή τους χωρίς τροποποίηση θα μπορούσε να οδηγήσει σε λειτουργικές αλλά ευάλωτες εφαρμογές.

Ένα εργαλείο όπως το Copilot είναι η αυτόματη συμπλήρωση (από τη σχεδίαση) άνοιξε μια εγκοπή, εκπαιδευμένο σε κώδικα ανοιχτού κώδικα για να προτείνει αποσπάσματα που θα μπορούσαν να είναι σχετικά σε παρόμοιο πλαίσιο. Αυτό καθιστά την ποιότητα και την ασφάλεια των προτάσεων στενά συνδεδεμένη με την ποιότητα και την ασφάλεια του σετ εκπαίδευσης. Έτσι, τα μεγαλύτερα ερωτήματα δεν αφορούν το Copilot ή οποιοδήποτε άλλο συγκεκριμένο εργαλείο, αλλά γενικά για τον κώδικα λογισμικού που δημιουργείται από AI.

Είναι λογικό να υποθέσουμε ότι το Copilot είναι μόνο η κορυφή του δόρατος και ότι παρόμοιες γεννήτριες θα γίνουν συνηθισμένες τα επόμενα χρόνια. Αυτό σημαίνει ότι εμείς, η βιομηχανία της τεχνολογίας, πρέπει να αρχίσουμε να ρωτάμε πώς παράγεται τέτοιος κώδικας, πώς χρησιμοποιείται και ποιος θα αναλάβει την ευθύνη όταν τα πράγματα πάνε στραβά.

Σύνδρομο Satnav

Η αυτόματη συμπλήρωση παραδοσιακού κώδικα που αναζητά ορισμούς συναρτήσεων για να συμπληρώσει τα ονόματα των συναρτήσεων και να σας υπενθυμίζει ποια ορίσματα χρειάζεστε είναι μια τεράστια εξοικονόμηση χρόνου. Επειδή αυτές οι προτάσεις είναι απλώς μια συντόμευση για να αναζητήσετε τα έγγραφα για τον εαυτό σας, έχουμε μάθει να εμπιστευόμαστε σιωπηρά οτιδήποτε προτείνει το IDE. Μόλις έρθει ένα εργαλείο που λειτουργεί με τεχνητή νοημοσύνη, οι προτάσεις του δεν είναι πλέον εγγυημένο ότι είναι σωστές — αλλά εξακολουθούν να αισθάνονται φιλικές και αξιόπιστες, επομένως είναι πιο πιθανό να γίνουν αποδεκτές.

Ειδικά για λιγότερο έμπειρους προγραμματιστές, η ευκολία απόκτησης ενός δωρεάν μπλοκ κώδικα ενθαρρύνει μια αλλαγή νοοτροπίας από το "Είναι αυτός ο κώδικας αρκετά κοντά σε αυτό που θα έγραφα" στο "Πώς μπορώ να τροποποιήσω αυτόν τον κώδικα ώστε να λειτουργεί για μένα".

Το GitHub δηλώνει πολύ ξεκάθαρα ότι οι προτάσεις Copilot θα πρέπει πάντα να αναλύονται, να εξετάζονται και να δοκιμάζονται προσεκτικά, αλλά η ανθρώπινη φύση υπαγορεύει ότι ακόμη και ο υποπαραγωγικός κώδικας θα τις κάνει περιστασιακά σε παραγωγή. Είναι λίγο σαν να οδηγείς ενώ κοιτάς περισσότερο το GPS σου παρά το δρόμο.

Ζητήματα ασφάλειας εφοδιαστικής αλυσίδας

Η Κρίση ασφαλείας Log4j έχει φέρει στο προσκήνιο την ασφάλεια της εφοδιαστικής αλυσίδας λογισμικού και, συγκεκριμένα, την ασφάλεια ανοιχτού κώδικα, με μια πρόσφατη Υπόμνημα του Λευκού Οίκου σχετικά με την ασφαλή ανάπτυξη λογισμικού και ένα νέο νομοσχέδιο για τη βελτίωση της ασφάλειας ανοιχτού κώδικα. Με αυτές και άλλες πρωτοβουλίες, η ύπαρξη οποιουδήποτε ανοιχτού κώδικα στις εφαρμογές σας θα πρέπει σύντομα να εγγραφεί σε ένα λογαριασμό υλικού λογισμικού (SBOM), κάτι που είναι δυνατό μόνο εάν εν γνώσει σας συμπεριλάβετε μια συγκεκριμένη εξάρτηση. Τα εργαλεία ανάλυσης σύνθεσης λογισμικού (SCA) βασίζονται επίσης σε αυτή τη γνώση για τον εντοπισμό και την επισήμανση ξεπερασμένων ή ευάλωτων στοιχείων ανοιχτού κώδικα.

Τι γίνεται όμως αν η εφαρμογή σας περιλαμβάνει κώδικα που δημιουργείται από AI που, τελικά, προέρχεται από ένα εκπαιδευτικό σύνολο ανοιχτού κώδικα; Θεωρητικά, εάν έστω και μία ουσιαστική πρόταση είναι πανομοιότυπη με τον υπάρχοντα κώδικα και γίνει αποδεκτή ως έχει, θα μπορούσατε να έχετε ανοιχτό κώδικα στο λογισμικό σας αλλά όχι στο SBOM σας. Αυτό θα μπορούσε να οδηγήσει σε ζητήματα συμμόρφωσης, για να μην αναφέρουμε την πιθανότητα ευθύνης εάν ο κωδικός αποδειχθεί ανασφαλής και οδηγήσει σε παραβίαση — και η SCA δεν θα σας βοηθήσει, καθώς μπορεί να βρει μόνο ευάλωτες εξαρτήσεις, όχι ευπάθειες στον δικό σας κωδικό .

Παγίδες αδειοδότησης και απόδοσης

Συνεχίζοντας αυτό το τρένο σκέψης, για να χρησιμοποιήσετε κώδικα ανοιχτού κώδικα, πρέπει να συμμορφωθείτε με τους όρους αδειοδότησης του. Ανάλογα με τη συγκεκριμένη άδεια ανοιχτού κώδικα, θα πρέπει τουλάχιστον να παράσχετε αναφορά ή μερικές φορές να απελευθερώσετε τον δικό σας κώδικα ως ανοιχτού κώδικα. Ορισμένες άδειες απαγορεύουν εντελώς την εμπορική χρήση. Όποια και αν είναι η άδεια χρήσης, πρέπει να γνωρίζετε από πού προέρχεται ο κωδικός και πώς αδειοδοτείται.

Και πάλι, τι γίνεται αν έχετε κώδικα που δημιουργείται από AI στην εφαρμογή σας που τυχαίνει να είναι πανομοιότυπος με τον υπάρχοντα κώδικα ανοιχτού κώδικα; Εάν κάνατε έλεγχο, θα διαπίστωνε ότι χρησιμοποιείτε κώδικα χωρίς την απαιτούμενη απόδοση; Ή μήπως χρειάζεται να ανοίξετε κώδικα κάποιου εμπορικού σας κώδικα για να παραμείνετε συμβατοί; Ίσως αυτό να μην είναι ακόμη ένας ρεαλιστικός κίνδυνος με τα τρέχοντα εργαλεία, αλλά αυτές είναι οι ερωτήσεις που θα έπρεπε να κάνουμε όλοι σήμερα, όχι σε 10 χρόνια. (Και για να είμαστε σαφείς, το GitHub Copilot διαθέτει ένα προαιρετικό φίλτρο για να αποκλείει προτάσεις που ταιριάζουν με τον υπάρχοντα κώδικα για την ελαχιστοποίηση των κινδύνων της εφοδιαστικής αλυσίδας.)

Βαθύτερες συνέπειες για την ασφάλεια

Επιστρέφοντας στην ασφάλεια, ένα μοντέλο AI/ML είναι τόσο καλό (και τόσο κακό) όσο το σετ εκπαίδευσής του. Το έχουμε δει στο παρελθόν - για παράδειγμα, σε περιπτώσεις αλγόριθμοι αναγνώρισης προσώπου που δείχνουν φυλετικές προκαταλήψεις λόγω των δεδομένων στα οποία εκπαιδεύτηκαν. Έτσι, εάν έχουμε έρευνα που δείχνει ότι μια γεννήτρια κώδικα παράγει συχνά προτάσεις χωρίς να λαμβάνει υπόψη την ασφάλεια, μπορούμε να συμπεράνουμε ότι αυτό ήταν το σύνολο εκμάθησής της (δηλαδή, ο κώδικας που ήταν διαθέσιμος στο κοινό). Και τι θα συμβεί εάν ο ανασφαλής κώδικας που δημιουργείται από AI τροφοδοτείται ξανά σε αυτήν τη βάση κώδικα; Μπορούν ποτέ οι προτάσεις να είναι ασφαλείς;

Οι ερωτήσεις ασφαλείας δεν σταματούν εκεί. Εάν οι γεννήτριες κώδικα που βασίζονται σε AI αποκτήσουν δημοτικότητα και αρχίσουν να αντιπροσωπεύουν ένα σημαντικό ποσοστό νέου κώδικα, είναι πιθανό κάποιος να προσπαθήσει να τους επιτεθεί. Είναι ήδη δυνατό να ξεγελάσετε την αναγνώριση εικόνας AI δηλητηριάζοντας το σύνολο εκμάθησής της. Αργά ή γρήγορα, κακόβουλοι ηθοποιοί θα προσπαθήσουν να βάλουν μοναδικά ευάλωτο κώδικα σε δημόσια αποθετήρια με την ελπίδα ότι θα εμφανιστεί σε προτάσεις και τελικά θα καταλήξει σε μια εφαρμογή παραγωγής, ανοίγοντάς τον σε μια εύκολη επίθεση.

Και τι γίνεται με τη μονοκαλλιέργεια; Εάν πολλές εφαρμογές καταλήξουν να χρησιμοποιούν την ίδια εξαιρετικά ευάλωτη πρόταση, όποια και αν είναι η προέλευσή της, θα μπορούσαμε να εξετάζουμε επιδημίες ευπάθειας ή ίσως ακόμη και ευπάθειες ειδικά για την τεχνητή νοημοσύνη.

Παρακολουθώντας το AI

Μερικά από αυτά τα σενάρια μπορεί να φαίνονται τραβηγμένα σήμερα, αλλά είναι όλα πράγματα που εμείς στη βιομηχανία της τεχνολογίας πρέπει να συζητήσουμε. Και πάλι, το GitHub Copilot βρίσκεται στο επίκεντρο μόνο επειδή αυτή τη στιγμή πρωτοπορεί και το GitHub παρέχει σαφείς προειδοποιήσεις σχετικά με τις επιφυλάξεις των προτάσεων που δημιουργούνται από την τεχνητή νοημοσύνη. Όπως συμβαίνει με την αυτόματη συμπλήρωση στο τηλέφωνό σας ή τις προτάσεις διαδρομής στο satnav σας, είναι μόνο συμβουλές για να κάνουμε τη ζωή μας πιο εύκολη και εναπόκειται σε εμάς να τις πάρουμε ή να τις αφήσουμε.

Με τις δυνατότητές τους να βελτιώνουν εκθετικά την αποδοτικότητα ανάπτυξης, οι παραγωγοί κώδικα που βασίζονται σε AI είναι πιθανό να γίνουν μόνιμο μέρος του κόσμου του λογισμικού. Όσον αφορά την ασφάλεια εφαρμογών, ωστόσο, αυτή είναι μια ακόμη πηγή δυνητικά ευάλωτου κώδικα που πρέπει να περάσει αυστηρές δοκιμές ασφαλείας πριν επιτραπεί στην παραγωγή. Εξετάζουμε έναν ολοκαίνουργιο τρόπο για να εισάγουμε ευπάθειες (και δυνητικά μη ελεγμένες εξαρτήσεις) απευθείας στον κωδικό πρώτου κατασκευαστή, επομένως είναι λογικό να αντιμετωπίζουμε τις βάσεις κώδικα που έχουν επαυξηθεί με τεχνητή νοημοσύνη ως μη αξιόπιστες μέχρι να δοκιμαστούν — και αυτό σημαίνει ότι δοκιμάζουμε τα πάντα όσο συχνά μπορώ.

Ακόμη και σχετικά διαφανείς λύσεις ML όπως το Copilot εγείρουν ήδη ορισμένα νομικά και ηθικά ερωτήματα, για να μην αναφέρουμε ανησυχίες για την ασφάλεια. Φανταστείτε όμως ότι μια μέρα, κάποιο νέο εργαλείο αρχίζει να δημιουργεί κώδικα που λειτουργεί τέλεια και περνάει δοκιμές ασφαλείας, εκτός από μια μικροσκοπική λεπτομέρεια: Κανείς δεν ξέρει πώς λειτουργεί. Τότε είναι που ήρθε η ώρα του πανικού.

Σφραγίδα ώρας:

Περισσότερα από Σκοτεινή ανάγνωση