1 00:00:00,000 --> 00:00:05,600 Σήμερα λοιπόν θα παρουσιάσουμε κάτι διαφορετικό. Τις περισσότερες φορές παρουσιάζω ethical hacking, 2 00:00:05,600 --> 00:00:12,320 red teaming, capture the flag και τεχνικά θέματα γύρω από αυτά. Τελευταία προσπάθησα να αναθεωρήσω κάποια από τα 3 00:00:12,320 --> 00:00:19,280 μαθήματά μου ώστε να απευθύνονται σε κοινό της πληροφορικής, τους απλούς ανθρώπους του IT που δεν θέλουν 4 00:00:19,280 --> 00:00:24,320 απαραίτητα να μεταπηδήσουν στην κυβερνοασφάλεια, αλλά θέλουν να μάθουν κάποια βασικά θεμελιώδη πράγματα 5 00:00:24,320 --> 00:00:30,960 για την ασφάλεια. Στο παρελθόν η κρυπτογραφία και τα σχήματα κρυπτογράφησης ήταν τα βασικά. Τελευταία αυτά 6 00:00:30,960 --> 00:00:38,320 άλλαξαν, οπότε νομίζω ότι αυτή τη στιγμή για τους προγραμματιστές είναι σημαντικό να συμπεριλάβουν την οπτική της ασφάλειας 7 00:00:38,320 --> 00:00:43,760 στην ανάπτυξή τους. Φυσικά δεν θέλουμε να τους βάλουμε πολύ κόπο, έξτρα προσπάθεια, επιπλέον 8 00:00:43,760 --> 00:00:50,560 προσπάθεια για να κάνουν τη δουλειά τους, αλλά είναι σημαντικό γιατί αργότερα θα είναι πολύ δύσκολο να 9 00:00:51,440 --> 00:00:58,240 καλυφθούν οι ευπάθειες και ούτω καθεξής. Σε αυτή την προοπτική, ποιοι από εσάς 10 00:00:58,240 --> 00:01:05,920 έχετε ήδη λογαριασμό στο github; Πάνω από τους μισούς. Ωραία, πόσοι από εσάς 11 00:01:05,920 --> 00:01:11,600 έχετε δει μια καρτέλα, όχι κρυφή, ονομάζεται... υπάρχει μια καρτέλα, ας σας δείξω, 12 00:01:12,560 --> 00:01:22,320 security στο github. Υπάρχουν κάποιοι από εσάς, ωραία, ας σας δείξω γρήγορα, είναι αυτή η καρτέλα εδώ, 13 00:01:23,200 --> 00:01:33,760 βλέπετε, δεν είναι κρυφή, αλλά κανονικά πολύ λίγοι κάνουν κλικ σε αυτό το κουμπί της ασφάλειας. 14 00:01:34,560 --> 00:01:40,240 Σήμερα λοιπόν θα εξηγήσουμε τι κάνει πραγματικά αυτό το κουμπί, αυτό είναι το νόημα, εντάξει; 15 00:01:40,960 --> 00:01:42,480 Ας επιστρέψουμε εδώ. 16 00:01:47,200 --> 00:01:51,760 Εντάξει, για το περιβάλλον της υγειονομικής περίθαλψης, υπάρχουν πολλές κρίσιμες συσκευές που θέλουμε να 17 00:01:51,760 --> 00:01:57,840 προστατεύσουμε, οπότε υπάρχει πολύ λογισμικό που τρέχει στο παρασκήνιο, στην πλευρά του διακομιστή, 18 00:01:57,840 --> 00:02:04,320 αποθηκεύοντας εικόνες DICOM, δηλαδή εικόνες ακτινογραφιών, αποτελέσματα αιματολογικών εξετάσεων στο εργαστηριακό σύστημα 19 00:02:04,320 --> 00:02:10,240 πληροφοριών, υπάρχουν ιατρικά δεδομένα που είναι κρίσιμα. Όλα αυτά τα λογισμικά έχουν κώδικα μέσα, 20 00:02:10,240 --> 00:02:20,240 και ο κώδικας δεν είναι πάντα καλογραμμένος, δεν τυγχάνει σωστού χειρισμού και έχει επίσης 21 00:02:20,240 --> 00:02:27,840 ευπάθειες. Πριν, ο Κούτρας και ο Χρήστος Γρηγορέλλης παρουσίασαν τα buffer 22 00:02:27,840 --> 00:02:33,920 overflows στη γλώσσα C, οπότε αυτές είναι κάποιες κοινές αδυναμίες που έχουμε όσον αφορά τον κώδικα, 23 00:02:33,920 --> 00:02:40,480 οπότε θα προσπαθήσουμε να καλύψουμε αυτά τα βασικά πράγματα εδώ. Θα δούμε πιο συγκεκριμένα τα εργαλεία SAST, 24 00:02:40,480 --> 00:02:48,960 δηλαδή εργαλεία σάρωσης ασφαλείας, υπάρχουν πολλοί τρόποι να γίνει αυτό, 25 00:02:48,960 --> 00:02:55,040 θα χρησιμοποιήσουμε το GitHub για να κάνουμε κάποια αυτοματοποιημένη σάρωση του κώδικά μας. Φυσικά, 26 00:02:55,040 --> 00:03:00,960 υπάρχουν και άλλα εργαλεία και μεθοδολογίες που μπορούμε να χρησιμοποιήσουμε και εδώ μπορώ να παρουσιάσω το DAST, 27 00:03:00,960 --> 00:03:06,560 το οποίο είναι ο δυναμικός έλεγχος ασφάλειας εφαρμογών, που είναι διαφορετικός. Εκτελείτε πραγματικά το λογισμικό 28 00:03:06,560 --> 00:03:11,040 και προσπαθείτε να εντοπίσετε τις ευπάθειες, εμείς θα μείνουμε κυρίως στα εργαλεία SAST, 29 00:03:11,040 --> 00:03:17,760 στη στατική ανάλυση, ας πούμε. 30 00:03:17,760 --> 00:03:24,080 Το θέμα έχει ως εξής: έχουμε μια ροή εργασίας που χτίζουμε, τρέχουμε ένα εργαλείο SAST, βλέπουμε 31 00:03:24,080 --> 00:03:28,000 τα σύνολα κανόνων, οπότε είναι σαν να δημιουργούμε υπογραφές για να δούμε αν υπάρχουν ειδοποιήσεις, δημιουργούμε μια αναφορά 32 00:03:28,000 --> 00:03:31,760 αν υπάρχουν ευπάθειες, λαμβάνουμε μετρήσεις και μετά θωρακίζουμε τον κώδικά μας, προσπαθούμε να τον επαναπτύξουμε, 33 00:03:32,480 --> 00:03:37,840 προσπαθούμε να ορίσουμε, να επαναπροσδιορίσουμε τον κώδικα και ούτω καθεξής, εντάξει; Εδώ λοιπόν, 34 00:03:39,680 --> 00:03:46,240 μπορείτε να δείτε ότι ο πηγαίος κώδικας είναι ο κώδικας που έχουμε, μετά πάμε στη μηχανή του 35 00:03:46,320 --> 00:03:52,800 εργαλείου που δημιουργεί τις ειδοποιήσεις, μετά κάνουμε τον εντοπισμό ευπαθειών, βλέπουμε τι είδους 36 00:03:52,800 --> 00:04:00,080 ευπάθειες θα έχουμε —θα παρουσιάσουμε κυρίως ένα SQL injection αργότερα— μια αναφορά ευπαθειών 37 00:04:00,080 --> 00:04:04,800 που περιέχει όλες αυτές τις ευπάθειες και μετά οι προγραμματιστές θα πρέπει να χειριστούν όλα αυτά 38 00:04:04,800 --> 00:04:10,400 τα ζητήματα στον κώδικα και να προσπαθήσουν να τα επιλύσουν, εντάξει; Αυτός είναι λοιπόν ο κύκλος και αυτό είναι σύνηθες 39 00:04:10,400 --> 00:04:17,680 και μπορείτε να σκεφτείτε ότι η ανάπτυξη δεν είναι όπως οι περισσότεροι —συμπεριλαμβανομένου και εμένα ως φοιτητή— 40 00:04:17,680 --> 00:04:22,880 νόμιζαν, ότι δηλαδή θα αναπτύξω ένα λογισμικό και αυτό ήταν, θα βγει στο διαδίκτυο και τέλος, 41 00:04:22,880 --> 00:04:29,760 αλλά το λογισμικό χρειάζεται υποστήριξη, οπότε το λογισμικό θα απαιτήσει έναν χρόνο, 42 00:04:29,760 --> 00:04:36,000 άλλον έναν χρόνο και άλλο έναν και η υποστήριξη στην πραγματικότητα αυξάνεται όταν επεκτείνετε το 43 00:04:36,000 --> 00:04:43,200 λογισμικό, οπότε χρειάζεστε προγραμματιστές για να επιλύουν με κάποιο τρόπο tickets, σφάλματα, να επαναπτύσσουν, 44 00:04:43,200 --> 00:04:50,000 να επαναπροσδιορίζουν, να εκσυγχρονίζουν τον κώδικα, οπότε απαιτείται στην πραγματικότητα μια συνεχή 45 00:04:50,000 --> 00:04:55,360 ενσωμάτωση και μια συνεχή ανάπτυξη αφού το έργο βγει επίσης στην αγορά, 46 00:04:55,360 --> 00:05:02,240 εντάξει; Οπότε, σε αυτόν τον κύκλο, στον κύκλο DevOps όπως τον ονομάζουμε οι περισσότεροι, 47 00:05:02,240 --> 00:05:09,280 υπάρχει το secure DevOps, δηλαδή πώς να ενσωματώσουμε την ασφάλεια μέσα στο DevOps, σε αυτόν 48 00:05:09,280 --> 00:05:14,800 τον κύκλο της συνεχούς ενσωμάτωσης και της συνεχούς ανάπτυξης, εντάξει; Ας πάμε εδώ. 49 00:05:17,040 --> 00:05:21,120 Έχω πολλές διαφάνειες εδώ, νομίζω ότι θα πάρετε τις διαφάνειες αργότερα, 50 00:05:21,120 --> 00:05:26,800 για το πώς το κάνουμε αυτό, όπως η ενσωμάτωση και η αναφορά, αλλά θα πάω στα πρακτικά θέματα 51 00:05:26,800 --> 00:05:34,720 αυτή τη στιγμή. Θα δείτε νέες λέξεις, πόσοι από εσάς γνωρίζετε το Jenkins; Όχι το Jenkins, 52 00:05:34,720 --> 00:05:45,760 αλλά εντάξει, γνωρίζετε πολλοί, όχι πολλοί, αλλά αρκετοί. Πίσω όταν ήμουν νεότερος, το 2018, 53 00:05:45,760 --> 00:05:51,520 νομίζω ότι συμμετείχα σε ένα έργο όπου ήθελαν με κάποιο τρόπο να εμπλέξουν τον GDPR και 54 00:05:51,520 --> 00:05:58,240 ζητήματα ιδιωτικότητας στο Jenkins και ούτω καθεξής, είδα το Jenkins και αναρωτήθηκα τι είναι αυτό; Ακόμη και το λογότυπο του Jenkins 55 00:05:58,240 --> 00:06:05,680 είναι πολύ παλιάς σχολής, ας δούμε, χρησιμοποιείται ήδη στην αγορά; Ναι, χρησιμοποιείται, εντάξει. Λοιπόν, 56 00:06:05,680 --> 00:06:14,080 το Jenkins είναι σαν ένας διακομιστής, μια διαδικτυακή υπηρεσία που είναι χρήσιμη για προγραμματιστές και 57 00:06:14,080 --> 00:06:19,760 για μάνατζερ για την ανάπτυξη κώδικα. Οπότε είναι σαν ένα σύστημα έκδοσης εισιτηρίων, όπου ορίζετε τι είδους 58 00:06:19,760 --> 00:06:25,280 pipeline θέλετε να αναπτύξετε, είναι ένα docker, είναι κώδικας, είναι ένα script Python, οτιδήποτε, 59 00:06:25,280 --> 00:06:31,040 και το Jenkins θα το χειριστεί αυτό και κάθε μέρα ή κάθε μήνα ή ό,τι ορίσετε εσείς ως 60 00:06:32,400 --> 00:06:40,400 μάνατζερ θα αναπτύσσει κώδικα ή θα αναπτύσσει dockers ή θα αναπτύσσει αυτόματα κάτι, εντάξει; Και χρησιμοποιείται 61 00:06:40,400 --> 00:06:46,720 κυρίως για μεγάλα έργα από μεγάλες εταιρείες για τη διαχείριση του κώδικα, του νέου 62 00:06:46,720 --> 00:06:53,360 κώδικα που προωθείται και ούτω καθεξής. Το GitLab, οι περισσότεροι από εσάς νομίζω το γνωρίζετε, είναι η έκδοση ανοιχτού κώδικα 63 00:06:54,480 --> 00:06:59,680 του GitHub, οπότε αυτό που συμβαίνει είναι το εξής: όταν αναπτύσσετε κάτι, προωθείτε κώδικα στο 64 00:06:59,680 --> 00:07:05,440 αποθετήριο του GitLab, βάζετε νέα έκδοση, νέα scripts, νέα scripts Python, νέα docker containers, 65 00:07:05,440 --> 00:07:12,480 το Jenkins το χειρίζεται αυτό, το αναπτύσσει στον διακομιστή παραγωγής και μετά τα διαχειρίζεστε όλα αυτά μαζί. 66 00:07:12,560 --> 00:07:18,240 Οπότε, εδώ έρχεται αυτό που θα εξηγήσω για τον διακομιστή Git, 67 00:07:18,240 --> 00:07:21,840 πώς ενεργοποιείτε τα εργαλεία SAST προκειμένου να κάνετε αυτόν τον έλεγχο 68 00:07:21,840 --> 00:07:26,560 κώδικα, την επιθεώρηση κώδικα, την ανάλυση κώδικα, όπως θέλετε πείτε το, εντάξει; 69 00:07:32,000 --> 00:07:38,480 Υπάρχουν λοιπόν κάποια δυνατά και αδύνατα σημεία, εντάξει, μπορούμε να κάνουμε ένα penetration testing και 70 00:07:38,480 --> 00:07:44,560 να δούμε τα σφάλματα και τις ευπάθειες. Αυτό είναι κάτι διαφορετικό. Κάνουμε security by design, 71 00:07:44,560 --> 00:07:49,760 ας πούμε, ασφαλίζουμε τον κώδικά μας πριν από αυτό, οπότε προσπαθούμε να επιλύσουμε τα ζητήματα. Φυσικά, 72 00:07:50,560 --> 00:07:56,880 όταν το κάνω αυτό, προσπαθώ να σκεφτώ και τις δύο πλευρές, οπότε είναι, για το μυαλό μου στην αφαίρεση, 73 00:07:56,880 --> 00:08:02,000 σαν white box testing και black box testing. Έτσι, όταν κάνω penetration testing, 74 00:08:02,000 --> 00:08:06,320 είναι σαν ένα "μαύρο κουτί", προσπαθώ να προσδιορίσω ευπάθειες. Όταν κάνω επιθεώρηση κώδικα, 75 00:08:06,400 --> 00:08:10,240 είναι σαν "λευκό κουτί". Έχω ήδη τον κώδικα και προσπαθώ να τον επιθεωρήσω και ούτω καθεξής. 76 00:08:10,240 --> 00:08:16,400 Οπότε τα πάντα απαιτούνται, ας πούμε, τα πάντα είναι δυνατά. Σημασία έχει ποια είναι η 77 00:08:17,200 --> 00:08:24,080 προοπτική, οι στόχοι, οι απαιτήσεις του ελέγχου που θέλετε να κάνετε. Υπάρχει λοιπόν δυσκολία 78 00:08:24,080 --> 00:08:29,600 επειδή πολλές εταιρείες έρχονται και λένε, εντάξει, πρέπει να ασφαλίσω τις υπηρεσίες μου. 79 00:08:29,600 --> 00:08:33,040 Και λένε, εντάξει, θέλω να κάνω ένα penetration testing. Και εσύ λες, 80 00:08:33,840 --> 00:08:38,800 υπάρχουν και άλλα πράγματα. Μπορείς να κάνεις μια αξιολόγηση ευπαθειών. Μπορείς να κάνεις μια αξιολόγηση κινδύνου. 81 00:08:38,800 --> 00:08:44,560 Μπορείς να κάνεις επιθεώρηση κώδικα. Υπάρχουν λοιπόν πολλές διαφορετικές πτυχές του πώς ενεργοποιείς την ασφάλεια. 82 00:08:44,560 --> 00:08:49,200 Και είναι δύσκολο για άλλους ανθρώπους που είναι εκτός της κυβερνοασφάλειας να κατανοήσουν 83 00:08:49,200 --> 00:08:55,120 αυτές τις διαφορετικές προοπτικές, εντάξει; Αλλά εδώ υπάρχουν ορισμένα αδύνατα και δυνατά σημεία. Για μένα, 84 00:08:55,120 --> 00:09:01,440 το κύριο δυνατό σημείο που δεν αφορά την κυβερνοασφάλεια στον ασφαλή κώδικα είναι ότι η εκμάθηση της ανάλυσης 85 00:09:01,440 --> 00:09:11,120 ασφαλούς κώδικα τελικά βοηθά τους προγραμματιστές. Στο διδακτορικό μου, χρησιμοποιώ την κυβερνοασφάλεια ως το κύριο 86 00:09:11,120 --> 00:09:18,960 όχημα για να εκπαιδεύσω το υπόλοιπο προσωπικό. Χρησιμοποιώ λοιπόν την κυβερνοασφάλεια για να μάθω στους ανθρώπους τη διαχείριση 87 00:09:18,960 --> 00:09:25,840 Linux, για να μάθουν για το logging, για να μάθουν για την ανάπτυξη, για να δουν τεχνικές 88 00:09:25,840 --> 00:09:33,200 πτυχές των δικτύων, για παράδειγμα. Οπότε, τελικά χρησιμοποιώντας την ανάλυση ασφαλούς κώδικα, 89 00:09:34,320 --> 00:09:40,880 ένας προγραμματιστής μπορεί να μάθει καλύτερη ανάπτυξη επειδή εκτός από τα κενά ασφαλείας, θα δει 90 00:09:40,880 --> 00:09:45,680 επίσης ορισμένα σφάλματα όσον αφορά τον σχεδιασμό, όσον αφορά τη λειτουργικότητα και ούτω καθεξής. 91 00:09:45,680 --> 00:09:50,560 Είναι λοιπόν ένας καλός τρόπος για τους προπτυχιακούς φοιτητές να προσπαθήσουν να μάθουν επίσης 92 00:09:51,120 --> 00:09:58,320 ορισμένα βασικά στοιχεία του ασφαλούς προγραμματισμού, εντάξει; Υπάρχουν επίσης διαφορές και οφέλη του SAST 93 00:09:58,320 --> 01:10:05,760 όσον αφορά, ξέρετε, σε σύγκριση με το DAST, τη δυναμική ανάλυση, αλλά δεν θα μείνω σε αυτό. 94 00:05:05,760 --> 00:05:10,960 Ορισμένα βασικά πράγματα που έχω ήδη εξερευνήσει, DevOps, DevSecOps, κάτι παρόμοιο σχετικό 95 00:05:10,960 --> 01:10:18,240 με αυτή την ενότητα, εργαλεία που θα χρησιμοποιήσουμε για συνεχή ενσωμάτωση και συνεχή ανάπτυξη. 96 00:10:18,880 --> 01:10:25,120 Υπάρχει η ανάλυση στοιχείων λογισμικού, η ανάλυση SCA. Μερικές φορές θέλετε ακόμη και να κάνετε 97 00:10:26,000 --> 00:10:31,760 ανάλυση στοιχείων στο επίπεδο του λειτουργικού συστήματος. Οπότε κάνετε μια αξιολόγηση διαμόρφωσης SCA. 98 00:10:31,760 --> 00:10:36,960 Το SCA είναι μια ασφαλής αξιολόγηση διαμόρφωσης. Έτσι, μπορείτε να πάτε στον διακομιστή Windows, 99 00:10:36,960 --> 00:10:41,840 στον διακομιστή Linux και να πείτε, εντάξει, έχετε ενεργοποιημένη την επιβολή κωδικού πρόσβασης; 100 00:10:41,840 --> 00:10:47,200 Έχετε ενεργοποιημένο το firewall; Έχετε το DNS, οτιδήποτε; Οπότε είναι σαν 101 00:10:47,200 --> 00:10:51,360 αξιολόγηση διαμόρφωσης, εντάξει; Και αυτό μπορεί να γίνει τόσο στο λειτουργικό σύστημα, 102 00:10:51,360 --> 00:10:56,400 αλλά και στον κώδικα. Και άλλα πράγματα όπως η διαχείριση ευπαθειών και άλλα. 103 00:10:56,400 --> 01:11:00,800 Έτσι, απλώς παρέχω, ξέρετε, κάποια ορολογία, ορισμένες λέξεις-κλειδιά που χρησιμοποιούμε 104 00:11:01,360 --> 01:11:07,120 προκειμένου να κατανοήσουμε το πλαίσιο αυτού που κάνουμε εδώ, εντάξει; Όλα τους λοιπόν σχετίζονται. 105 00:11:07,120 --> 01:11:12,720 Επίσης, αυτά τα πράγματα σχετίζονται, GitHub, GitLab, Docker, εντάξει; Κάποιος μπορεί να πει, εντάξει, είναι 106 00:11:12,720 --> 01:11:18,800 Jails, δεν είναι Docker, είναι Jails από το Linux. Μπορεί να είναι Linux containers, LXC, οτιδήποτε, 107 00:11:18,800 --> 01:11:26,000 οπότε είναι Docker. Scripts Ansible, Jenkins και τα άλλα πράγματα που δεν χρησιμοποίησα μέχρι τώρα. 108 00:11:26,000 --> 01:11:31,360 Και υπάρχουν επίσης πρακτικά πράγματα όπως το Vagrant. Πόσοι από εσάς γνωρίζετε το Vagrant; 109 00:11:32,800 --> 01:11:41,040 Εντάξει, το Vagrant είναι όπως, ξέρετε, όπως το virtual box είναι σαν να αναπτύσσετε μια εικονική μηχανή. Το Vagrant χρησιμεύει στο να 110 00:11:41,040 --> 01:11:48,720 δημιουργείτε πολλαπλές εικονικές μηχανές με ένα κλικ. Οπότε είναι σαν ένα docker, αλλά για εικονικές μηχανές. Έτσι, δημιουργείτε την τοπολογία, 111 00:11:48,720 --> 01:11:54,400 την τοπολογία δικτύου, ορίζετε τις διευθύνσεις IP, πόσο χώρο στον σκληρό δίσκο χρειάζεστε, πόσες 112 00:11:54,400 --> 01:12:00,240 CPUs χρησιμοποιούνται. Και με ένα κλικ, μπορείτε να τρέξετε και να αναπτύξετε πέντε διαφορετικές εικονικές μηχανές 113 00:12:00,960 --> 01:12:05,280 με ένα κλικ. Και όλες τους θα είναι δεσμευμένες μαζί και θα είναι συνδεδεμένες και ούτω καθεξής. 114 00:12:05,280 --> 01:12:12,400 Αυτά είναι λοιπόν τα Vagrant scripts. Τελευταία, αυτό έχει αναθεωρηθεί στην τεχνολογία που ονομάζεται Terraform. 115 00:12:12,400 --> 01:12:18,320 Έτσι, το Terraform, είναι σαν μια επέκταση των dockers και του Kubernetes και λένε, εντάξει, θα κάνουμε 116 00:12:18,320 --> 01:12:25,600 αυτό που θα κάνουμε για τα dockers και το Kubernetes, αλλά για εικονικές μηχανές και δημιούργησαν το Terraform. Εντάξει, αλλά αυτά 117 00:12:25,600 --> 01:12:32,880 χρησιμοποιούνται κυρίως στις υπηρεσίες cloud. Οπότε, ακόμη και εγώ, δεν έκανα ανάπτυξη σε Terraform. Κυρίως, 118 00:12:32,880 --> 01:12:41,280 το Terraform χρησιμοποιείται στο AWS, στην Amazon ή στο Azure, ας πούμε, στο Microsoft Azure σε μεγάλες, ας πούμε, 119 00:12:41,280 --> 01:12:47,680 τοπολογίες που μπορούμε να χρησιμοποιήσουμε. Και μετά υπάρχουν επίσης το Jenkins και ούτω καθεξής, το οποίο είναι ιδιόμορφο. Προσπάθησα να 120 00:12:47,680 --> 01:12:52,960 βρω υλικό, εκπαιδευτικό υλικό για το Jenkins και είναι δύσκολο να βρεις κάτι πολύ συγκεκριμένο. 121 00:12:52,960 --> 01:12:59,280 Οπότε είναι μια καλή επιλογή. Είναι σαν μια έρευνα ή σαν μια διατριβή, ας πούμε, για τους φοιτητές να δημιουργήσουν, 122 00:12:59,280 --> 01:13:04,960 ας πούμε, κάποιο εκπαιδευτικό υλικό και κάποιες πρακτικές όπως το Jenkins με ασφάλεια 123 00:13:04,960 --> 01:13:10,400 και να προσπαθήσουν να έχουν security DevOps σαν πρακτική, σαν άσκηση, σαν εργαστήριο, 124 00:13:10,400 --> 01:13:16,880 για να μάθουν για το Jenkins και να μάθουν για την ασφάλεια χρησιμοποιώντας την μέσα στη συνεχή ενσωμάτωση 125 00:13:16,880 --> 01:13:21,280 και τη συνεχή ανάπτυξη. Αυτό είναι κάτι ωραίο που μπορεί να γίνει. Έψαξα γύρω, αλλά 126 00:13:22,000 --> 01:13:27,680 δεν μου είναι δυνατόν να βρω κάτι τέτοιο. Λοιπόν, πράγματα που θα δούμε επίσης, 127 00:13:27,680 --> 01:13:34,240 CVE και CWE, υπάρχουν κάποιες διαφορές σε αυτά. Γνωρίζετε, κάποιοι από εσάς, ποια είναι η διαφορά; 128 00:13:34,240 --> 01:13:41,600 Για μένα ήταν επίσης δύσκολο. Αλλά μπορείτε να πείτε, θα πάω πίσω, απλώς για να δω την απάντηση. 129 00:13:41,600 --> 01:13:46,960 Ποια είναι η διαφορά μεταξύ κοινής ευπάθειας και κοινής αδυναμίας; Και υπάρχει επίσης το CAPEC, 130 00:13:48,000 --> 01:13:52,880 που είναι τα scripts επίθεσης, τα εργαλεία επίθεσης, τα σενάρια επίθεσης, ας πούμε. 131 00:13:52,880 --> 00:14:06,080 Γνωρίζετε τη διαφορά; Είναι δύσκολο, το ξέρω. Ναι. 132 00:14:23,840 --> 00:14:33,440 CWE, σωστά. Έχετε δίκιο κατά κάποιο τρόπο. Είναι σαν το CWE, είναι σαν μια αφαίρεση, 133 00:14:33,440 --> 00:14:38,960 τι μπορεί να πάει στραβά, όπως ένα SQL injection; Ενώ το CVE, η κοινή ευπάθεια, 134 00:14:38,960 --> 00:14:45,840 είναι η ακριβής ευπάθεια όπου ο διακομιστής Apache μαζί με αυτό το script PHP 135 00:14:45,840 --> 00:14:51,360 δημιουργεί αυτή την ευπάθεια που έχει ένα συγκεκριμένο περιστατικό. Έτσι, τα CVE είναι σαν τα συγκεκριμένα 136 00:14:51,360 --> 00:14:58,080 περιστατικά του CWE. Το CWE μοιάζει περισσότερο με το γενικό ελάττωμα, το γενικό, ας πούμε, bug, 137 00:14:58,080 --> 00:15:04,880 το γενικό SQL injection. Έτσι, τα CVE συνδέονται με το CPE για την πλατφόρμα, την απαρίθμηση πλατφόρμας. 138 00:15:04,880 --> 00:15:11,280 Σε αυτή τη συγκεκριμένη έκδοση του Apache, σε αυτόν τον συγκεκριμένο κώδικα, υπάρχει το CVE. Ενώ το CWE είναι 139 00:15:11,280 --> 00:15:17,200 περισσότερο σαν τη γενική οντότητα. Και υπάρχει το CAPEC, που είναι η απαρίθμηση κοινών μοτίβων επίθεσης, 140 00:15:17,200 --> 00:15:20,720 που είναι στην πραγματικότητα το πώς εκμεταλλεύεσαι. Είναι λοιπόν η εκμετάλλευση. Οπότε είναι σαν, 141 00:15:20,720 --> 00:15:26,640 τι κάνεις; Εφαρμόζεις μια επίθεση για να κάνεις τα πράγματα; Μερικές φορές υπάρχει μια επικάλυψη μεταξύ 142 00:15:26,640 --> 00:15:32,720 του CWE και των πληροφοριών που μάθατε στο CAPEC, αλλά αυτή είναι η διαφορά. Χρειαζόμαστε αυτό απλώς 143 00:15:32,720 --> 00:15:39,120 για να δούμε τα διαφορετικά αποτελέσματα. Έτσι, η ροή εργασίας είναι κάπως έτσι. Μπορείτε να δείτε, αναπτύσσετε κώδικα, 144 00:15:39,120 --> 00:15:47,840 τον ανεβάζετε στο GitHub, χρησιμοποιείτε τη γλώσσα QL που δημιουργεί τα κοινά ελαττώματα που έχουμε στον 145 00:15:47,840 --> 00:15:53,120 κώδικα. Αυτό δημιουργεί αναφορές και παίρνουμε μια αναφορά και λέμε, εντάξει, αυτός ο κώδικας έχει αυτή την ευπάθεια, 146 00:15:53,120 --> 00:15:59,040 έχει αυτό το ζήτημα μέσα στον κώδικα. Εντάξει. Και ας κάνουμε την εξάσκηση. Έτσι, κάνουμε κλικ στην ασφάλεια, θα 147 00:15:59,040 --> 00:16:05,600 παρουσιάσω εν συντομία εδώ και μετά θα πάω βήμα προς βήμα για να παρουσιάσω. Και μπορείτε να κάνετε αυτή την άσκηση 148 00:16:05,600 --> 00:16:15,120 επίσης από τη δική σας πλευρά. Έτσι, έχω έναν κώδικα ανεβασμένο. Το αποθετήριο GitHub λειτουργεί με τέτοια εργαλεία αν 149 00:16:15,120 --> 00:16:21,760 έχετε το αποθετήριο ανοιχτό στο κοινό. Έτσι, αν το έχετε σε ιδιωτικό, θα πρέπει να το ενεργοποιήσετε ως δημόσιο 150 00:16:21,760 --> 00:16:26,960 αποθετήριο προκειμένου να κάνετε την ανάλυση. Μετά πηγαίνετε στην ασφάλεια και πηγαίνετε στη σάρωση 151 00:16:26,960 --> 00:16:33,520 κώδικα στο κάτω μέρος. Πού είναι η σάρωση κώδικα; Μετά επιλέγετε τι είδους κώδικα 152 00:16:34,480 --> 00:16:40,800 θέλετε να χρησιμοποιήσετε. Το CodeQL είναι το αποθετήριο που χρησιμοποιείται περισσότερο στο GitHub. 153 00:16:41,440 --> 00:16:47,040 Στη συνέχεια, αυτό δημιουργεί μια ροή εργασίας όπως αυτή. Εάν είστε ειδικός, μπορείτε με κάποιο τρόπο να επεξεργαστείτε ή να δημιουργήσετε 154 00:16:47,040 --> 00:16:54,880 μια προσωπική ροή εργασίας. Είναι σαν ένα αυτοματοποιημένο script που καθορίζει πότε θα συμβεί η ειδοποίηση. 155 00:16:54,880 --> 00:17:00,400 Τι ακριβώς θα εμφανιστεί στην ειδοποίηση; Αυτοματοποίηση της απόκρισης, οτιδήποτε. Είναι λοιπόν σαν μια 156 00:17:00,480 --> 00:17:06,720 ροή εργασίας, νομίζω ότι είναι αρχείο YAML. Είναι ένα αρχείο YAML που καθορίζει τι θα κάνει η αυτοματοποίηση 157 00:17:07,440 --> 00:17:12,320 όταν κάνετε την ανάλυση κώδικα. Από προεπιλογή, ενεργοποιείτε το προεπιλεγμένο, ας πούμε, αρχείο της 158 00:17:12,320 --> 00:17:18,720 ροής εργασίας και αυτό θα λειτουργήσει εντάξει. Και μετά η σάρωση κώδικα θα εμφανιστεί με αυτές τις ειδοποιήσεις 159 00:17:18,720 --> 00:17:24,240 και θα λέει ότι εντάξει, έχετε άχρηστο διαφυγόντα χαρακτήρα κανονικής έκφρασης σε αυτή τη γραμμή, 160 00:17:24,240 --> 00:17:29,520 αριθμός γραμμής. Έχετε ελλιπή διαφυγή συμβολοσειράς σε αυτή τη γραμμή. 161 00:17:29,520 --> 00:17:33,520 Και αυτό θα παρέχει επίσης το επίπεδο κινδύνου εάν είναι υψηλό, μεσαίο, χαμηλό, 162 00:17:33,520 --> 00:17:41,600 και θα παρέχει επίσης τη συγκεκριμένη ευπάθεια κάπως έτσι. Έτσι, ελλιπής διαφυγή συμβολοσειράς, 163 00:17:41,600 --> 00:17:50,240 μπορείτε να δείτε. Δεν είναι ο καλύτερος, ας πούμε, παρουσιαστής εδώ, αλλά ναι, εκεί λέει, 164 00:17:50,240 --> 00:17:55,840 αυτό αντικαθιστά μόνο την πρώτη εμφάνιση μιας τελείας. Και μπορείτε να δείτε εδώ, συγγνώμη αν έφυγα 165 00:17:55,840 --> 00:18:03,600 από το μικρόφωνο, CWE, CWE, CWE. Έτσι, εάν κάνετε κλικ εδώ στα CWE, μπορείτε πραγματικά να δείτε 166 00:18:03,600 --> 00:18:10,880 τις πληροφορίες αυτής της διαμόρφωσης αυτών των ροών κώδικα. Και το ίδιο συμβαίνει εδώ, για παράδειγμα. 167 00:18:10,880 --> 00:18:18,720 Και καθορίζει ακριβώς πού ο κώδικάς σας έχει ένα ελάττωμα όπως εδώ, μπορείτε να δείτε. Έτσι, παρουσιάζει επίσης 168 00:18:18,720 --> 00:18:27,360 εδώ πληροφορίες για το περί τίνος πρόκειται. Και τις περισσότερες φορές παρέχει επίσης κάποιες ενέργειες μετριασμού, 169 00:18:27,360 --> 00:18:32,160 προτάσεις, τι πρέπει να κάνετε, τι πρέπει να αλλάξετε στον κώδικα προκειμένου να είναι ασφαλής. 170 00:18:33,680 --> 00:18:39,840 Και μπορείτε να δείτε πολλά από αυτά κάπως έτσι. Έχω πολλές ευπάθειες που εξηγώ 171 00:18:39,840 --> 00:18:45,440 εδώ, αλλά μπορούμε να το δούμε ζωντανά. Αυτή είναι λοιπόν η άσκηση και επιτρέψτε μου να ελέγξω την ώρα 172 00:18:46,400 --> 00:18:54,320 απλώς για να δω πόσο χρόνο έχουμε. Έχω λοιπόν ένα αποθετήριο ή, φυσικά, το κλέβω, 173 00:18:54,880 --> 00:19:00,080 όπως κάνουν οι περισσότεροι προγραμματιστές, από ένα άλλο αποθετήριο, αλλά μπορείτε να δείτε το branch, το fork 174 00:19:00,080 --> 00:19:07,840 που κλωνοποιώ. Αυτό είναι λοιπόν ένα μάθημα, μια άσκηση που βρήκα στο GitHub και είναι πολύ καλή. 175 00:19:07,840 --> 00:19:12,480 Και μπορείτε να πάτε και βήμα προς βήμα, θα εξηγήσει ότι, εντάξει, ξεκινάτε το μάθημα, 176 00:19:13,040 --> 00:19:17,840 και μετά ξεκινάτε το μάθημα, κάνετε κλικ στα σημεία δράσης που έχει εκεί. Είναι λοιπόν σαν 177 00:19:17,840 --> 00:19:24,480 άσκηση βήμα προς βήμα. Και μετά, ας πούμε, το μαγικό πράγμα που συμβαίνει, και δεν το ήξερα αυτό, 178 00:19:24,480 --> 00:19:32,240 είναι ότι, όταν κάνετε τα βήματα και μετά ανανεώνετε το αποθετήριο GitHub, το αρχείο readme 179 00:19:32,240 --> 00:19:38,080 θα αλλάξει μετά από 20 δευτερόλεπτα και θα έχει τα επόμενα βήματα που θα ακολουθήσετε. Οπότε αυτό είναι 180 00:19:38,080 --> 00:19:45,840 ωραίο που συμβαίνει, που μπορείτε επίσης να το κάνετε αυτό. Έτσι, αυτές οι τιμές, και πηγαίνετε βήμα-βήμα και μπορείτε 181 00:19:45,840 --> 00:19:54,320 να προσπαθήσετε να ξεκινήσετε το μάθημα, η έναρξη του μαθήματος θα σας επιτρέψει να κλωνοποιήσετε το αποθετήριο GitHub και μετά 182 00:19:54,320 --> 00:20:04,480 πηγαίνετε κλικ-κλικ και πηγαίνετε και κάνετε κλικ στην επιλογή ασφάλειας και ούτω καθεξής. Ναι. Σφάλμα 404 στον 183 00:20:04,480 --> 00:20:14,880 κωδικό QR. Στον σύνδεσμο, ναι, ίσως είναι διαφορετικός. Στον κωδικό QR, ίσως όχι. Ίσως, ναι, ίσως, 184 00:20:14,880 --> 00:20:23,760 ναι, συγγνώμη, ίσως μπορείτε, ναι, ας δείξω. Μπορείτε να ακολουθήσετε απλώς το αποθετήριο, 185 00:20:23,760 --> 00:20:33,280 το μενού, Ionian CTF, και αυτό είναι όλο. Αυτό είναι περίεργο. Είναι το αποθετήριό μου, θα έπρεπε να είναι ενεργό. 186 00:20:34,720 --> 00:20:41,040 Ίσως κάνατε λάθος κλικ σε κάτι. Είναι κεφαλαία. CTF, είναι κεφαλαία. Είναι λοιπόν uppercase. 187 00:20:42,640 --> 00:20:45,040 Το άλλο μπορεί να είναι λάθος, αλλά ναι, είναι κάπως έτσι. 188 00:20:47,040 --> 00:20:50,800 Αλλά αν κάνετε κλικ εδώ, είναι εντάξει. Και αν κάνετε κλικ στη Google επίσης, 189 00:20:50,800 --> 00:20:56,240 στο Ionian CTF Google, θα βρείτε το αποθετήριο. Ναι, κωδικός QR, συγγνώμη για αυτό. Σκέφτηκα, 190 00:20:56,800 --> 00:21:01,520 με ένα κινητό τηλέφωνο, μπορείτε να πάρετε τον σύνδεσμο και μετά να τον γράψετε. Εντάξει. 191 00:21:04,160 --> 00:21:10,160 Τέλος πάντων, το αφήνω απλώς ένα δευτερόλεπτο για να το δείτε. Οπότε, θα κάνουμε αυτή την άσκηση, ίσως, 192 00:21:10,160 --> 00:21:15,280 μαζί για να δούμε ποια είναι η ροή και πώς όλα αυτά συνδυάζονται. Και μετά θα έχω κάποια άλλα 193 00:21:15,280 --> 00:21:23,680 παραδείγματα για να δείτε. Κάποιος από εσάς απόλαυσε το αποθετήριο; Είναι εντάξει; Ναι; Είναι εντάξει για 194 00:21:23,760 --> 00:21:32,000 εσάς; Όχι, είναι εντάξει. Εντάξει, σας ευχαριστώ. Πολύ καλά. Λοιπόν, επιτρέψτε μου να πάω. Κανονικά δεν χρησιμοποιώ διαφάνειες, οπότε 195 00:21:33,440 --> 00:21:41,680 θα πάω απευθείας εδώ. Το έχω ήδη κάνει ως άσκηση, αλλά θα προσπαθήσω να το κάνω 196 00:21:42,560 --> 00:21:49,440 για εσάς ξανά. Θα πάω λοιπόν στο branch, στο main, ας πούμε, 197 00:21:50,320 --> 00:21:57,440 αποθετήριο, και θα κάνω κλικ στην έναρξη του μαθήματος. Εντάξει, δημιουργία νέου αποθετηρίου. Αυτό λοιπόν θα επιτρέψει 198 00:21:57,440 --> 00:22:05,200 σε μένα να δημιουργήσω, να κλωνοποιήσω το αποθετήριο ως δικό μου. Έτσι, θα το έχω κάπως έτσι, σαν νούμερο δύο, 199 00:22:06,160 --> 00:22:13,680 εσείς δίνετε ό,τι είδους ονόματα αποθετηρίων θέλετε. Το αφήνω δημόσιο προκειμένου να κάνω τη 200 00:22:13,680 --> 00:22:18,240 σάρωση αργότερα, και δημιουργώ το αποθετήριο. Θα απαιτήσει λίγο χρόνο. Ναι; 201 00:22:20,560 --> 00:22:24,160 Όχι, δεν κλωνοποιείται στο laptop. Κλωνοποιείται στον λογαριασμό GitHub. 202 00:22:25,200 --> 00:22:30,880 Έχετε ήδη λογαριασμό GitHub; Ναι. Θα κλωνοποιηθεί στον λογαριασμό GitHub, ένα νέο αποθετήριο 203 00:22:30,880 --> 00:22:36,560 θα δημιουργηθεί στον λογαριασμό GitHub με τα ονόματα που παρέχετε. Ναι; 204 00:22:37,040 --> 00:22:44,800 Ναι. Εάν κάνετε κλικ στο start, σας ανακατευθύνει αυτόματα στο fork. Εντάξει. 205 00:22:47,360 --> 00:22:52,880 Μπορείτε να το κάνετε χειροκίνητα. Μπορείτε να κάνετε clone χειροκίνητα, αλλά ούτως ή άλλως, είναι το ίδιο. Απλώς κλωνοποιούμε το 206 00:22:52,880 --> 00:23:02,080 αποθετήριο. Σας ευχαριστώ. Ναι, νομίζω ότι τώρα για μένα έχει γίνει. Έτσι, μπορείτε να δείτε skills introduction 207 00:23:02,080 --> 00:23:11,840 to CodeQL 2. Είναι λοιπόν σαν ένα νέο αποθετήριο που κλωνοποιείται από το κύριο αποθετήριο. Είναι λοιπόν ένα fork από το κύριο 208 00:23:11,840 --> 00:23:19,840 αποθετήριο. Και εδώ είναι ο κώδικας. Έτσι, μέσα εδώ, μπορείτε να δείτε τον server. Στον server, υπάρχει ένας κώδικας 209 00:23:19,840 --> 00:23:25,840 σε Python και web app. Εδώ είναι λοιπόν ο κώδικας που παρέχουν. Είναι πολύ απλός. Ο κώδικας 210 00:23:25,840 --> 00:23:31,520 είναι απλώς για παράδειγμα. Και το web app, δεν ξέρω αν έχουν σαν μια εφαρμογή web και ένα 211 00:23:31,520 --> 00:23:38,000 screen light που συνδέεται και ούτω καθεξής. Αυτός είναι λοιπόν ο κώδικας, εντάξει. Εδώ, εντάξει. Πολύ καλά. Τώρα, 212 00:23:38,000 --> 00:23:43,120 δεν το έχουμε, αλλά ας ξεκινήσουμε. Ενεργοποιήστε το CodeQL. Το CodeQL, είναι σαν να υπάρχουν πολλά 213 00:23:43,120 --> 00:23:49,600 λογισμικά. Θα επιλέξουμε ένα εργαλείο σάρωσης κώδικα που έχει βιβλιοθήκες για την υποστήριξη JavaScript, Python, Ruby. 214 00:23:49,600 --> 00:23:56,480 Δεν θυμάμαι ποιες είναι οι συμβατότητες του CodeQL. Τα εξηγεί όλα εδώ. 215 00:23:57,440 --> 00:24:03,280 Εξηγεί πώς πηγαίνετε εκεί και το ενεργοποιείτε. Και λέει μπλα μπλα μπλα, κάντε αυτό και εκείνο και ενεργοποιήστε το 216 00:24:03,280 --> 00:24:14,080 CodeQL. Πηγαίνουμε λοιπόν στο security. Εντάξει. Και μετά πηγαίνουμε στο code scanning, όπως έδειξα προηγουμένως. 217 00:24:15,040 --> 00:24:25,440 Και μετά κάνω κλικ στο configure scanning tool. Εντάξει. Και εδώ είναι μια σάρωση κώδικα. Φυσικά, 218 00:24:25,440 --> 00:24:31,440 υπάρχουν και άλλα πράγματα που είναι πολύ χρήσιμα ή ωραία. Πάντα μου αρέσει να ψάχνω πράγματα γύρω-γύρω. 219 00:24:31,440 --> 00:24:36,960 Αυτός είναι ένας καλός τρόπος για έναν εμπειρογνώμονα κυβερνοασφάλειας να ψάχνει γύρω από τα πράγματα. Έτσι, μπορείτε να δείτε εδώ, 220 00:24:36,960 --> 00:24:42,720 γράφημα εξαρτήσεων. Έχουν επίσης ειδοποιήσεις Dependabot. Και έχουν επίσης 221 00:24:43,680 --> 00:24:49,440 ειδοποιήσεις εξαρτήσεων, ας πούμε. Οπότε αυτό αφορά επίσης τις εξαρτήσεις. Φανταστείτε λοιπόν ότι καλείτε μια 222 00:24:50,160 --> 00:24:56,000 συγκεκριμένη βιβλιοθήκη Python που είναι ξεπερασμένη και έχει ευπάθειες. Έτσι, αυτό το Dependabot 223 00:24:56,000 --> 00:25:02,080 ενδέχεται να δημιουργήσει αυτή την ειδοποίηση, αλλά αυτό δεν είναι ο σκοπός αυτή τη στιγμή. Ανάλυση CodeQL. 224 00:25:02,080 --> 00:25:08,160 Οπότε θα πάμε εδώ και μπορείτε να ενεργοποιήσετε την ανάλυση CodeQL με μια προεπιλογή ή προχωρημένη. Έτσι, 225 00:25:08,160 --> 00:25:14,880 ορίζετε τη ροή εργασίας. Ορίζετε το αρχείο yaml που θα καθορίσει τις υπογραφές, τον χρόνο, 226 00:25:14,880 --> 00:25:21,920 το timestamp, πότε θα ξεκινήσει η σάρωση κώδικα και ούτω καθεξής. Κάνουμε κλικ στο default 227 00:25:22,560 --> 00:25:28,080 επειδή δεν ξέρουμε πώς να κάνουμε τις προσαρμογές, τις προόδους. 228 00:25:28,080 --> 00:25:33,120 Και αυτό εξηγεί ότι εντάξει, εντοπίστηκε Python στον λογαριασμό GitHub 229 00:25:33,680 --> 00:25:43,520 και ενεργοποιείτε την Python, τις βιβλιοθήκες Python του CodeQL. Ενεργοποιήστε το QL, το CodeQL. Και μετά θα δείτε 230 00:25:43,520 --> 00:25:52,640 αυτή τη ρύθμιση του CodeQL. Θα απαιτήσει ένα λεπτό. Εξαρτάται από το αποθετήριο, 231 00:25:52,640 --> 00:25:59,920 πόσο μεγάλο είναι το αποθετήριο. Αλλά τελικά, μετά από ένα λεπτό, περίπου ένα λεπτό, θα σταματήσει 232 00:25:59,920 --> 00:26:05,040 και θα πει "τέλος". Φυσικά, μπορείτε να κλείσετε την καρτέλα. Έτσι, αυτό τρέχει στο παρασκήνιο. Οπότε, 233 00:26:05,040 --> 00:26:10,640 μπορείτε να επιστρέψετε και να κάνετε κλικ στο secure και αυτό θα τρέχει στο παρασκήνιο. Έτσι, όταν αυτό 234 00:26:10,640 --> 00:26:17,200 τελειώσει, μπορείτε να δείτε εδώ, δεν θα έχει αποτελέσματα αυτή τη στιγμή. Αν ρυθμίσω εδώ, θα 235 00:26:17,200 --> 00:26:22,400 δω επίσης ότι εξακολουθεί να εργάζεται στο παρασκήνιο. Οπότε θα πρέπει να περιμένετε λίγο. Ναι; 236 00:26:22,800 --> 00:26:32,480 Ξεκινά από το βήμα τέσσερα. Πήγατε στο main branch; 237 00:26:35,280 --> 00:26:42,160 Πρέπει να πάτε στο main; Ναι, ίσως κάνατε κλικ στο start course; Ίσως είναι καλύτερο να 238 00:26:42,160 --> 00:26:48,160 κάνετε κλικ στο start course. Ίσως θα επιστρέψει επίσης στο κύριο αποθετήριο ξανά 239 00:26:48,720 --> 00:26:54,880 και θα κάνει κλικ στο start course στο πράσινο κουμπί. Ίσως αυτό δημιουργεί και άλλα πράγματα επίσης. 240 00:26:56,880 --> 00:26:59,760 Ναι. Κάνατε κλικ στο start course στο πράσινο κουμπί; 241 00:27:03,280 --> 00:27:06,160 Ναι, πρέπει να πάτε στο main, οπότε επιτρέψτε μου να σας δείξω. 242 00:27:08,960 --> 00:27:15,120 Ναι, ναι. Ναι. Ναι, πρέπει. 243 00:27:15,280 --> 00:27:19,680 Υπάρχει λοιπόν ένας αριθμός ένα στο νούμερο δύο εδώ. 244 00:27:23,760 --> 00:27:31,840 Εδώ. Επιτρέψτε μου λοιπόν να σας δείξω. Πηγαίνετε εδώ ή οπουδήποτε. Αυτό είναι το κύριο αποθετήριο μου, 245 00:27:31,840 --> 00:27:36,960 του κύριου αποθετηρίου μου, και αυτό παράγεται από δεξιότητες, οτιδήποτε. Επομένως, πρέπει να πάτε πίσω 246 00:27:36,960 --> 00:27:44,880 και πίσω και πίσω και να φτάσετε στο κύριο αποθετήριο. Το βρήκατε. Αυτή είναι μια καλή άσκηση επίσης 247 00:27:44,880 --> 00:27:49,600 επειδή καταλαβαίνουμε τη διαφορά μεταξύ των forks και του main branch. Αυτό είναι λοιπόν το main branch. 248 00:27:50,400 --> 00:27:57,360 Το δικό μου ξεκινά από το τέσσερα επειδή έχω ήδη ξεκινήσει. Έτσι πηγαίνει από το τέσσερα. Επομένως, πρέπει να πάτε στο κύριο 249 00:27:58,320 --> 00:28:02,240 fork, το κύριο branch, το κύριο αποθετήριο, πίσω και πίσω και πίσω εδώ. 250 00:28:03,920 --> 00:28:10,960 Πηγαίνετε και δείτε. Ίσως μπορώ να κάνω και λίγο zoom. Έτσι, κάνετε κλικ εδώ και πηγαίνετε εδώ και 251 00:28:11,040 --> 00:28:20,720 ξεκινάει. Εντάξει. Επιτρέψτε μου λοιπόν να πάω εδώ. Βλέπετε ανάλυση κώδικα τελευταία σάρωση πριν από ένα λεπτό. Έτσι, 252 00:28:20,720 --> 00:28:26,720 αυτό έχει γίνει με επιτυχία. Πόσοι από εσάς έχετε ήδη, στο παρελθόν, 253 00:28:26,720 --> 00:28:36,400 κάνει CodeQL; Εσείς; Εντάξει. Άλλοι; Εντάξει. Είναι λοιπόν καλό. Αν όλοι σας το γνωρίζατε ήδη, 254 00:28:36,960 --> 00:28:46,400 θα ήταν χάος, εντάξει. Ευτυχώς, δεν το γνωρίζετε. Εντάξει. Λοιπόν, CodeQL τελευταία σάρωση ένα λεπτό 255 00:28:46,400 --> 00:28:52,080 και υπάρχουν οι ροές εργασίας εδώ επίσης. Ίσως μπορούμε να έχουμε μια μικρή γρήγορη, ας πούμε, 256 00:28:53,120 --> 00:28:59,920 περιήγηση σε αυτό. Μπορείτε να δείτε το Code Scanning, το CodeQL και υπάρχουν άλλα εργαλεία ανάλυσης όπως 257 00:29:00,640 --> 00:29:08,480 το FortifyScan ή εμπορικά, αλλά το CodeQL είναι, όπως γνωρίζετε, πολύ δημοφιλές. 258 00:29:09,120 --> 00:29:14,160 Και υπάρχουν πολλά πράγματα που μπορείτε πραγματικά να ελέγξετε. 259 00:29:14,880 --> 00:29:22,640 Snyk security. Το Snyk είναι επίσης πολύ δημοφιλές. Η Synopsys είναι δημοφιλής, αλλά τέλος πάντων, ορισμένα 260 00:29:22,640 --> 00:29:29,360 από αυτά υποστηρίζουν C, άλλα υποστηρίζουν JavaScript. Εξαρτάται από τον κατασκευαστή. Κάποια 261 00:29:29,360 --> 00:29:34,080 είναι καλύτερα σε μια συγκεκριμένη γλώσσα, κάποια είναι καλύτερα σε άλλες γλώσσες και ούτω καθεξής. 262 00:29:35,920 --> 00:29:42,400 Ναι. Και υπάρχουν επίσης κάποια εργαλεία σάρωσης όπως το KubeScan, τα οποία κάνουν ανάλυση κινδύνου για 263 00:29:42,400 --> 00:29:48,560 ελαττώματα διαμόρφωσης για το Kubernetes ή για Docker containers. Αυτό είναι ένα άλλο πράγμα, 264 00:29:48,560 --> 00:29:54,800 να κάνετε ανάλυση κώδικα στο Docker. Καλείτε ένα Docker, ορίζετε μια συγκεκριμένη έκδοση Ubuntu 265 00:29:54,800 --> 00:30:01,840 ή έκδοση Alpine. Είναι αυτή η έκδοση Alpine καθόλου ξεπερασμένη; Υπάρχει κάποιο ελάττωμα; Οπότε αυτό βοηθάει τελικά 266 00:30:01,840 --> 00:30:08,480 πολύ τους ανθρώπους να αναπτύσσουν dockers ή δεδομένα Kubernetes που δεν έχουν ευπάθειες. 267 00:30:08,480 --> 00:30:14,080 Εντάξει; Είναι λοιπόν σαν μια μέθοδος πρόληψης, να αναπτύσσετε κάτι που είναι ήδη κάπως 268 00:30:14,080 --> 00:30:22,080 ασφαλές. Έτσι, μειώνετε με κάποιο τρόπο την επιφάνεια επίθεσης όσο περισσότερο μπορείτε. Και αυτό είναι πολύ 269 00:30:22,080 --> 00:30:29,440 ενδιαφέρον. Το Mobsf, το οποίο είναι για την έκδοση Android, είχα στο παρελθόν διπλωματικές που συνοδεύονταν επίσης από 270 00:30:29,440 --> 00:30:36,480 ερευνητική εργασία για έναν φοιτητή που δοκίμασε το Mobsf σε μια εφαρμογή Android για να ελέγξει 271 00:30:36,480 --> 00:30:42,000 ευπάθειες και να δει τι ευπάθειες είχε η εφαρμογή Android και να προσπαθήσει να κάνει τις 272 00:30:42,000 --> 00:30:48,960 ενέργειες μετριασμού. Και δημιούργησε ένα εκπαιδευτικό σενάριο για το πώς μπορεί κάποιος να μάθει ανάπτυξη Android 273 00:30:49,920 --> 00:30:56,720 και να δει τα ζητήματα ασφαλείας της ανάπτυξης Android. Εντάξει; Και αυτό επεκτείνεται επίσης στην 274 00:30:56,720 --> 01:31:04,800 ασφάλεια κινητών τηλεφώνων, μπορείτε να δείτε στο Android ή στο iOS, κάτι που είναι πολύ ωραίο για να μάθουν οι φοιτητές. 275 01:31:05,600 --> 01:31:12,720 Και τα άλλα πράγματα, εντάξει, δεν θα πάω εκεί. Το SonarCube είναι επίσης πολύ δημοφιλές και υπάρχουν και άλλα 276 01:31:12,720 --> 01:31:18,080 και θα έρθουν κι άλλα στο μέλλον επίσης. Εντάξει. Αυτά λοιπόν υποστηρίζονται από το GitHub. 277 01:31:18,080 --> 01:31:23,440 Φυσικά, υπάρχουν και άλλα αν θέλετε να βρείτε που δεν μπορείτε πραγματικά να αναπτύξετε μόνοι σας σε ένα σύστημα μάθησης 278 01:31:23,440 --> 01:31:29,520 και κάνετε την ανάλυση σάρωσης μέσω γραμμής εντολών και ούτω καθεξής. Εντάξει. Αλλά αυτό παρέχει έναν εύκολο τρόπο 279 01:31:29,520 --> 01:31:34,800 για έναν προγραμματιστή, για έναν φοιτητή, για ανθρώπους μετά τις σπουδές 280 01:31:34,800 --> 01:31:39,440 να κάνουν κάποια ανάλυση ασφαλείας στον κώδικα. Εντάξει. Και είναι πολύ απλό. Είναι σαν δύο 281 01:31:39,440 --> 01:31:44,640 τρία κουμπιά. Εντάξει. Αλλά παρέχει πολλές πληροφορίες και είναι πολύ ωραίο. Εντάξει. 282 01:31:44,640 --> 01:31:51,360 Ας πάμε στην ασφάλεια. Security code scanning. Μπορείτε να δείτε την ένδειξη νούμερο δύο 283 01:31:51,360 --> 01:31:56,480 ότι βρέθηκαν δύο ευπάθειες ασφαλείας. Λειτουργεί για εσάς; Είναι εντάξει; 284 01:31:56,480 --> 01:32:03,280 Εντάξει. Λοιπόν, σάρωση κώδικα. SQL query built from user-controlled sources. Μπορείτε να δείτε το 285 01:32:03,280 --> 01:32:10,000 επίπεδο σοβαρότητας, υψηλό, μεσαίο ή χαμηλό. Και εξηγεί επίσης ότι βρίσκεται στο server route, 286 01:32:10,000 --> 01:32:17,120 server route. Έτσι, το script Python έχει κάποιες ροές ασφαλείας. Εντάξει. Και αν πάω εδώ, 287 01:32:17,120 --> 01:32:26,720 λέει συγκεκριμένα ότι στη γραμμή 22, είναι select star, επιλογή όλων από τα βιβλία 288 01:32:26,720 --> 01:32:34,160 εκεί όπου ο συγγραφέας (author) είναι σαν οποιονδήποτε χαρακτήρα και ακολουθεί το όνομα του συγγραφέα. Έτσι, 289 01:32:34,160 --> 01:32:41,520 αν κάνετε κλικ στον JRR Tolkien, ξέρω ότι είναι ένας από τους αγαπημένους μου, και μετά παρέχει το αποτέλεσμα. 290 01:32:42,160 --> 01:32:49,200 Και υπάρχει ένα ζήτημα εδώ. Ένα ζήτημα. Ποιος ξέρει ποιο είναι το ζήτημα εδώ; Ναι; Ίσως εσείς. Λοιπόν, 291 01:32:49,200 --> 01:32:54,080 εσείς ήσασταν ο πρώτος με το πράσινο. Όχι, εσείς ήσασταν ο πράσινος. Θέλετε να παρακάμψετε το... 292 01:32:54,800 --> 01:32:56,000 Δώστε το στον πορτοκαλί. 293 01:33:03,760 --> 01:33:08,800 Σωστά. Οπότε είναι σαν να μην έχετε καθαρισμένη (sanitized) είσοδο. Δεν έχετε φιλτράρισμα. 294 01:33:08,800 --> 01:33:16,240 Είναι σαν ο χρήστης να μπορεί πραγματικά να κάνει κλικ σε ό,τι θέλει εκεί. Τελεία, παύλα, μείον, 295 01:33:16,240 --> 01:33:21,280 οποιονδήποτε ειδικό χαρακτήρα. Και είναι δυνατόν για αυτόν να βάλει την τιμή εκεί. Ναι. 296 01:33:24,640 --> 01:33:34,720 Ναι. Ναι. Κωδικοί πρόσβασης. Διαχειριστές χρήστες, WP users από το WordPress, για παράδειγμα, ή οτιδήποτε άλλο. 297 01:33:34,720 --> 01:33:43,680 Θα πάρει τελικά αποτελέσματα από πίνακες που δεν επιτρέπεται να έχει. Εντάξει. Οπότε, εντάξει. Εδώ, 298 01:33:43,680 --> 01:33:48,640 εστιάζει κυρίως σε αυτό. Η σύσταση αφορά το blind SQL injection. 299 01:33:48,640 --> 01:33:55,360 Οπότε έχει μια λύση, νομίζω. Ναι, έχει ένα παράδειγμα εδώ. Και παρέχει πολλές λεπτομέρειες, 300 01:33:55,360 --> 01:34:02,720 οι οποίες μπορεί να μην σχετίζονται πολύ με την περίπτωσή μας, αλλά είναι καλό να τις διαβάσετε γιατί κατά κάποιο τρόπο 301 01:34:02,720 --> 01:34:09,360 αντικατοπτρίζουν αυτό που συμβαίνει εδώ. Εντάξει. Και έχει επίσης drop tables και έχει άλλα ερωτήματα SQL εδώ, 302 01:34:09,360 --> 01:34:14,480 κάτι που είναι σημαντικό για μένα. Και το παρέχω αυτό επειδή είναι το διδακτορικό μου, το διδακτορικό μου που έχω, και 303 01:34:14,560 --> 01:34:20,880 επίσης το μεταδιδακτορικό μου, πώς η κυβερνοασφάλεια βοηθά άλλους ανθρώπους που δεν είναι της κυβερνοασφάλειας. 304 01:34:20,880 --> 01:34:25,440 Δεν τους νοιάζει η κυβερνοασφάλεια. Δεν τους αρέσει, ας πούμε. Συνάντησα πολλούς ανθρώπους που λένε, 305 01:34:25,440 --> 01:34:30,080 δεν μου αρέσει η κυβερνοασφάλεια. Είναι βαρετή. Εντάξει. Ασχολούμαι με την Τεχνητή Νοημοσύνη ή την ανάπτυξη λογισμικού. 306 01:34:30,800 --> 01:34:35,840 Οπότε, αυτό που μπορεί να μάθει ένας φοιτητής από αυτό είναι ότι, εντάξει, γνώρισα φοιτητές που είναι καλοί σε ορισμένες 307 01:34:35,840 --> 01:34:41,200 γλώσσες προγραμματισμού. Δεν είναι πολύ καλοί στην SQL ή σε οτιδήποτε άλλο. Θα δουν αυτό το παράδειγμα και θα πουν, 308 01:34:41,200 --> 01:34:47,520 εντάξει, αυτό είναι ένα ερώτημα SQL και μάλιστα ένα ερώτημα SQL που βρήκα ως παράδειγμα. Εντάξει. Και έχουν κάποια 309 01:34:47,520 --> 01:34:53,120 άλλα drop tables και drop άλλων it. Βρίσκετε πληροφορίες. Βρίσκετε πληροφορίες επειδή 310 01:34:53,120 --> 01:34:59,040 έχετε έναν στόχο. Ο στόχος είναι να ασφαλίσουμε τον κώδικά μας ή να έχουμε τον κώδικα. Και πηγαίνοντας προς αυτόν τον στόχο, 311 01:34:59,040 --> 01:35:05,360 μαθαίνετε ενδιάμεσα άλλα πράγματα που δεν είναι στην κυβερνοασφάλεια, το Jenkins, για παράδειγμα. Έμαθα 312 01:35:05,360 --> 01:35:11,040 το Jenkins λόγω της κυβερνοασφάλειας και όχι ως προγραμματιστής. Και έχω δει 313 01:35:11,120 --> 01:35:16,880 ροές εργασίας και pipelines του Jenkins λόγω της κυβερνοασφάλειας. Εντάξει. Και αυτή είναι μια ωραία προοπτική της κυβερνοασφάλειας. 314 01:35:17,600 --> 01:35:23,600 Επειδή συνδέει, συνδέει πολλούς τομείς μαζί, τον κυβερνοχώρο. Έτσι λένε. 315 01:35:24,160 --> 01:35:30,000 Εντάξει. Οπότε, εδώ είναι το παράδειγμα. Και εδώ είναι ο κανόνας. Και αν μπορείτε να κάνετε κλικ στον κανόνα, 316 01:35:30,000 --> 01:35:35,120 μπορείτε να δείτε τις λεπτομέρειες και ούτω καθεξής. Και εδώ είναι η αδυναμία (weakness) επίσης. Θυμάστε, 317 01:35:35,120 --> 01:35:39,360 η αδυναμία είναι σαν μια αφαίρεση. Δεν είναι η ευπάθεια, η ακριβής ευπάθεια, 318 01:35:39,360 --> 01:35:45,760 αλλά είναι σαν μια αφαίρεση της αδυναμίας. Και εδώ βλέπετε πολλές πληροφορίες, κάτι που είναι 319 01:35:45,760 --> 01:35:52,640 επίσης ωραίο. Και ευτυχώς, η κοινότητα τις παρέχει. Και μπορείτε να δείτε εδώ, ακόμη και ένα σχήμα, 320 01:35:52,640 --> 01:35:58,080 μια τοπολογία, πώς συνδέεται η βάση δεδομένων με το ερώτημα SQL. Και υπάρχει ένα ευάλωτο 321 01:35:58,080 --> 01:36:04,960 συστατικό με το οποίο λειτουργεί ο κώδικας. Αυτό λοιπόν βοηθά στην καλύτερη κατανόηση των κωδίκων, ακόμη και για την κυβερνοασφάλεια, 322 01:36:04,960 --> 01:36:09,520 για την προοπτική της ασφάλειας, αλλά και για έναν γενικό, όπως έναν προγραμματιστή, καταλαβαίνετε 323 01:36:09,520 --> 01:36:17,040 περισσότερο πώς λειτουργούν τα πράγματα. Εντάξει. Και τι μπορεί να πάει στραβά στην πραγματικότητα, εντάξει. Και δεν είναι μόνο η ασφάλεια, 324 01:36:17,040 --> 01:36:22,560 μπορεί να είναι ένα ελάττωμα και σε άλλα πράγματα επίσης. Εδώ λοιπόν είναι η εμπιστευτικότητα, η ακεραιότητα, 325 01:36:22,560 --> 01:36:28,080 η διαθεσιμότητα, έχουν αυτόν τον πυλώνα της ασφάλειας. Και λένε τι μπορεί να πάει στραβά όσον αφορά 326 01:36:28,080 --> 01:36:34,080 την εμπιστευτικότητα, τον έλεγχο ταυτότητας, τον έλεγχο πρόσβασης, την ακεραιότητα και ούτω καθεξής. 327 01:36:34,080 --> 01:36:39,440 Αυτό λοιπόν παρέχει τι άσχημα πράγματα μπορούν να συμβούν στην πραγματικότητα. Εντάξει. 328 01:36:40,480 --> 01:36:46,320 Και εδώ υπάρχουν πιθανοί μετριασμοί. Τι μπορείτε να κάνετε προκειμένου να μετριάσετε αυτές τις ενέργειες. 329 01:36:46,320 --> 01:36:53,760 Και προτείνει όχι μόνο πρακτικές ασφαλούς κώδικα, αλλά και σχεδιαστικά ή διοικητικά θέματα. 330 01:36:53,760 --> 01:36:58,560 Αυτό είναι επίσης σημαντικό. Φανταστείτε λοιπόν ότι είστε ένας junior προγραμματιστής ή ένας senior προγραμματιστής, 331 01:36:58,560 --> 01:37:03,840 μαθαίνετε αυτά τα πράγματα και μετά είστε κάπως, πηγαίνετε σε υψηλό επίπεδο. Πηγαίνετε στο επίπεδο του μάνατζερ. 332 01:37:03,840 --> 01:37:10,160 Βλέπετε τη μεγάλη εικόνα. Και αυτό είναι καλό για εσάς για το SAP, επειδή αν είστε καλός προγραμματιστής, 333 01:37:10,160 --> 01:37:17,360 και βλέπετε επίσης τη μεγάλη εικόνα, επειδή βλέπετε τη μεγάλη εικόνα. Και αυτό είναι κάτι που 334 01:37:17,360 --> 01:37:24,320 οι εταιρείες τονίζουν, ότι χρειαζόμαστε προγραμματιστές, αλλά τους χρειαζόμαστε να έχουν μια μεγάλη εικόνα, 335 01:37:24,320 --> 01:37:30,240 τη συνολική εικόνα αυτού που κάνουμε εδώ. Αυτό λοιπόν βοηθά πολύ στο χτίσιμο αυτής της προοπτικής. 336 01:37:30,240 --> 01:37:35,760 Και βοηθά επίσης η κυβερνοασφάλεια με τη δική της αύξηση. Είναι σαν ένα hype. Η Τεχνητή Νοημοσύνη και η κυβερνοασφάλεια 337 01:37:35,760 --> 01:37:42,400 αυξήθηκαν πολύ τελευταία ως θέσεις εργασίας. Εντάξει. Και μπορείτε να δείτε τη φάση υλοποίησης, 338 01:37:42,400 --> 01:37:47,920 άλλα πράγματα, Oracle, μπορείτε να δείτε πολλά πράγματα εδώ στην πραγματικότητα. Πολλά, πάρα πολλά πράγματα. 339 01:37:47,920 --> 01:37:53,760 Πάντα έχουν οντολογίες από πίσω. Επίσης μπορείτε να δείτε τις οντολογίες και πώς λειτουργούν οι οντολογίες. 340 01:37:54,400 --> 01:38:00,800 Και την πιθανότητα (likelihood), η οποία είναι η απαρίθμηση, η ποσοτικοποίηση της ασφάλειας, η πιθανότητα και ο 341 01:38:00,800 --> 01:38:09,440 αντίκτυπος της. Οπότε είναι υψηλός. Και υπάρχουν ορισμένα παραδείγματα εδώ, άλλα παραδείγματα που παρέχουν επίσης SQL injection 342 01:38:09,440 --> 01:38:16,240 εντολές. Όπως κάποιος μπορεί να γράψει αυτό και εκείνο, A equals to A. Ναι, φυσικά, το A ισούται πάντα 343 01:38:16,240 --> 01:38:22,320 με A. Έτσι θα πάρει το αποτέλεσμα και ούτω καθεξής. Παρέχουν λοιπόν πολλές λεπτομέρειες για το τι μπορεί να πάει στραβά. 344 01:38:22,320 --> 01:38:28,880 Παραδείγματα και μπλα μπλα και οτιδήποτε άλλο. Είναι κάπως πολύ, πολύ ωραίο, πολύ ωραίο να το διαβάζετε στην πραγματικότητα. 345 01:38:29,680 --> 01:38:34,800 Και εδώ υπάρχουν επίσης παρατηρημένα παραδείγματα των CVEs, των κοινών ευπαθειών. 346 01:38:34,800 --> 01:38:40,480 Υπάρχουν λοιπόν συγκεκριμένες ευπάθειες σε πραγματικό λογισμικό. Δεν ξέρω αν μπορώ να βρω κάτι 347 01:38:40,480 --> 01:38:48,720 πολύ δημοφιλές εδώ. Chain, numeric, ας δούμε. Ορισμένα από αυτά είναι ξεπερασμένα. Ξέρετε, 348 01:38:49,680 --> 01:38:57,440 τελευταία το SQL injection δεν είναι δημοφιλές στις μέρες μας επειδή χρησιμοποιούμε WordPress, χρησιμοποιούμε Joomla, 349 01:38:58,000 --> 01:39:03,760 Drupal, CMS που παρέχουν αυτό το φιλτράρισμα από προεπιλογή. Αλλά ακόμα μπορείτε να δείτε πολύ λογισμικό, 350 01:39:03,760 --> 01:39:13,760 όχι πολλά από αυτά, αλλά εδώ το 2023. Εξακολουθεί να υπάρχει SQL injection το 2023. Ξέρω ότι είναι αστείο, 351 01:39:14,640 --> 01:39:22,160 αλλά οι άνθρωποι κάνουν λάθη. Εδώ λοιπόν είναι κάπως έτσι: Trend Micro Apex Central SQL injection επέτρεπε SQL 352 01:39:22,160 --> 01:39:31,680 injection στην Trend Micro. Είναι δημοφιλής εταιρεία. Αλλά τέλος πάντων, και έχουν εδώ τις λεπτομέρειες. 353 01:39:32,800 --> 01:39:37,680 Έτσι, μπορείτε να πάτε και αν θέλετε να μάθετε περισσότερα για αυτό, πηγαίνετε στην ευπάθεια, 354 01:39:37,680 --> 01:39:42,800 βρίσκετε τις πληροφορίες για την ευπάθεια, μπορεί να βρείτε την πραγματική υπηρεσία ή τον πραγματικό 355 01:39:42,800 --> 01:39:49,440 κώδικα, να τον αναπτύξετε στο έδαφος, να προσπαθήσετε να κάνετε το ethical hacking, το SQL injection, και να προσπαθήσετε να έχετε μια απόδειξη 356 01:39:49,440 --> 01:39:54,480 ιδέας (proof of concept) ως αναλυτής που είναι ερευνητής. Μπορείτε στην πραγματικότητα, αν έχετε τον κώδικα, να τον ανεβάσετε 357 01:39:54,480 --> 01:40:00,400 στο GitHub και να κάνετε ανάλυση κώδικα και να βρείτε τον συγκεκριμένο κώδικα και να προσπαθήσετε να προσδιορίσετε πράγματα. Έτσι 358 01:40:00,400 --> 01:40:07,360 υπάρχει πολύ υλικό για να μάθετε από την δική σας οπτική γωνία τι θέλετε να μάθετε και αποκτάτε 359 01:40:07,440 --> 01:40:15,520 περισσότερη εξειδίκευση σε αυτό που κάνετε. Αυτό λοιπόν είναι σημαντικό. Φυσικά, από την πλευρά της βιομηχανίας, 360 01:40:15,520 --> 01:40:22,000 εάν έχετε αυτές τις συσκευές, ένα από αυτά τα λογισμικά που εκτελούνται, τότε πρέπει στην πραγματικότητα 361 01:40:22,000 --> 01:40:28,000 να λάβετε μέτρα και να μετριάσετε. Αλλά είναι καλό επίσης για εκπαιδευτικούς ή ερευνητικούς σκοπούς 362 01:40:28,000 --> 01:40:32,720 να κάνετε πράγματα. Δημιουργείτε σενάρια. Αυτό είναι το διδακτορικό μου στην πραγματικότητα. Δημιουργήστε σενάρια. Αυτό είναι 363 01:40:32,720 --> 01:40:37,040 σημαντικό. Έχετε μια ιστορία να πείτε. Όταν έχετε μια ιστορία να πείτε, οι άνθρωποι θα μάθουν. 364 01:40:37,600 --> 01:40:45,040 Εντάξει. Επειδή μας αρέσουν οι ιστορίες. Και εδώ υπάρχουν άλλες λεπτομέρειες όπως το SOAR, μπορείτε να δείτε πολλές 365 01:40:45,040 --> 01:41:52,000 λεπτομέρειες που είναι πολύ... μπορεί να μην γνωρίζουμε πολλή ορολογία όπως αυτή, αλλά μπορείτε να ψάξετε γύρω-γύρω 366 01:41:52,000 --> 01:41:57,600 τι είναι το SOAR και μαθαίνετε. Μαθαίνετε περισσότερα. Και αυτό είναι πάρα πολύ καλό, πάρα πολύ καλό στην πραγματικότητα. 367 01:41:58,400 --> 01:42:04,000 Fast tester, δυναμική ανάλυση. Παρέχει λοιπόν επίσης τι δυναμική ανάλυση μπορούμε να κάνουμε. 368 01:42:04,000 --> 01:42:08,960 Βλέπετε λοιπόν πολλά πράγματα που είναι υψηλού επιπέδου. Είναι κάπως, ξέρετε, πολύ, 369 01:42:10,720 --> 01:42:17,680 σαν να πηγαίνετε από, ας πούμε, από έναν απλό φοιτητή σε έναν πιο προχωρημένο, απλώς ψάχνοντας για την 370 01:42:17,680 --> 01:42:23,840 ορολογία και ψάχνοντας πράγματα γύρω-γύρω και ούτω καθεξής. Εντάξει. Και υπάρχουν και άλλες ορολογίες 371 01:42:23,840 --> 01:42:29,200 όπως μια ιδιότητα μέλους από το OWASP και ούτω καθεξής. Εντάξει. Και χαρτογράφηση εδώ και άλλα πράγματα που δεν 372 01:42:29,200 --> 01:42:35,280 γνωρίζω επίσης και εγώ. Και υπάρχουν τα CAPECs, τα μοτίβα επίθεσης που σχετίζονται με αυτές τις αδυναμίες. 373 01:42:35,280 --> 01:42:41,040 Αυτό λοιπόν συνδυάζει τα πράγματα μεταξύ τους. Και αυτός είναι ο σκοπός μου. Παίρνουμε ένα παράδειγμα, μια ιστορία, έχουμε 374 01:42:41,600 --> 01:42:48,320 έναν κώδικα προς ανάλυση. Και μέσα από αυτή την ανάλυση, μαθαίνουμε τι είναι το CVE; Τι είναι τα CWEs; 375 01:42:48,320 --> 01:42:53,920 Μαθαίνουμε ασφαλή προγραμματισμό. Μαθαίνουμε SQL. Προσπαθούμε να βρούμε τα capex. Βλέπουμε πώς αυτό συνδέεται. 376 01:42:53,920 --> 01:42:59,840 Έτσι έχουμε την εικόνα, τη σύνδεση της εικόνας μεταξύ τους, επειδή έχουμε την ευπάθεια, 377 01:42:59,840 --> 01:43:05,920 έχουμε τον κώδικα, έχουμε τις επιθέσεις που μπορούν να συμβούν. Έχουμε τα capex. Αυτό λοιπόν συνδυάζεται 378 01:43:05,920 --> 01:43:11,840 σε ένα σύνολο και μπορούμε να δούμε τις μεγάλες εικόνες. Και υπάρχουν επίσης παραπομπές εδώ που μπορείτε 379 01:43:11,840 --> 01:43:17,120 να εντοπίσετε και ούτω καθεξής. Και υπάρχει η ημερομηνία υποβολής και άλλα πράγματα όπως μεταδεδομένα που 380 01:43:17,120 --> 01:43:23,440 εμπλέκονται. Εντάξει. Έτσι μπορείτε να δείτε αυτή τη ροή, πολύ απλό παράδειγμα, απλώς ένα SQL injection. 381 01:43:23,440 --> 01:43:29,520 Και τι μπορείτε να μάθετε από αυτό το απλό παράδειγμα, πόσα πράγματα μπορείτε πραγματικά να μάθετε και 382 01:43:29,520 --> 01:43:35,920 να πειραματιστείτε. Και αυτό δεν είναι μόνο διάβασμα, επιλέγετε στην πράξη (hands-on). Κάνετε κλικ, βλέπετε, 383 01:43:35,920 --> 01:43:43,280 κάνετε κλικ, βλέπετε, και συνεχίζετε ξανά και ξανά. Εντάξει. Ας πάμε πίσω και ας δούμε τις συστάσεις, 384 01:43:43,280 --> 01:43:50,240 μπλα μπλα μπλα. Λέει, εντάξει, ας πάμε πάλι στην ασφάλεια. Παίρνουμε μια μεγάλη εικόνα. Εντάξει, 385 01:43:50,240 --> 01:43:56,400 έχουμε αυτά τα ερωτήματα SQL που εκτελούνται, τα οποία είναι... δεν είναι πολύ καλά. Και επιστρέφουμε 386 01:43:56,960 --> 01:44:04,560 εδώ και το readme στην πραγματικότητα ανανεώθηκε και πηγαίνει από το βήμα δύο, έλεγχος και διαλογή (review and triage) 387 01:44:05,280 --> 01:44:10,800 ειδοποίηση code QL. Οπότε λέει, δέστε τα πράγματα μαζί, συνδυάστε τα πράγματα μαζί, αυτά είναι πράγματα που 388 01:44:10,800 --> 01:44:16,800 κάνουμε αυτή τη στιγμή για να συνδυάσουμε τη γνώση και να δούμε ποιο είναι το αποτέλεσμα, μπλα μπλα μπλα. 389 01:44:16,800 --> 01:44:23,120 Εντάξει, η κατάσταση του code QL, αν εκτελείται, μπλα μπλα μπλα. Είδαμε αυτόν τον έλεγχο. 390 01:44:23,120 --> 01:44:27,840 Ελέγξαμε το αποτέλεσμα. Ελέγξαμε τι συμβαίνει. Εδώ είναι ο κανόνας. Εδώ είναι το εργαλείο. 391 01:44:29,040 --> 01:44:35,600 Έλεγχος σάρωσης εδώ. Και εδώ είναι κάτι σημαντικό. Πού είναι; Scanning. 392 01:44:36,560 --> 01:44:41,680 Ω, δεν είναι εδώ. Είναι πού είναι; Εδώ. 393 01:44:44,960 --> 01:44:52,640 Code scanning. Ναι, εδώ. Αυτό είναι σημαντικό όσον αφορά την ασφάλεια. Ξέρω ότι είναι λίγο 394 01:44:52,640 --> 01:44:59,600 μακροσκελείς οι λεπτομέρειες, αλλά εδώ, εντοπίστηκε για πρώτη φορά σε commits και ενημέρωση 1 και readme στον server, 395 01:44:59,600 --> 01:45:05,040 οτιδήποτε. Αυτό λοιπόν εντοπίζει τα commits και οτιδήποτε συμβαίνει. Είναι σαν εγκληματολογικά δεδομένα (forensic data). 396 01:45:05,600 --> 01:45:11,120 Status import. Αυτό είναι πολύ σημαντικό. Εντάξει. Φανταστείτε ότι πηγαίνετε σε μια ομάδα ανάπτυξης και 397 01:45:11,120 --> 01:45:16,320 πρέπει να δείτε τι πήγε στραβά. Ποιο commit ήταν το λάθος; Ποιο commit έσπασε; 398 01:45:17,360 --> 01:45:22,560 Ποιος δημιούργησε αυτό το commit; Επειδή θέλετε να επικοινωνήσετε και να βρείτε το εύκολο ότι, εντάξει, ήταν ο 399 01:45:22,560 --> 01:45:31,520 John που έκανε αυτό το commit. Ας δούμε τι πήγε στραβά. Οπότε αυτό είναι σημαντικό. Και ναι, 400 01:45:31,520 --> 01:45:36,160 πάντα τα εγκληματολογικά δεδομένα είναι πολύ χρήσιμα. Φανταστείτε τον εαυτό σας μερικές φορές να ψάχνετε γύρω-γύρω και να λέτε, 401 01:45:36,160 --> 01:45:42,080 ω, πότε το έκανα, έστειλα αυτό το μήνυμα ή πηγαίνετε πίσω στο ιστορικό στη συνομιλία και λέτε, 402 01:45:42,080 --> 01:44:47,680 ω, ας πάμε να δούμε τη λεπτομέρεια. Ω, εδώ είναι ο κωδικός πρόσβασης. Τρεις μήνες πριν κάποιος μου έστειλε 403 01:44:47,680 --> 01:44:52,640 τον κωδικό πρόσβασης. Εντάξει. Forensic. Πηγαίνετε πίσω και ούτω καθεξής. Έχοντας πληροφορίες και πηγαίνοντας στο παρελθόν. 404 01:44:52,640 --> 01:45:03,520 Είναι ωραίο, ξέρετε, και μπορεί να σας σώσει τη ζωή. Ας πούμε. Εντάξει. Επιτρέψτε μου λοιπόν να πάω εδώ. 405 01:45:04,720 --> 01:45:11,520 Εδώ. Εντάξει. Έχει όλες αυτές τις λεπτομέρειες που εξήγησα για το CW που ονομάζεται σάρωση του 406 01:45:11,520 --> 01:45:17,760 earth's five και ούτω καθεξής. Εδώ λοιπόν είναι το πράγμα που δεν κάναμε μέχρι τώρα. Πρέπει λοιπόν να 407 01:45:17,760 --> 01:45:23,440 δημιουργήσουμε ένα ζήτημα (issue). Εντάξει. Πρέπει να πούμε ότι, εντάξει, αυτό είναι κάτι που πρέπει να λυθεί. 408 01:45:24,080 --> 01:45:29,920 Εδώ λοιπόν είναι αυτό για τη δημιουργία του ζητήματος. Και μπορείτε να δείτε αυτό σημαίνει δεν είναι ψευδώς θετικό; Είναι 409 01:45:29,920 --> 01:45:37,040 που χρησιμοποιείται σε αυτό το fix; Αυτό είναι λοιπόν σαν ticketing. Δημιουργείτε μια ετικέτα και βοηθάτε άλλους να λύσουν 410 01:45:37,040 --> 01:45:42,080 πράγματα. Οπότε λέτε, ω, αυτό είναι ψευδώς θετικό ή δεν σχετίζεται. Εντάξει, απλώς αφήστε το. 411 01:45:42,800 --> 01:45:50,800 Αυτό είναι λοιπόν πολύ σημαντικό. Εντάξει, ξέρετε, δημιουργήστε ένα ticket ή οποιοδήποτε άλλο ζήτημα. Εσείς 412 01:45:50,800 --> 01:45:56,400 μπορείτε επίσης να πείτε κάτι σαν περιγραφή. Μπορείτε να βοηθήσετε τους προγραμματιστές να λύσουν αυτό το ζήτημα. 413 01:45:56,400 --> 01:46:01,840 Οπότε αυτό μοιάζει περισσότερο με ομαδική εργασία. Εντάξει, μπορείτε να βοηθήσετε τον άλλο προγραμματιστή, τον junior προγραμματιστή. 414 01:46:01,840 --> 01:46:08,000 Μπορείτε να τον βοηθήσετε να χτίσει τον κώδικα καλύτερα. Οπότε δημιουργείτε, πατάτε submit a new issue. 415 01:46:08,720 --> 01:46:14,000 Και αυτό δημιουργεί το ζήτημα που λειτουργεί για μένα και ούτω καθεξής. Έχει επίσης το σύστημα έκδοσης εισιτηρίων, 416 01:46:14,000 --> 01:46:20,320 αναθέσεις (assignments), κανένας. Οπότε μπορείτε πραγματικά να αναθέσετε αν θέλετε, ποιος θέλει να λύσει αυτό το ζήτημα. 417 01:46:20,320 --> 01:46:26,320 Έχετε μια ομάδα ανθρώπων, μπορείτε πραγματικά να επισυνάψετε το ζήτημα σε άλλους ανθρώπους. 418 01:46:26,320 --> 01:46:31,680 Εάν πιστεύετε ότι είναι ικανοί να επιλύσουν το ζήτημα ή πιστεύετε ότι είναι δικό τους. 419 01:46:31,680 --> 01:46:35,680 Έχουν επίσης projects που μπορείτε να δείτε. Επομένως, εάν έχετε πολλά projects, μπορείτε να λύσετε το ζήτημα. 420 01:46:35,680 --> 01:46:54,960 Οπότε, ναι, κάνετε κλικ στη σάρωση κώδικα και κάνετε κλικ στο συγκεκριμένο ζήτημα στη συγκεκριμένη ροή. 421 01:46:55,520 --> 01:47:02,400 Εδώ λοιπόν είστε εδώ. Κάνετε κλικ σε ένα από αυτά και μετά σε ένα από αυτά υπάρχει ένα κουμπί εδώ 422 01:47:03,040 --> 01:47:14,480 στα αριστερά. Αυτή τη στιγμή δεν υπάρχει επειδή έκανα κλικ, αλλά είναι εκεί. Εντάξει. Εντάξει, ας πάμε πίσω. 423 01:47:17,040 --> 01:47:23,840 Βήμα τρία, ναι. Και μετά συνεχίζει. Εντάξει. Οπότε αυτή ήταν μια εργασία σε έναν συγκεκριμένο χρήστη. Το ζήτημα 424 01:47:23,840 --> 01:47:28,720 δημιουργήθηκε. Υπάρχει ένα timestamp για το πότε δημιουργήθηκε αυτό το ζήτημα. Οπότε μπορείτε να το εντοπίσετε, να πείτε, 425 01:47:29,280 --> 01:47:36,960 αυτό είναι από πριν από ένα μήνα, κανείς δεν το είδε. Είναι χάος. Εντάξει. Ας πάμε λοιπόν. Εντάξει, οι άνθρωποι πάνε 426 01:47:36,960 --> 01:47:43,360 για διακοπές. Δεν είναι εκεί για να λύσουν τα ψηφία. Πολύ καλά. Οπότε πηγαίνετε, πηγαίνετε, πηγαίνετε. Και μετά 427 01:47:44,160 --> 01:47:50,480 υπάρχουν λεπτομέρειες σε αυτό το αρχείο readme αυτή τη στιγμή για τη σάρωση κώδικα. Μπορείτε να ξανανοίξετε την ειδοποίηση 428 01:47:50,480 --> 01:47:56,480 και οτιδήποτε άλλο. Και μετά εξηγεί ότι πρέπει να πάτε στο κουμπί επεξεργασίας. Επομένως, είναι καλύτερο να πάτε 429 01:47:56,480 --> 01:48:03,760 στον κύριο κώδικα. Ας πάμε πίσω. Κάντε κλικ και ανοίξτε μια νέα καρτέλα. Εντάξει. Και μια νέα καρτέλα. Απλώς να την έχετε αν 430 01:48:03,760 --> 01:48:13,840 θέλετε κάπως έτσι. Εάν πάω στη νέα καρτέλα, μπορείτε πραγματικά να πάτε στο server και routes. Και μετά 431 01:48:13,840 --> 01:48:19,680 κάνετε κλικ στο edit file προκειμένου να κάνετε επεξεργασία online. Εντάξει. Ξέρω ότι πολλοί από εσάς χρησιμοποιείτε τη γραμμή εντολών και 432 01:48:19,680 --> 01:48:25,120 χρησιμοποιείτε το git στη γραμμή εντολών, αλλά τέλος πάντων, μπορείτε να το κάνετε αυτό στους browsers. Επεξεργαστείτε αυτό το 433 01:48:25,120 --> 01:48:31,120 αρχείο και αυτό σας επιτρέπει να επεξεργαστείτε το αρχείο. Το έχουν αυτό ως αναφορά εδώ, ή μπορώ να έχω 434 01:48:31,120 --> 01:48:39,040 ως αναφορά τα αποτελέσματα του code QL προκειμένου να δω τα πράγματα που συμβαίνουν. Επιτρέψτε μου να πάω ξανά. 435 01:48:41,280 --> 01:48:48,880 Έτσι, ο αριθμός 22 και ο αριθμός 16 ήταν κόκκινοι. Δεν θυμάμαι τέλος πάντων. Ας πάμε λοιπόν. 436 01:48:49,200 --> 01:48:59,440 Θέλουμε λοιπόν να διορθώσουμε αυτή την ευπάθεια. Θα το προσθέσω λοιπόν στη γραμμή 16 και θα έχω αυτό το query name, 437 01:49:00,400 --> 01:49:07,280 επεξεργασία query. Οπότε μπορείτε να δείτε ότι η διαφορά είναι ότι αυτή η εντολή, αντί να έχει κάπως έτσι 438 01:49:08,000 --> 01:49:15,760 percent as, έχει percent as s. Οπότε είναι σαν ένα εικονικό φιλτράρισμα όπως, εντάξει, τουλάχιστον παρείχε 439 01:49:15,760 --> 01:49:20,560 τη συμβολοσειρά (string) εκεί, όχι κάτι που δεν είναι συμβολοσειρά. Εντάξει. Φυσικά, υπάρχουν και άλλα 440 01:49:21,520 --> 01:49:28,000 παραδείγματα που μπορώ να σας δείξω, αλλά αυτό είναι κάτι πολύ γρήγορο που μπορείτε να κάνετε. Εντάξει. 441 01:49:28,000 --> 01:49:35,680 Αντιγράφετε και επικολλάτε ή σημειώνετε. Πηγαίνετε στην επεξεργασία. Είναι λοιπόν η γραμμή 16. Και βλέπετε εδώ. 442 01:49:36,720 --> 01:49:42,880 Αυτή είναι η εντολή. Και λέει μπλα μπλα μπλα, οτιδήποτε. Λέει ότι, εντάξει, πρέπει να 443 01:49:42,880 --> 01:49:49,440 κάνουμε αντιγραφή και επικόλληση και να δούμε κάπως έτσι. Προσέξτε το εισαγωγικό. Είναι λοιπόν select all from books where name is 444 01:49:49,440 --> 01:49:57,680 like percent that string quotes closing comma and then name. Εντάξει. Μην βάζετε την τελεία μετά, 445 01:49:57,680 --> 01:50:04,000 επειδή υπάρχει μια τελεία στη φράση, αλλά μην βάζετε καμία τελεία. Αυτή είναι η μία. Και η άλλη είναι 446 01:50:04,000 --> 01:50:11,680 που έκανα στη γραμμή 22. Οπότε αν πάω στη γραμμή 22, κάνω αντιγραφή και επικόλληση. Είναι πάντα για να δούμε το παρελθόν. Εντάξει, 447 01:50:11,680 --> 01:50:19,680 να δούμε τι αναθεωρείτε στο 22. Ας πάμε πίσω στο 22. Ίσως μπορώ να το βάλω στο κάτω μέρος. 448 01:50:20,960 --> 01:50:28,240 Εντάξει. Είναι κάπως... είναι λάθος. Είναι το ίδιο. Είναι παρόμοιο. Εντάξει. Βάζουν το τοις εκατό στη συμβολοσειρά. 449 01:50:28,240 --> 01:50:35,680 Οπότε είναι απλώς ένα S εδώ, νομίζω. Και αφαιρούν επίσης το άλλο ποσοστό. 450 01:50:35,680 --> 01:50:43,360 Είναι απλώς για να είμαστε ασφαλείς. Εντάξει, εδώ. Εντάξει. Νομίζω ότι είναι μια χαρά. Κάνετε commit τις αλλαγές. 451 01:50:44,400 --> 01:50:51,360 Έχετε μια εκτενή περιγραφή αν θέλετε όλα αυτά. Αναθεωρώ τον κώδικα. Αντικαθιστώ την εξυγίανση. 452 01:50:51,360 --> 01:50:56,640 Προσθέτω την εξυγίανση των ερωτημάτων SQL. Παρακαλώ ελέγξτε ή οτιδήποτε άλλο. Ελέγξτε ξανά. 453 01:50:57,520 --> 01:51:04,400 Εντάξει. Οπότε βάζετε εδώ την περιγραφή που θέλετε. Κάνετε commit ή δημιουργήστε ένα νέο branch. 454 01:51:04,400 --> 01:51:10,000 Θα κάνω commit στο κύριο branch του project μου. Εντάξει. 455 01:51:13,840 --> 01:51:20,400 Οπότε ζητήματα (issues). Εάν πάω στα issues, υπάρχουν ανοιχτά ζητήματα και κλειστά ζητήματα. Εντάξει. 456 01:51:20,400 --> 01:51:29,680 Οπότε ένα ανοιχτό, μηδέν κλειστά ή οτιδήποτε άλλο. Ας πάμε πάλι στην ασφάλεια. Εδώ μπορείτε να δείτε την ένδειξη, 457 01:51:29,680 --> 01:51:37,440 τον αριθμό ένα. Υπάρχει λοιπόν ακόμα ένα ζήτημα εδώ. Και θα ανανεωθεί μετά την ανανέωση 458 01:51:38,560 --> 01:51:48,000 μετά από 20 δευτερόλεπτα εδώ. Θα πάει στο βήμα τέσσερα πιθανότατα. Ναι, βήμα τέσσερα. Και αν πάω στο 459 01:51:48,000 --> 01:51:58,160 code scanning, μπορείτε να δείτε ότι ίσως απαιτείται κάποιος χρόνος. Ίσως το έκανα λάθος. Δεν είμαι σίγουρος. 460 01:51:58,160 --> 01:52:03,120 Αλλά αυτό θα κλείσει τις, ξέρετε, οι ευπάθειες θα εξαφανιστούν από αυτό το 461 01:52:05,440 --> 01:52:17,280 dashboard εδώ. Έχει επίσης πολλά φίλτρα. Επομένως, μη διστάσετε να κάνετε κλικ στα εργαλεία (tools). Εάν κάνω κλικ στα tools, 462 01:52:17,920 --> 01:52:25,040 υπάρχει επίσης η Python που σε έξι αρχεία έχει έρθει. Οπότε το 100% του κύριου αποθετηρίου περιέχει 463 01:52:25,040 --> 01:52:32,160 αρχεία Python. Και υπάρχει επίσης ένα φιλτράρισμα εδώ. Οπότε είναι η γλώσσα. Εάν είναι Python, HTML, 464 01:52:32,960 --> 01:52:39,920 μπορεί να έχετε πολλαπλά εργαλεία για να σαρώσετε τον κώδικα. Είναι λοιπόν ανά εργαλείο, branch, κανόνα, 465 01:52:41,200 --> 01:52:46,480 επίπεδο σοβαρότητας. Έτσι, μπορείτε πραγματικά να κάνετε την ταξινόμηση ή το φιλτράρισμα βάσει, ξέρετε, 466 01:52:46,880 --> 01:52:53,040 των ζητημάτων που δημιουργούνται. Τέλος πάντων, δεν είναι εδώ για μένα. Δεν ξέρω για εσάς. Δούλεψε; 467 01:52:55,200 --> 01:52:58,880 Πού είναι η ενέργεια (action) στην ασφάλεια; 468 01:53:05,360 --> 01:53:08,480 Δίπλα στα projects, ενέργειες (actions) στις ενέργειες. Ναι. 469 01:53:09,600 --> 01:53:15,680 Εξακολουθεί να εκτελείται. Ναι, και τα δύο είναι ακόμα σε εξέλιξη. Εν τω μεταξύ, μπορώ να πάω στο κύριο αποθετήριο 470 01:53:15,680 --> 01:53:21,680 απλώς για να σας το παρουσιάσω. Μπορείτε να δείτε τον φάκελο dot GitHub. Οπότε dot GitHub, αν πάτε, 471 01:53:22,320 --> 01:53:30,240 υπάρχουν οι ροές εργασίας (workflows). Εδώ λοιπόν είναι οι ροές εργασίας από το CodeQL. Οπότε enable CodeQL, 472 01:53:30,240 --> 01:53:36,080 κάπου εδώ θα είναι οι, ξέρετε, οι ροές εργασίας. Αυτές είναι οι ροές εργασίας. 473 01:53:37,040 --> 01:53:42,160 Αν θέλετε να δείτε, είναι επίσης οι ροές εργασίας για την ενημέρωση του readme και επίσης θα είναι οι ροές εργασίας 474 01:53:42,160 --> 01:53:48,320 από το CodeQL, νομίζω. Αλλά εδώ είναι ένα χάος επειδή έχουμε πολλά βήματα και ούτω καθεξής. 475 01:53:49,120 --> 01:53:56,640 Αλλά οι ροές εργασίας θα είναι επίσης εδώ, όπως τα αρχεία YAML όσων συμβαίνουν στην αυτοματοποίηση. 476 01:53:58,400 --> 01:54:05,200 Εντάξει, ας δούμε αν η ενέργεια εξακολουθεί να λειτουργεί. Ναι, έγινε. Πριν από δύο λεπτά, οπότε απαιτήθηκε 477 01:54:05,200 --> 01:54:13,280 ένα λεπτό και 60 δευτερόλεπτα για να τελειώσει. Και πηγαίνετε security, code scanning, μπορείτε να δείτε 478 01:54:14,240 --> 01:54:18,160 δύο είναι κλειστά. Τα πράγματα λοιπόν έχουν επιλυθεί. Εντάξει, 479 01:54:18,880 --> 01:54:26,000 μηδέν ανοιχτά, δύο κλειστά. Οπότε αυτό έκλεισε τα ζητήματα. Εντάξει, ας πάμε εδώ. 480 01:54:34,240 --> 01:54:36,880 Εντάξει, και αυτό είναι το επόμενο βήμα που μπορούμε να κάνουμε. 481 01:54:36,880 --> 01:54:44,720 Review pull request. Εντάξει, έχει ένα review pull request. Μπορείτε να δείτε εδώ με το pull request, 482 01:54:44,720 --> 01:54:49,200 οπότε μέρος αυτού είναι ένα άλλο βήμα που μπορούμε να κάνουμε. Δεν θα το ολοκληρώσω τώρα εδώ. 483 01:54:49,200 --> 01:54:55,120 Επομένως, μπορείτε να νιώσετε ελεύθεροι και να το ολοκληρώσετε αργότερα, ίσως απαιτεί κάποια βήματα που πρέπει ακόμα να γίνουν. 484 01:54:55,120 --> 01:55:01,920 Και μπορείτε να δείτε τη διαφορά. Υπάρχει ένα σημείο δράσης, μπορώ να πάω απευθείας και να επιλύσω το 485 01:55:01,920 --> 01:55:08,800 ζήτημα, αλλά μπορώ να κάνω ένα pull request και μετά ο προγραμματιστής θα δει το pull request και θα πει, 486 01:55:08,800 --> 01:55:16,320 εντάξει, είναι αυτή μια καλή επεξεργασία; Πρέπει να την προωθήσω στο main branch μου ή όχι; Ένας ελεγκτής (reviewer) θα πρέπει λοιπόν 487 01:55:16,320 --> 01:55:23,520 πραγματικά να δει και να ελέγξει την επεξεργασία και να αποφασίσει εάν αυτό είναι εντάξει για να συμπεριληφθεί στο main branch 488 01:55:23,520 --> 01:55:30,080 και ούτω καθεξής. Στο παρελθόν στα προηγούμενα βήματα, επεξεργαστήκαμε απευθείας και αποδεχτήκαμε και το 489 01:55:30,080 --> 01:55:34,720 κάναμε, αλλά εδώ εξηγεί τι πρέπει να κάνετε προκειμένου να δείτε τη διαφορά. 490 01:55:34,720 --> 01:55:39,120 Και εδώ είναι η διαφορά. Μπορείτε να δείτε ότι, εντάξει, αυτό ήταν προηγουμένως και αυτό προστέθηκε. 491 01:55:39,120 --> 01:55:45,600 Αυτή είναι λοιπόν η αλλαγή και ούτω καθεξής. Αυτό είναι λοιπόν κάτι σημαντικό όσον αφορά το versioning. 492 01:55:45,600 --> 01:55:52,640 Εντάξει, και το GitHub έχει αυτό το πλεονέκτημα ότι έχει versioning. Μπορείτε να δείτε το versioning να πηγαίνει 493 01:55:52,640 --> 01:55:58,080 πίσω και πίσω και πίσω. Και αν κάτι σπάσει μετά από έναν μήνα του project και πείτε, 494 01:55:58,080 --> 01:56:05,680 εντάξει, τι έγινε; Τίποτα δεν λειτουργεί. Μπορείτε να πάτε πίσω, να το εντοπίσετε και να δείτε τι πήγε στραβά 495 01:56:05,680 --> 01:56:11,440 και να προσπαθήσετε να το επιλύσετε και ούτω καθεξής. Αυτό ισχύει επίσης για την ασφάλεια. Αυτό ισχύει επίσης για τη λειτουργικότητα, 496 01:56:11,440 --> 01:56:18,000 την αντιμετώπιση προβλημάτων (troubleshooting) και ούτω καθεξής. Και υπάρχουν περιπτώσεις. Σκεφτόμουν μια έρευνα, σαν μια μικρή εργασία, 497 01:56:18,000 --> 01:56:24,000 ας πούμε, με το versioning του GitHub για να ελέγξω αν υπάρχει κακόβουλος κώδικας μέσα στο project. 498 01:56:24,000 --> 01:56:30,880 Έτσι μπορείτε να ανεβάσετε τα αρχεία στο GitHub, τους φακέλους του WordPress, ας πούμε. 499 01:56:30,880 --> 01:56:36,560 Και αν υπάρχει μια JavaScript που εκτελείται όπως μια κακόβουλη JavaScript, τότε μπορείτε να δείτε ότι, 500 01:56:36,560 --> 01:56:42,720 εντάξει, αυτή η JavaScript ή αυτή η γραμμή άλλαξε. Και μπορείτε πραγματικά να εντοπίσετε κακόβουλες ενέργειες 501 01:56:42,720 --> 01:56:49,760 ή εάν υπάρχει ένα κακόβουλο script που εκτελείται στο WordPress, μπορείτε να το κάνετε αυτό συγκρίνοντας την παλιά 502 01:56:49,760 --> 01:56:55,360 έκδοση των projects σας, για παράδειγμα. Οπότε αυτός είναι ένας ωραίος τρόπος για να το κάνετε αυτό. Το έχω κάνει στο παρελθόν. 503 01:56:56,240 --> 01:57:01,200 Για παράδειγμα, είχαμε την περίπτωση όπου έχουμε ένα site WordPress που είχε χαλάσει. 504 01:57:02,240 --> 01:57:08,560 Κακόβουλα scripts εκτελούνταν εκεί. Δεν ξέραμε ακριβώς ποιο ήταν το ζήτημα. Έπρεπε να πάμε 505 01:57:09,360 --> 01:57:17,200 αρχείο προς αρχείο για να δούμε αν υπάρχει κωδικοποιημένος κώδικας μέσα που κάνει κάτι περίεργο. 506 01:57:17,280 --> 01:57:24,240 Και μετά απλώς ανέβασα το project που είχαμε στο παρελθόν. Στη συνέχεια πρόσθεσα τα νέα αρχεία, 507 01:57:24,240 --> 01:57:32,240 τα ενημερωμένα αρχεία, και μετά σύγκρινα τις αλλαγές. Και μετά είδα ποια αρχεία, ποια αρχεία PHP 508 01:57:32,880 --> 01:57:38,320 άλλαξαν στο μέλλον. Και ανακάλυψα ότι υπήρχαν πέντε διαφορετικά αρχεία που είχαν αλλάξει. 509 01:57:38,320 --> 01:57:43,520 Ένα από αυτά ήταν εντάξει. Ήταν λόγω ενημερώσεων. Αλλά ήταν πιο εύκολο για μένα να βρω 510 01:57:43,520 --> 01:57:49,760 αυτά τα πέντε αρχεία που είχαν αυτόν τον συγκεκριμένο κώδικα JavaScript να εκτελείται στο 511 01:57:49,760 --> 01:57:55,120 παρασκήνιο στο αρχείο PHP. Αυτό λοιπόν βοηθάει πολύ. Ξέρω ότι είναι λίγο μπελάς. Γι' αυτό 512 01:57:55,120 --> 01:58:01,920 κάποια βασικά... είναι σαν το hacking. Λέμε hacking επειδή, ξέρετε, προσπαθείτε να αυτοσχεδιάσετε. Εσείς 513 01:58:01,920 --> 01:58:10,640 προσπαθείτε να δημιουργήσετε νέους τρόπους για να κάνετε τη δουλειά σας. Ανορθόδοξοι, ας πούμε, τρόποι, περίεργοι τρόποι 514 01:58:10,640 --> 01:58:18,480 για να λύσετε πράγματα. Αυτός είναι λοιπόν ένας καλός τρόπος για να χρησιμοποιήσετε το GitHub ή το GitLab. Το GitLab είναι το ιδιωτικό τους αποθετήριο. 515 01:58:19,680 --> 01:58:27,200 Οπότε αυτό είναι ωραίο για μένα. Οποιεσδήποτε ερωτήσεις μέχρι τώρα; Οποιαδήποτε σχόλια; Είναι εντάξει; Λειτουργεί; 516 01:58:28,800 --> 01:58:34,720 Εντάξει. Και επιτρέψτε μου να πάω. Δεν ξέρω πόσο χρόνο έχετε. Είναι το πρόγραμμα. Είναι μέχρι τις πέντε; 517 01:58:35,680 --> 01:58:41,600 Ω, είναι περίπου πέντε. Είναι τρεις. Θα ελέγξω λοιπόν το πρόγραμμα για να είμαι σίγουρος. 518 01:58:45,440 --> 01:58:52,480 Είναι μέχρι τις τέσσερις η ώρα. Τι ώρα είναι; Τρεις. Εντάξει. Έχουμε ακόμα χρόνο. Εντάξει. 519 01:58:52,480 --> 01:59:00,640 Και επιτρέψτε μου να δω. Συγγνώμη, μερικές φορές χάνομαι στον χρόνο. Μιλάω μερικές φορές πολύ. Ας επιστρέψουμε λοιπόν. 520 01:59:00,720 --> 01:59:07,600 Ionian CTF. Νομίζω ότι έχω κάποια άλλα πράγματα όπως ένα αποθετήριο για αυτά τα πράγματα. Οπότε αν πάω, 521 01:59:08,960 --> 01:59:10,800 πού είναι, πού είναι; Είναι το test; 522 01:59:15,040 --> 01:59:22,080 Ναι, νομίζω ότι είναι αυτό. Ας δούμε. Security. Έχει λυθεί. 523 01:59:24,880 --> 01:59:29,520 Ίσως μπορώ να σας δείξω την περίπτωση χρήσης healthcare. Νομίζω ότι είναι αυτή. 524 01:59:30,800 --> 01:59:38,240 Ναι. Αυτό το αποθετήριο ήταν από μια φοιτήτριά μου. 525 01:59:41,200 --> 01:59:46,800 Έτσι δημιούργησε κάτι σαν script Python. Δεν θυμάμαι τι κάνει αυτό το script. 526 01:59:48,000 --> 01:59:55,440 Και ναι, ας πάμε. Απλώς του είπα, και είναι μια καλή επιλογή για φοιτητές ή για τους συναδέλφους σας 527 01:59:55,440 --> 02:00:00,480 ή για τους συμφοιτητές σας να προτείνετε. Εάν έχετε λογαριασμό GitHub, δημιουργείτε ένα ωραίο project 528 02:00:00,560 --> 02:00:08,480 σε C ή σε Python ή σε Ruby, κάντε κλικ και ενεργοποιήστε την ασφάλεια για να δείτε κάπως τι είναι το ωραίο, 529 02:00:08,480 --> 02:00:13,760 τι είναι καλό, τι είναι λάθος. Εντάξει. Και της είπα, εντάξει, απλώς δώσε μου το αποθετήριό σου και 530 02:00:13,760 --> 02:00:18,880 ας δούμε τη σάρωση κώδικα. Ας δούμε λοιπόν. Η σάρωση κώδικα έχει ήδη γίνει. Μπορείτε πάντα 531 02:00:18,880 --> 02:00:25,680 να κάνετε κλωνοποίηση αν θέλετε. Είναι λοιπόν το sec dev. Αν πάτε στο κύριο αποθετήριο, Union CTF εδώ, 532 02:00:25,680 --> 02:00:31,200 κάνετε κλικ στα repositories, όλα τα repositories. Υπάρχει αυτό το sec dev. Είναι λοιπόν security 533 02:00:31,200 --> 02:00:38,240 development, sec dev, ανάπτυξη ασφαλείας. Αυτό το αποθετήριο, θα γίνει δημοφιλές, 534 02:00:38,240 --> 02:00:44,800 τα περισσότερα από αυτά θα γίνουν δημοφιλή τέλος πάντων. Ασφάλεια εδώ. Και μπορείτε να δείτε χρήση ενός σπασμένου ή 535 02:00:44,960 --> 02:00:57,040 ασθενούς κρυπτογραφικού σε ευαίσθητα δεδομένα. Ας δούμε. Εντάξει. Εδώ λοιπόν είναι. Ίσως μπορώ. Συγγνώμη, 536 02:00:57,040 --> 02:01:04,320 κάποια κείμενα είναι στα Ελληνικά επειδή είναι Έλληνας φοιτητής. Και εδώ μπορείτε να δείτε εκεί κάτω, 537 02:01:04,320 --> 02:01:11,520 hashed password, hashed, μπλα μπλα μπλα, password. Αυτό λοιπόν λέει ότι χρήση ενός σπασμένου ή ασθενούς 538 02:01:11,680 --> 02:01:20,160 κρυπτογραφικού hash στη συλλογή. Μπορεί κάποιος να εξηγήσει τι πάει στραβά; Κάποιος; Ποιο είναι το ζήτημα; 539 02:01:21,680 --> 02:01:22,800 Ξέρω ότι το λέει, αλλά τι; 540 02:01:28,320 --> 02:01:39,360 Καλή ιδέα, αλλά δεν είμαι Md5. Ο Md5 είναι ένας αδύναμος, πολύ αδύναμος, χειρότερος από ό,τι λέω είναι πάλι ο 256. 541 02:01:40,320 --> 02:01:45,600 Κάποιος αναπτύσσει σε WordPress; Όχι. Ανάπτυξη WordPress, κανείς; Εκεί. 542 02:01:50,400 --> 02:01:58,640 Ω, όχι, είναι ο SH256, ο οποίος είναι ένας καλός αλγόριθμος. Είναι επίσης ένα salt. Ίσως είναι επίσης ένα salt. 543 02:01:59,360 --> 02:02:04,000 Ναι, αλλά το έβαλε αυτό. Το έβαλε ήδη γιατί είναι καλός φοιτητής. 544 02:02:04,800 --> 02:02:13,440 Μου είπε, ναι, είναι κάπως, θα χρησιμοποιήσω έναν SH256. Γνωρίζει επίσης για την ανάπτυξη WordPress. 545 02:02:13,440 --> 02:02:20,880 Έτσι το WordPress χρησιμοποιεί Md5 hashing. Ποιο είναι το κόλπο που έχουν αυτό το salt; Ξέρετε, 546 02:02:20,880 --> 02:02:27,280 το salt, βάζετε το επίπεδο. Είναι σαν ένα κείμενο προθέματος που σε συνδυασμό με τον κωδικό πρόσβασης, 547 02:02:27,840 --> 02:02:33,680 δημιουργεί το hashed binary. Έτσι μετά έχετε ένα rainbow table. Ένα rainbow table είναι σαν 548 02:02:34,480 --> 02:02:42,400 ένα αρχείο πίνακα με κωδικούς πρόσβασης, angel, Stelios-133, οτιδήποτε. Και μετά την τιμή hash, Md5 hash, 549 02:02:42,400 --> 02:02:49,920 SH256 hash, οτιδήποτε. Αυτό είναι ένα rainbow table. Και χρησιμοποιείτε αυτό το rainbow table ως λεξικό 550 02:02:49,920 --> 02:02:54,560 προκειμένου να κάνετε την επίθεση brute force. Λέτε, εντάξει, εάν αυτή η τιμή hash ισούται με εκείνη, 551 02:02:54,560 --> 02:03:00,320 τότε ο κωδικός πρόσβασης είναι αυτός. Εντάξει. Αλλά αν έχετε το salt, τότε είναι Stelios-123 552 02:03:00,400 --> 02:03:07,600 συν το salt μου ή οποιοδήποτε σύνθετο, ας πούμε, κείμενο, και αυτό δημιουργεί μια άλλη τιμή hash. 553 02:03:07,600 --> 02:03:12,240 Έτσι είναι αδύνατο, σχεδόν αδύνατο για άλλους να το κάνουν αυτό. Αλλά το κόλπο είναι κάπως έτσι, 554 02:03:12,240 --> 02:03:19,920 εάν κάποιος σπάσει το WordPress, μπει στο salt και κάνει το αντίστροφο και δημιουργήσει ένα rainbow table 555 02:03:19,920 --> 02:03:27,520 με angel-123, Stelios-123, οτιδήποτε, συν το salt που βρίσκει μέσα στο αρχείο wp-config, 556 02:03:27,520 --> 02:03:34,400 θα δημιουργήσουν ένα rainbow table. Αποκτούν πρόσβαση στην SQL, my SQL, και μετά έχουν τους κωδικούς πρόσβασης 557 02:03:34,400 --> 02:03:52,080 ως καθαρό κείμενο. Ερώτηση; Μερικές φορές, εάν βάλετε ένα πρόσθετο ασφαλείας στο WordPress, 558 02:03:52,800 --> 02:03:59,360 από προεπιλογή, εκτός αν το αλλάξουν στις μεταγενέστερες εκδόσεις, από προεπιλογή, δεν αλλάζει 559 02:04:00,080 --> 02:04:06,240 από προεπιλογή. Αυτή είναι λοιπόν μια καλή προοπτική άποψη για το WordPress. Έχετε το πρόσθετο, ένα πρόσθετο ασφαλείας, 560 02:04:06,240 --> 02:04:12,320 που θα αλλάζει τα salts κάθε μήνα ή οτιδήποτε άλλο. Από προεπιλογή, δεν το κάνει αυτό. 561 02:04:12,320 --> 02:04:16,320 Ίσως στις μεταγενέστερες εκδόσεις του WordPress να το κάνουν. Δεν είμαι σίγουρος. Εντάξει. 562 02:04:17,040 --> 02:04:22,640 Οπότε, εντάξει, αυτό είναι το κόλπο. Εντάξει, αλλά αυτό δεν είναι το ζήτημα αυτή τη στιγμή. Είναι σαν τον κρυπτογραφικό 563 02:04:22,640 --> 02:04:26,960 αλγόριθμο. Είναι η επιλογή του αλγορίθμου που λένε ότι, εντάξει, αυτός είναι ένας 564 02:04:26,960 --> 02:04:34,880 καλός αλγόριθμος, αλλά για κωδικούς πρόσβασης ή ευαίσθητα δεδομένα, και αυτό προέρχεται από έναν έλεγχο ασφαλείας, 565 02:04:34,880 --> 02:04:41,360 ας πούμε, από το NIST, πρέπει να χρησιμοποιείτε συγκεκριμένους ορισμούς που έχουν εγκριθεί ως καλοί και για 566 02:04:41,360 --> 02:04:51,040 ευαίσθητα και ούτω καθεξής δεδομένα. Και αυτοί είναι αλγόριθμοι όπως ο Scrypt, ή όπως, πώς ονομάζεται ο άλλος, 567 02:04:51,840 --> 02:05:02,640 Bcrypt, PBKDF2 και ούτω καθεξής. Οπότε λέτε, γιατί το WordPress δεν το χρησιμοποιεί αυτό; 568 02:05:02,720 --> 02:05:08,560 Και χρησιμοποιούν μόνο πέντε. Είναι χαζοί; Είναι ηλίθιοι; Γιατί; Κανείς; 569 02:05:12,800 --> 02:05:19,920 Είναι πιο γρήγορο. Είναι το μειονέκτημα της ασφάλειας. Πρέπει να ξοδέψετε κάτι. Πρέπει να δώσετε 570 02:05:19,920 --> 02:05:28,000 κάτι για να πάρετε το όφελος. Οπότε παίρνετε έναν καλύτερο, ας πούμε αλγόριθμο κωδικού πρόσβασης. Μπορεί να είναι πιο αργός. 571 02:05:28,000 --> 02:05:33,520 Και εάν έχετε ένα WordPress, λένε, εντάξει, χρησιμοποιείτε WordPress. Ίσως πολλοί χρήστες μπουν 572 02:05:33,520 --> 02:05:38,880 στο ιστολόγιό σας, στο ηλεκτρονικό σας κατάστημα. Θα έχουν πολλαπλούς λογαριασμούς. Οπότε κάθε λογαριασμός πρέπει να κάνει αυτή τη 573 02:05:39,600 --> 02:05:46,400 σύνδεση. Και όταν συνδέεστε, ο διακομιστής θα πρέπει να δημιουργήσει την τιμή hash και μετά να συγκρίνει 574 02:05:46,400 --> 02:05:50,960 με τη βασική και μετά να συνδεθεί και ούτω καθεξής. Οπότε θα είναι αργό. Είναι λοιπόν σαν μια 575 02:05:50,960 --> 02:05:56,160 στρατηγική, ας πούμε, απόφαση που λένε, εντάξει, θα χρησιμοποιήσουμε MD5 επειδή είναι ένας 576 02:05:56,160 --> 02:06:03,600 γρήγορος αλγόριθμος επειδή θέλουμε οι πελάτες να είναι πιο γρήγοροι. Είναι λοιπόν σαν στρατηγική. Δεν είναι 577 02:06:03,600 --> 02:06:10,080 ότι μπορείτε πραγματικά να τους κατηγορήσετε. Είναι μια στρατηγική που επιλέγουν ότι χρειαζόμαστε απόδοση έναντι 578 02:06:10,080 --> 02:06:15,440 της ασφάλειας και έχουμε το salt ή οτιδήποτε άλλο. Και αυτό είναι το δύσκολο κομμάτι της κυβερνοασφάλειας, 579 02:06:15,440 --> 02:06:22,320 η απόφαση. Ποια είναι η απόφαση; Και αυτό είναι δύσκολο. Από τη ζωή σας, κλειδώνετε την πόρτα 580 02:06:22,320 --> 02:06:28,800 και λέτε, εντάξει, πρέπει να βάλω μια κάμερα, μια κάμερα IP; Πρέπει να κλείσω με πολλαπλές κλειδαριές; 581 02:06:28,800 --> 02:06:33,920 Έχει να κάνει λοιπόν με το ρίσκο, στην πραγματικότητα. Πρέπει να επιλέξετε. Πρέπει να αποφασίσετε. Και αυτό είναι το 582 02:06:33,920 --> 02:06:43,120 πιο δύσκολο κομμάτι. Εντάξει. Αυτοί είναι λοιπόν οι αλγόριθμοι που έχουμε, Argon, οτιδήποτε. Τους 583 02:06:43,120 --> 02:06:49,920 έχουν επίσης και σε άλλες περιπτώσεις. Έχουν επίσης εδώ άλλες λεπτομέρειες, παραδείγματα, πώς να το χρησιμοποιήσετε και ούτω 584 02:06:50,000 --> 02:07:00,240 καθεξής. Και επιτρέψτε μου να επιστρέψω. Εντάξει. Εντάξει. Οπότε το κόλπο εδώ θα είναι κάπως έτσι. Να αλλάξετε αυτόν τον αλγόριθμο, 585 02:07:00,240 --> 02:07:06,480 δηλαδή από SH 256 σε Scrypt ή οτιδήποτε άλλο, και αυτό θα λυθεί. Να γίνουν τα πράγματα σωστά. 586 02:07:06,480 --> 02:07:12,800 Εντάξει. Επιτρέψτε μου να πάω εκεί που είναι. Συγγνώμη. Εδώ στις αδυναμίες (weaknesses). 587 02:07:15,120 --> 02:07:19,040 Οπότε θέλουμε, μπορούμε απλώς να λύσουμε το ζήτημα εάν βιαζόμαστε ή οτιδήποτε άλλο, 588 02:07:19,040 --> 02:07:24,320 εάν θέλουμε να μάθουμε περισσότερα, μπορείτε να δείτε εδώ τη χρήση ενός σπασμένου ή επικίνδυνου κρυπτογραφικού αλγορίθμου, 589 02:07:24,320 --> 02:07:32,480 πολλές λεπτομέρειες και παραδείγματα και ούτω καθεξής. Μπορείτε να δείτε εδώ αυτό. Εντάξει. Αυτό είναι πολύ, 590 02:07:34,000 --> 02:07:42,960 πολύ απλό hack. Και οτιδήποτε άλλο. Εντάξει. Έχουν πολλά πράγματα όπως κώδικα PSP και ούτω καθεξής. 591 02:07:42,960 --> 02:07:48,240 Χρήση ασθενούς hash. Εάν έχετε ένα hash που είναι αδύναμο και εδώ, παραδείγματα και ούτω καθεξής. 592 02:07:49,760 --> 02:07:57,200 Μπορείτε να δείτε επίσης C οτιδήποτε. Δεν ασχολούμαι με τη C. Γνωρίζω C, προγραμματισμό σε C. Εντάξει. Αλλά εάν 593 02:07:57,200 --> 02:08:03,280 ήθελα να μάθω περισσότερα για τη C, θα πήγαινα εδώ και θα έλεγα, ω, τι είναι αυτό; Αυτό είναι ενδιαφέρον. Οπότε 594 02:08:04,000 --> 02:08:08,240 πάλι, μπορείτε να μάθετε πράγματα. Μπορείτε να μάθετε πράγματα που θέλετε να γνωρίζετε. Δεν ξέρω 595 02:08:08,960 --> 02:08:14,320 πώς να μαθαίνω C. Εντάξει. Προχωράτε και μαθαίνετε PHP. Και λέτε, εντάξει, θα κάνω απλώς το 596 02:08:14,320 --> 02:08:19,040 κόλπο με την PHP ή την Python, επιλέγω τον κωδικό πρόσβασης και ούτω καθεξής. Και αυτό είναι όλο. Αλλά εάν 597 02:08:19,040 --> 02:08:24,400 θέλετε να μάθετε περισσότερα, μπορείτε να πάτε εδώ και να δείτε περισσότερες λεπτομέρειες. Αυτό είναι το πράγμα που πολλοί άνθρωποι, 598 02:08:24,400 --> 02:08:29,680 επίσης και οι συμφοιτητές σας εδώ μου είπαν, δεν θέλω να μάθω να είμαι master στη C. 599 02:08:30,640 --> 02:08:35,680 Θέλω να ασχοληθώ με την κυβερνοασφάλεια, αλλά δεν θέλω να μάθω να είμαι ειδικός στη C. Εντάξει. 600 02:08:35,680 --> 02:08:40,960 Δεν είναι ότι πρέπει να μάθετε τα πάντα. Εντάξει. Δεν γνωρίζω τόσο πολύ assembly, 601 02:08:40,960 --> 02:08:47,440 αλλά δεν συμμετέχω σε projects που είναι σε πολύ χαμηλότερο επίπεδο όπως τα ενσωματωμένα συστήματα και ούτω καθεξής. Ίσως 602 02:08:47,440 --> 02:08:54,000 στο μέλλον να γίνω καλύτερος σε αυτό. Αλλά αν πληρώνομαι, εντάξει. Είναι λοιπόν σαν να μπορείτε να μάθετε 603 02:08:54,000 --> 02:08:58,480 κάτι επειδή σας αρέσει, αλλά πρέπει επίσης να δείτε ποιες είναι οι ευκαιρίες, πληρώνεστε, 604 02:08:58,480 --> 02:09:04,560 ποια είναι τα καθήκοντά σας και ούτω καθεξής. Έτσι τελικά αποκτάτε μια ισορροπία και μαθαίνετε πράγματα περισσότερο 605 02:09:04,560 --> 02:09:10,480 που σας αρέσουν... σίγουρα θα πρέπει να σας αρέσει αυτό που κάνετε στη δουλειά σας και μετά πληρώνεστε. 606 02:09:10,480 --> 02:09:20,560 Οπότε δεν είμαι προγραμματιστής παιχνιδιών. Εντάξει. Επειδή τα χρήματα δεν άξιζαν τον κόπο. Εξακολουθώ να λαμβάνω αυτή την 607 02:09:20,560 --> 02:09:24,960 ανατροφοδότηση από συναδέλφους ότι δεν είναι καλή ιδέα να είσαι προγραμματιστής παιχνιδιών αυτή τη στιγμή. 608 02:09:25,920 --> 02:09:32,560 Δεν αξίζει τον κόπο, ας πούμε, η προσπάθεια. Αλλά όχι, είναι ωραία δουλειά, η ανάπτυξη παιχνιδιών. Μου αρέσουν τα παιχνίδια. 609 02:09:32,560 --> 02:09:39,440 Οπότε εδώ υπάρχουν πολλά πράγματα στην πραγματικότητα, και είναι κάπως... ακόμα και εγώ που είμαι πέντε χρόνια τώρα ή επτά 610 02:09:39,440 --> 02:09:46,240 χρόνια τώρα στην έρευνα για την κυβερνοασφάλεια. Υπάρχουν πράγματα που ακόμα μου αρέσει να μαθαίνω από αυτή τη λεπτομέρεια. 611 02:09:46,240 --> 02:09:53,840 Οπότε αναφέρει ακόμη και FPGAs. Ήταν τον τελευταίο μήνα που έκανα παραγγελία για εξοπλισμό στο πανεπιστήμιό μου 612 02:09:53,840 --> 02:10:00,800 για να πάρω FPGAs για να ξεκινήσω έρευνα στην κβαντική κρυπτογραφία και ούτω καθεξής. Οπότε αυτές 613 02:10:00,800 --> 02:10:06,560 είναι χρήσιμες πληροφορίες για μένα. Θα δω πώς το FPGA σχετίζεται με αυτό, 614 02:10:06,560 --> 02:10:13,040 με τον αλγόριθμο hashing και ούτω καθεξής. Και αυτό θα φέρει εξοικείωση. Θα εξοικειωθώ περισσότερο. 615 02:10:14,000 --> 02:10:21,600 Οπότε εντάξει, αν το έβλεπα αυτό ένα χρόνο πριν, δεν θα με ένοιαζε. Αλλά τώρα που παρήγγειλα εξοπλισμό 616 02:10:21,600 --> 02:10:28,480 για FPGA και ξεκινάω μια νέα έρευνα, θα δω πώς το FPGA σχετίζεται με τις τιμές hashing 617 02:10:28,480 --> 02:10:35,840 και αυτό θα γεννήσει περισσότερες ιδέες, περισσότερη έρευνα που πρέπει να μάθω, περισσότερα χρήματα επειδή περισσότερα 618 02:10:35,840 --> 02:10:44,000 ερευνητικά έργα και ούτω καθεξής. Εντάξει, οπότε εδώ υπάρχουν επίσης λεπτομέρειες και παραπομπές και ούτω καθεξής. Δεν 619 02:10:44,000 --> 02:10:49,840 θα πάω εκεί. Μπορείτε επίσης να δείτε CVEs αλλά αυτό είναι πολύ παλιό. Δεν ξέρω αν υπάρχουν άλλα CVEs 620 02:10:49,840 --> 02:11:00,160 όπως πολύ σοβαρά, αλλά αυτό συμβαίνει. Γιατί; Γιατί δεν υπάρχουν, ας πούμε, είδατε SQL injection. 621 02:11:00,160 --> 02:11:09,200 Ήταν το 2023. Εδώ είναι όλα πολύ παλιά CVEs. Δεν υπάρχει νέο λογισμικό που να έχει αυτά τα προβλήματα. Γιατί; 622 02:11:10,320 --> 02:11:16,400 Γιατί συμβαίνει αυτό; Είναι επειδή είναι απλό να λυθεί; Το άλλο ήταν επίσης απλό. Αλλά γιατί; 623 02:11:17,120 --> 02:11:25,040 Γιατί συμβαίνει αυτό; Είναι απλό. Αυτό είναι ακόμη πιο απλό από το SQL injection. Γιατί σχεδόν, 624 02:11:25,040 --> 02:11:29,840 γιατί; Γιατί δεν υπάρχουν νέα CVEs σε αυτό; Τι συμβαίνει; 625 02:11:37,360 --> 02:11:42,800 Το αποτέλεσμα δεν λύνει το πρόβλημα. Το πρόβλημα λύθηκε λόγω της επιλογής του αλγορίθμου. 626 02:11:43,760 --> 02:11:50,560 Οπότε δεν είναι αυτό. Αλλά η μισή σας απάντηση είναι σωστή. Όλοι χρησιμοποιούν. Γιατί; 627 02:11:51,840 --> 02:11:57,840 Γιατί όλοι χρησιμοποιούν; Όλοι θα έπρεπε να χρησιμοποιούν επίσης φιλτράρισμα SQL. Γιατί δεν το χρησιμοποιούν; Είναι απλό. 628 02:11:58,960 --> 02:12:06,880 Γιατί όλοι οι άνθρωποι, όλες οι εταιρείες λογισμικού χρησιμοποίησαν καλύτερα σχήματα κρυπτογράφησης; Ναι; 629 02:12:07,200 --> 02:12:12,960 Ναι, σωστά. Κανονισμοί και πρότυπα, εντάξει. 630 02:12:15,200 --> 02:12:20,400 Η κληρονομιά θα μπορούσε επίσης να είναι και ο GDPR. Αλλά ήταν πριν από αυτό που επέλεξαν ότι, 631 02:12:20,400 --> 02:12:29,280 εντάξει, αποθηκεύετε έναν κωδικό πρόσβασης. Θα έπρεπε να είναι. Με το WordPress, δεν πρέπει. Ναι, ναι, μου λέτε. 632 02:12:29,680 --> 02:12:39,760 Ναι, μπορείτε. Αλλά το πρότυπο δεν λέει ότι πρέπει να χρησιμοποιήσετε μια συγκεκριμένη προστασία hash. Ο κανόνας είναι 633 02:12:39,760 --> 02:12:46,320 αυτός. Ο κανόνας δεν είναι ότι δεν πρέπει να κλέβουν τους κωδικούς πρόσβασης. Ξέρετε, κανονισμοί και πρότυπα. 634 02:12:47,520 --> 02:12:53,600 Checkboxes. Το πέταξα αυτό; Checkboxes. Και αυτό είναι το μειονέκτημα των κανονισμών 635 02:12:53,760 --> 02:13:01,280 και των προτύπων. Ακολουθείτε ένα πρότυπο. Είστε ασφαλείς; Όχι, δεν είστε. Αλλά νομικά, είστε. 636 02:13:04,000 --> 02:13:09,040 Και το λέω αυτό γιατί είναι μια καλή ευκαιρία, ξέρετε, επειδή έχω δει πολλές παρουσιάσεις 637 02:13:09,040 --> 02:13:16,800 σχετικά με κανονισμούς, πρότυπα, NIST, ISO, οτιδήποτε άλλο. Και για μένα, είναι το αντίθετο. Πρέπει να 638 02:13:16,800 --> 02:13:23,680 κατανοήσουμε τη στρατηγική, τους κανονισμούς από αυτή την προοπτική, από την τεχνική προοπτική, 639 02:13:23,680 --> 02:13:30,720 γιατί τότε καταλαβαίνουμε το πρόβλημα που έχουμε με τους κανονισμούς. Και εντάξει, δεν μπορούμε να το λύσουμε 640 02:13:30,720 --> 02:13:36,160 αυτό. Συμμόρφωση (Compliance), θα εξακολουθείτε να χρειάζεστε απλώς τη συμμόρφωση, να γίνουν τα checkboxes, αλλά θα έπρεπε να το 641 02:13:36,160 --> 02:13:48,960 γνωρίζουμε αυτό. Αυτό έχει να κάνει με τη μεθοδολογία και την προοπτική. Πρέπει να βλέπετε τους κανονισμούς 642 01:13:48,960 --> 01:13:50,720 από την τεχνική προοπτική. Αυτό είναι το δικό μου... 643 01:13:54,880 --> 01:14:00,160 οι κανονισμοί είναι καλοί και τα πρότυπα. Ελέγχω τη λίστα, την τεράστια λίστα και 644 01:14:00,160 --> 01:14:06,000 βλέπω αυτά ως συστάσεις, αλλά πρέπει να κατανοήσετε το πρόβλημα. Αυτό είναι το θέμα μου. 645 01:14:06,640 --> 01:14:11,440 Και, ξέρετε, αν απλώς πάτε και τσεκάρετε το checkbox, μπορείτε ακόμα να το κάνετε. Και το κάνω και 646 01:14:11,440 --> 01:14:16,880 εγώ αυτό. Απλώς κάνω κλικ στο checkbox ότι έχει γίνει. Αλλά γνωρίζω το πρόβλημα. Τουλάχιστον γνωρίζω. 647 01:14:16,880 --> 01:14:23,200 Θα έπρεπε να γνωρίζω. Δεν θα έπρεπε να είμαι σίγουρος ότι, ναι, επειδή έχω αυτόν τον κανονισμό, είναι εντάξει. 648 01:14:23,200 --> 01:14:33,760 Αλλά και πάλι, το όφελος είναι εκεί. Το όφελος είναι εκεί γιατί αυτό συμβαίνει. Τουλάχιστον χρησιμοποιούν 649 01:14:33,760 --> 01:14:40,400 ισχυρή κρυπτογραφία στο Calgon. Και αυτό είναι καλό. Τελικά είναι καλό. Το ίδιο θα μπορούσε να συμβεί με το 650 01:14:40,400 --> 01:14:47,120 SQL injection σύντομα. Ναι, ίσως, αλλά τέλος πάντων. Αλλά αυτό είναι, ξέρετε, ένα συμπέρασμα που είχα εδώ 651 01:14:47,120 --> 01:14:52,160 σε εκείνη την πλευρά. Και αυτό είναι νέο. Είναι η πρώτη φορά που το αναφέρω αυτό. Δεν είναι ότι προετοίμασα 652 01:14:53,280 --> 01:15:00,080 αυτά τα συμπεράσματα. Απλώς ήρθε αυτή τη στιγμή. Εντάξει. Από την έρευνα μου που κάναμε μόλις τώρα 653 01:15:00,080 --> 01:15:07,040 για αυτά τα ζητήματα. Εντάξει. Μπορείτε λοιπόν να δείτε ότι η κυβερνοασφάλεια είναι μια χαρά επειδή δημιουργείτε πράγματα. 654 01:15:07,840 --> 01:15:12,640 Αυτή τη στιγμή, δεν είχα ήδη αυτή την παρουσίαση. Δεν είχα αυτά τα συμπεράσματα. Αλλά 655 01:15:13,280 --> 01:15:19,200 εδώ μπορώ να δω. Μπορώ να δω το συμπέρασμα αυτού. Φυσικά, μπορεί να υπάρχουν έρευνες που να λένε ότι, 656 01:15:19,200 --> 01:15:24,160 ξέρετε, υπάρχουν κάποιες ευπάθειες που μπορούν να πάνε στα κοινά αποθετήρια ευπαθειών και να 657 01:15:24,160 --> 01:15:30,560 πούνε, δείτε αν υπάρχουν άλλα αποθετήρια εκεί με ευπάθειες όπως αυτή. Ίσως υπάρχουν, 658 01:15:30,560 --> 01:15:38,640 και αυτό είναι λάθος. Αυτό μπορεί να είναι μια ερευνητική εργασία. Εντάξει. Ψάξτε γύρω-γύρω και πείτε γιατί και γιατί και γιατί. 659 01:15:38,640 --> 01:15:46,160 Και γιατί το WordPress δεν είναι νομικά, ξέρετε, υποχρεωμένο να το εκπληρώσει αυτό και εξακολουθούν 660 01:15:46,160 --> 01:15:52,560 να έχουν MD5 στους κωδικούς πρόσβασης. Γιατί; Είναι μια ερευνητική ερώτηση. Εντάξει. Ίσως κάποιος από εσάς γνωρίζει, 661 01:15:52,560 --> 01:15:57,280 αλλά εγώ όχι. Εάν κάποιος θέλει μια ερευνητική εργασία μαζί μου, είναι μια χαρά. 662 01:15:57,600 --> 02:06:09,200 Εντάξει. Οπότε εδώ είναι ένα, οπότε MD5 SH 256. Μπορώ να πάω και να το λύσω, αλλά μπορώ να προσπαθήσω να μην το κάνω, 663 02:06:09,200 --> 02:06:16,000 αλλά ίσως μπορώ να προσπαθήσω. Είναι Scrypt, ας πούμε, Scrypt, Scrypt. Δεν υπάρχει τεκμηρίωση εδώ. 664 02:06:16,000 --> 02:06:20,480 Μπορείτε να δείτε περισσότερες πληροφορίες εδώ. Τι είναι οι αλγόριθμοι Hashing και ούτω καθεξής. Τα μαθηματικά είναι ωραία. 665 02:06:21,440 --> 02:06:29,680 Εντάξει. Ίσως μπορώ να καλύψω ένα παράδειγμα εδώ. Οπότε λέει 256. Είναι Scrypt κάπου; 666 02:06:33,040 --> 02:06:40,320 Είτε εάν, ακόμη και αν δεν υπάρχει σύσταση, μπορείτε να πάτε Scrypt, 667 02:06:40,880 --> 02:06:44,720 PHP, πώς να Google stack overflow ή οτιδήποτε άλλο. Εντάξει. 668 02:06:45,040 --> 02:06:53,040 Εντάξει. Μπορώ να χρησιμοποιήσω το Scrypt; Ήταν PHP ή Python; Ήταν Python. Εντάξει. Ας επιστρέψουμε. 669 02:06:54,320 --> 02:07:01,360 Scrypt, Python, πώς να, εντάξει. Έχει κάτι εδώ, κάτι εκεί. Πηγαίνετε στην αναζήτηση. 670 02:07:02,880 --> 02:07:07,360 Έχουν pip install Scrypt. Έχουν αυτά, μπλα μπλα μπλα. 671 02:07:07,840 --> 02:07:12,640 Ναι. Και ίσως έχουν επίσης ένα παράδειγμα εδώ, πώς να το χρησιμοποιήσετε. 672 02:07:14,080 --> 02:07:20,000 Ναι. Έχουν, όπως py script, σαν αυτή τη βιβλιοθήκη, ίσως μπορώ να πάω να δω τι συμβαίνει. 673 02:07:20,720 --> 02:07:26,880 Εδώ είναι αυτό. Μπορώ να πάω και, εντάξει. Είναι στο αρχείο application py, 674 02:07:27,760 --> 02:07:40,720 application py. Και μετά, πού ήταν αυτό; Η γραμμή. Νομίζω ότι είναι αυτή. Πού είναι οι γραμμές; 675 02:07:41,360 --> 02:07:53,440 Α, ήταν μια άλλη γραμμή. Τέσσερα; 489. Ναι. Είναι πολλαπλή. Είναι σε δύο μέρη. Είναι δύο φορές. 676 02:07:54,400 --> 02:08:00,160 Είναι δύο φορές. Ναι. Θα πάω πίσω εδώ. Θα κάνω εισαγωγή (import). Ω, έλα τώρα. Edit. 677 02:08:02,720 --> 02:08:08,240 Ναι. Δεν μπορώ να κάνω επεξεργασία επειδή μπαίνω απευθείας μέσα. Οπότε θα πάω πίσω, check depth, 678 02:08:09,040 --> 02:08:16,560 application py. Ας πάμε. Application py. Και μετά, γιατί συμβαίνει; 679 02:08:16,640 --> 02:08:25,680 Ναι. Είναι στο κύριο αποθετήριο. Έχετε δίκιο. Είναι κάπως, ναι. Είναι σαν να πρέπει να το κάνω fork. 680 02:08:25,680 --> 02:08:30,320 Τέλος πάντων, κρίμα. Τέλος πάντων, δεν θα το λύσω αυτό τώρα, αλλά μη διστάσετε. Μπορείτε να το κλωνοποιήσετε. 681 02:08:30,880 --> 02:08:35,280 Νομίζω ότι κλωνοποιήθηκε, αλλά τέλος πάντων, μπορείτε να το κάνετε αυτό ή μπορείτε να το προτείνετε στον φοιτητή, 682 02:08:35,280 --> 02:08:40,720 αλλά νομίζω ότι το έχει ήδη λύσει. Δεν είμαι σίγουρος. Τέλος πάντων, οπότε εδώ μπορείτε να δείτε πώς λειτουργεί αυτό 683 02:08:40,720 --> 02:08:45,200 και ενσωματώνετε αυτόν τον κώδικα στον κώδικά σας και λύνετε τα πράγματα. Πηγαίνετε στην οθόνη, 684 02:08:45,200 --> 02:08:50,640 και βλέπετε ότι έχει λυθεί και αυτό είναι όλο. Εντάξει. Εύκολα. Εύκολος τρόπος. Εύκολος τρόπος. 685 02:08:50,640 --> 02:08:54,880 Και αυτός είναι ο σκοπός μου. Ρωτάω πολλούς ανθρώπους, προγραμματιστές, προγραμματίζετε; Ναι. 686 02:08:55,920 --> 02:08:59,920 Τι είδους γλώσσες; Python, Ruby, οτιδήποτε. Γνωρίζετε αυτό το κουμπί; 687 02:09:00,800 --> 02:09:06,080 Το έχετε πατήσει ποτέ; Όχι. Τι είναι αυτό; Δεν γνωρίζω. Και λένε μερικές φορές, εντάξει, 688 02:09:06,080 --> 02:09:11,600 θέλω να έχω περισσότερη ασφάλεια και οτιδήποτε άλλο. Και αυτή είναι η δική μου προοπτική. Στους προπτυχιακούς 689 02:09:11,600 --> 02:09:18,160 φοιτητές, θα το διδάξω αυτό. Πηγαίνετε στην ασφάλεια, κάντε κλικ, δείτε. Θα γίνετε τελικά ένας καλύτερος προγραμματιστής 690 02:09:18,160 --> 02:09:23,360 επειδή θα μάθετε περισσότερα πράγματα και ούτω καθεξής. Και αυτό είναι ωραίο γιατί ο κώδικάς σας θα είναι 691 02:09:23,360 --> 02:09:29,120 ασφαλής και μπορείτε να το προωθήσετε και να πείτε, ω, γνωρίζω κάποια ανάπτυξη ασφάλειας και τις πρακτικές της. 692 02:09:29,120 --> 02:09:35,120 Είναι σημαντικό. Εντάξει. Και είναι ωραίο να το έχετε. Εντάξει. Ας πάμε πίσω και ας δούμε τι άλλα ζητήματα 693 02:09:35,120 --> 02:09:49,360 έχουμε. Ασφάλεια. Ασφάλεια. Ναι. Ας δούμε. Ναι. Είναι παρόμοιο με τα άλλα που έχουμε. 694 02:09:50,080 --> 02:09:54,320 Εντάξει. Είναι εύκολο να γράψετε ένα εύρος κανονικής έκφρασης που ταιριάζει σε ένα ευρύτερο εύρος. Ας δούμε το 695 02:09:55,360 --> 02:10:03,520 κοινό ζήτημα, ένα ευρύτερο εύρος. Κάποιος γνωρίζει τι είναι αυτό; Ποιο θα έπρεπε να είναι το ζήτημα; Λέει ότι 696 02:10:03,520 --> 02:10:11,520 μπορείτε να έχετε ένα πολύ ευρύτερο εύρος. Κάτι καλύτερο από αυτό. Αλλά γιατί; Τι μπορεί να πάει στραβά; 697 02:10:11,520 --> 02:10:23,360 Επιτρέψτε μου να κάνω λίγο ζουμ εδώ. Ω, τι είναι αυτό; Ω, συγγνώμη. Πού είσαι; Εδώ. Συγγνώμη. Αυτή η γραμμή. 698 02:10:23,360 --> 02:10:32,560 476 εδώ. Μπορείτε να δείτε περίεργα σύμβολα, search, μπλα μπλα μπλα. Και εξηγεί εδώ ότι 699 02:10:32,640 --> 02:10:36,480 είναι εύκολο να γράψετε ένα εύρος κανονικής έκφρασης που ταιριάζει σε ένα ευρύτερο εύρος όπως αυτό. 700 02:10:38,160 --> 02:10:42,320 Σας θυμίζει κάτι από προηγούμενα παραδείγματα που σας έδειξα; 701 02:10:44,160 --> 02:10:49,840 Ποια είναι η διαφορά μεταξύ αυτού και ποια είναι η διαφορά μεταξύ εκείνου; Ο φοιτητής δεν 702 02:10:49,840 --> 02:10:55,040 ήξερε για την ασφάλεια. Όταν είδε τον κώδικά του, είπε, α, το γνωρίζω αυτό. Οι άλλοι φοιτητές ήταν κάπως, 703 02:10:55,680 --> 02:11:01,600 τι είναι αυτό; Ο φοιτητής που έγραψε τον κώδικα ήταν κάπως, το γνωρίζω αυτό. Γνωρίζω αυτά τα πράγματα. 704 02:11:01,600 --> 02:11:07,440 Πηγαίνει, ξέρετε, αμέσως σε δύο δευτερόλεπτα, λέει, α, ναι. Αυτό είναι το πρόβλημα. 705 02:11:08,320 --> 02:11:15,200 Ποιο είναι το πρόβλημα; Το ήξερε επειδή έγραψε τον κώδικα. Οπότε κάτι είναι διαφορετικό εκεί. Ένα εύρος (range). 706 02:11:18,080 --> 02:11:23,520 Γνωρίζει κανείς αυτή την έκφραση; Όχι. Κανονικές εκφράσεις (Regular expressions). Κανονικές εκφράσεις. Κάτι 707 02:11:23,520 --> 02:11:29,920 δύσκολο. Πολύ, πολύ δύσκολο. Πολύ δύσκολο γιατί εγώ, ξέρετε, διάβασα πολύ. Ολοκλήρωσα 708 02:11:29,920 --> 02:11:34,880 τις σπουδές, συγγνώμη. Και δεν ήξερα πώς να γράψω μια κανονική έκφραση, κάτι που είναι περίεργο. 709 02:11:35,520 --> 02:11:42,080 Και μετά είδα έναν ολόκληρο κόσμο με κανονικές εκφράσεις. Τι είναι αυτό; Χρειάζομαι τέσσερα χρόνια 710 02:11:42,080 --> 02:11:47,280 ακόμη για να μελετήσω μόνο και μόνο για να μάθω τις κανονικές εκφράσεις. Πείτε μου. Ναι; 711 02:11:47,600 --> 02:11:54,160 Σωστά. Είναι σαν ένα εύρος. 712 02:12:00,880 --> 02:12:03,760 Σωστά. Σωστά. 713 02:12:07,360 --> 02:12:07,760 Ναι. 714 02:12:08,320 --> 02:12:19,920 Σωστά. Έχετε πολύ δίκιο. Ναι. 715 02:12:20,080 --> 02:12:22,080 Ναι. 716 02:12:34,160 --> 02:12:41,680 Άλλοι ειδικοί χαρακτήρες. Ναι. Η περίπτωση έχει ως εξής: Ορίζετε στατικά ορισμένους 717 02:12:42,640 --> 02:12:49,200 επιπλέον πρόσθετους ειδικούς χαρακτήρες. Ίσως μπορείτε να πάτε εδώ. Όλοι οι ειδικοί χαρακτήρες. 718 02:12:50,880 --> 02:12:56,160 Ξέρετε, ένα σύγχρονο παιδί δεν θα πάει στη Google. Θα πάει στο ChatGPT και θα γράψει, 719 02:12:57,840 --> 02:13:01,440 πες μου όλους τους ειδικούς χαρακτήρες που κυκλοφορούν εκεί έξω. Εγώ θα κάνω κλικ στη Google. 720 02:13:03,040 --> 02:13:11,040 Ας δούμε. Ναι, μπορείτε να δείτε. Νομίζουμε ότι ειδικοί χαρακτήρες είναι το ερωτηματικό, 721 02:13:11,040 --> 02:13:16,320 το θαυμαστικό ή οτιδήποτε άλλο. Υπάρχουν πάρα πολλοί από αυτούς, αλλά μπορείτε να δείτε εδώ αυτό, 722 02:13:17,040 --> 02:13:19,920 ναι, οι ειδικοί χαρακτήρες είναι πολλοί, πολλοί, πολλοί, πολλοί περισσότεροι. 723 02:13:23,520 --> 02:13:28,080 Ναι, ίσως υπάρχουν ειδικοί χαρακτήρες. Δεν ξέρω αν, ω, νομίζω ότι είναι ενιαίο. 724 02:13:28,080 --> 02:13:36,800 Νομίζω ότι, αχ, ίσως υπάρχουν. Ναι, ναι. Εδώ. Είμαστε ξεχωριστοί. 725 02:13:39,600 --> 02:13:44,880 Στην Πορτογαλία, οι Πορτογάλοι μου λένε ότι, εντάξει, τι είναι αυτό; Γράφετε στα μαθηματικά, 726 02:13:44,880 --> 02:13:51,760 σαν να μιλάτε με εξισώσεις στην Ελλάδα, επειδή τα περισσότερα γράμματα είναι στα μαθηματικά. 727 02:13:57,120 --> 02:14:02,720 Εντάξει, αυτοί είναι λοιπόν οι ειδικοί σύμβολοι και δεν τους εμπλέκουμε. Λοιπόν, όταν το κάνουμε αυτό, 728 02:14:03,280 --> 02:14:11,680 κάπως έτσι, μπορούμε να εμπλέξουμε όλους τους ειδικούς χαρακτήρες εκτός από το A έως το Z, ή το A κεφαλαίο έως το 729 02:14:11,680 --> 02:14:17,920 Z κεφαλαίο, ή οτιδήποτε άλλο. Δεν θυμάμαι την έκφρασή σας. Είναι λοιπόν σαν να ορίζετε το πεδίο εφαρμογής. 730 02:14:17,920 --> 02:14:24,640 Χρειάζεστε μόνο γράμματα, γράμματα και αριθμούς, και όχι οτιδήποτε άλλο. Επομένως, αποκλείετε οτιδήποτε άλλο. 731 02:14:24,640 --> 02:14:32,800 Εντάξει, και αυτή είναι η πρόταση εδώ. Αυτό είναι λοιπόν σαν μια φόρμα αναζήτησης. Είναι λοιπόν σαν ένα SQL injection, 732 02:14:32,800 --> 02:14:39,360 γιατί δεν θυμάμαι τι κάνει, αλλά είναι σαν να μπορείτε να έχετε μια φόρμα αναζήτησης για να κάνετε 733 02:14:39,360 --> 02:14:45,200 κάτι, για να ψάξετε κάτι για, και μετά μπορείτε να βάλετε ειδικά σύμβολα και να εκτελέσετε εντολές, 734 02:14:45,200 --> 02:14:51,280 αυθαίρετες εντολές μέσα στην πλατφόρμα, μέσα στον διακομιστή, ή οπουδήποτε αλλού. Αυτό είναι κακό, εντάξει. Δεν 735 02:14:51,280 --> 02:14:58,320 είναι μόνο για το SQL injection. Και εάν πάτε στο CW improper input validation, δεν είναι 736 02:14:58,320 --> 02:15:03,360 SQL injection επειδή δεν είναι μια εντολή SQL. Είναι σαν ένα script Python. Και αυτό είναι πολύ 737 02:15:03,360 --> 02:15:11,280 σοβαρό, εντάξει, επειδή κάποιος μπορεί να εκτελέσει εντολές μέσα στο ερώτημα αναζήτησης που βρίσκεται μέσα στην Python. 738 02:15:11,280 --> 02:15:19,840 Μπορεί να αναλάβει τον έλεγχο του διακομιστή, στην πραγματικότητα, εντάξει. Έτσι, ακατάλληλη επικύρωση εισόδων (improper validation of inputs), μπορείτε να δείτε 739 02:15:19,840 --> 02:15:26,800 παραδείγματα εδώ και οτιδήποτε άλλο, υλοποίηση, αρχιτεκτονική και σχεδιασμός, οτιδήποτε. Και υπάρχουν 740 02:15:26,880 --> 02:15:34,000 επίσης ορισμένες λεπτομέρειες εδώ, παραδείγματα για το τι μπορεί να πάει στραβά. Και μπορείτε να δείτε επίσης μια C, ας πούμε, 741 02:15:35,600 --> 02:15:43,520 παραδείγματα εδώ σε προγραμματισμό C, και άλλα παραδείγματα με μεθόδους get ή post σε μια PHP, 742 02:15:44,240 --> 02:15:53,040 και ούτω καθεξής. Υπάρχουν πολλαπλά CVEs. Μπορείτε να δείτε ακόμη και ένα CVE σε μεγάλα γλωσσικά μοντέλα (LLMs) που έχουν 743 02:15:53,120 --> 02:16:01,200 είσοδο, ας πούμε, ακατάλληλη επικύρωση εισόδου. Δεν γνωρίζω τα πρότυπα. Δεν είμαι ειδικός στα 744 02:16:01,200 --> 02:16:08,640 πρότυπα. Η υπόθεσή μου ήταν πριν ότι, εντάξει, αφορά τα πρότυπα. Δυστυχώς μπορούμε να δούμε εδώ 745 02:16:08,640 --> 02:16:16,160 ότι υπάρχουν CVEs στις μέρες μας σε αυτή την πλευρά. Οπότε ίσως τα πρότυπα δεν είναι πολύ σοβαρά ή όχι. Δεν είμαι 746 02:16:16,160 --> 02:16:22,880 σίγουρος. Σίγουρα όλα τα πρότυπα αφορούν τους κωδικούς πρόσβασης, ακόμη και εγώ ο ίδιος. Όταν βρήκα μια φοιτήτρια, 747 02:16:22,880 --> 02:16:31,920 υποψήφια διδάκτωρ, που φτιάχνει μια πλατφόρμα για εκπαίδευση για να μάθουν για το Arduino και έχει μια φόρμα σύνδεσης. 748 02:16:31,920 --> 02:16:38,320 Και λέει, εντάξει, έχω ένα Arduino και ξέρω ότι η κυβερνοασφάλεια είναι πολύ σημαντική και 749 02:16:38,320 --> 02:16:44,800 προσπαθώ να το ενεργοποιήσω αυτό και ούτω καθεξής. Δεν γνωρίζει για την κυβερνοασφάλεια, παρόλο που είναι υποψήφια διδάκτωρ, 750 02:16:44,800 --> 02:16:51,360 τέλος πάντων. Αλλά μετά μου είπε ότι, όχι, δεν έχω προσωπικά δεδομένα. Αποθηκεύετε κωδικούς πρόσβασης 751 02:16:51,360 --> 02:16:56,560 για τις φόρμες σύνδεσης; Ναι, αποθηκεύω. Τότε έχετε κωδικούς πρόσβασης. Πρέπει να ασφαλίσετε τους κωδικούς πρόσβασής σας. 752 02:16:56,560 --> 02:17:04,320 Αυτό είναι το ελάχιστο που μπορείτε να κάνετε. Ακόμη και χωρίς πρότυπα, ήταν η δική μου πρόταση ότι στο ελάχιστο, 753 02:17:04,320 --> 02:17:11,440 εντάξει, υπάρχουν και άλλα ζητήματα που μπορεί να υπάρχουν. Αλλά μια παραβίαση δεδομένων που θα αποκάλυπτε έναν κωδικό πρόσβασης του 754 02:17:11,520 --> 02:17:17,680 φοιτητή σας θα ήταν πρόβλημα. Η πρώτη ερώτηση στην πραγματικότητα ήταν, εντάξει, επειδή είναι καλό να ρωτάτε, 755 02:17:18,480 --> 02:17:25,280 οι κωδικοί πρόσβασης που αποθηκεύετε είναι σε καθαρό κείμενο ή είναι σε hash; Μου είπε τι είναι το hash. 756 02:17:29,920 --> 02:17:35,760 Και μετά της είπα, εντάξει, τι είδους βάση δεδομένων χρησιμοποιήσατε; Μου είπε ότι χρησιμοποιώ Firebase. 757 02:17:36,720 --> 02:17:42,480 Εντάξει, σκέφτηκα ότι, εντάξει, Firebase, μπορεί να το έχουν αυτό από προεπιλογή, επειδή είναι σαν το Firebase, 758 02:17:42,480 --> 02:17:49,040 αν δεν το κάνετε, χρησιμοποιεί κάποιος το Firebase; Εντάξει. Είναι σαν μια πολύ εύκολη βάση δεδομένων από την Google 759 02:17:49,040 --> 02:17:53,360 που μπορείτε πραγματικά να εκθέσετε τη θύρα και να εκθέσετε τη βάση δεδομένων. Μην εκθέτετε βάσεις δεδομένων 760 02:17:53,360 --> 02:18:00,240 στο διαδίκτυο, παρακαλώ, αλλά τέλος πάντων. Οπότε εκθέτετε την πολύτιμη βάση δεδομένων σας στο διαδίκτυο, 761 02:18:00,240 --> 02:18:04,320 αλλά έχουν όλους τους ελέγχους ασφαλείας από την Google, έλεγχο ταυτότητας, δεύτερο παράγοντα, 762 02:18:04,400 --> 02:18:08,880 έλεγχο ταυτότητας, οτιδήποτε. Και από προεπιλογή, σκέφτηκα, εντάξει, θα έχουν επίσης 763 02:18:08,880 --> 02:18:13,760 τους κωδικούς πρόσβασης σε μορφή hash. Και όντως, ναι, είχαν τους κωδικούς πρόσβασης σε μορφή hash. Έλεγξα ότι έχουν το 764 02:18:13,760 --> 02:18:19,040 κουμπί ότι από προεπιλογή, είναι σε μορφή hash και ούτω καθεξής. Εντάξει, της είπα, είναι μια χαρά, έχετε τους 765 02:18:19,040 --> 02:18:28,960 κωδικούς πρόσβασης σε μορφή hash εκεί. Μετά δεν είχα την προσπάθεια ή τη διάθεση να τη ρωτήσω αν κάνει 766 02:18:28,960 --> 02:18:37,520 φιλτράρισμα της φόρμας φόρτωσης και ούτω καθεξής. Οπότε η πρώτη μου ερώτηση αφορούσε αυτό, εάν έχετε 767 02:18:38,160 --> 02:18:44,080 τους κωδικούς πρόσβασης σε μορφή hash. Δεν ρώτησα τι είδους σχήμα κρυπτογράφησης χρησιμοποιούν, είναι από την Google, 768 02:18:44,080 --> 02:18:49,680 είναι μια χαρά. Και αυτή ήταν η πρώτη μου ερώτηση και η τελευταία, επειδή δεν ήξερε πώς είναι... 769 02:18:52,560 --> 02:18:57,840 δεν είχα τον χρόνο να της εξηγήσω εδώ ότι, εντάξει, πρέπει επίσης να ελέγξετε ότι η 770 02:18:57,840 --> 02:19:07,840 φόρμα της σύνδεσης έχει ένα φιλτράρισμα PHP. Αλλά μπορώ να της δείξω, εάν μελετούσε ξανά, 771 02:19:08,640 --> 02:19:14,400 το GitHub. Και θα μπορούσα να της πω, εντάξει, πήγαινε στο GitHub, δες τα αποτελέσματα, δες... ίσως είναι 772 02:19:14,400 --> 02:19:20,720 μια καλή ιδέα να της το πω αυτό. Απλώς δες μόνη σου, ανέβασε τον κώδικα, έλεγξε μόνη σου, 773 02:19:20,720 --> 02:19:26,720 υπάρχουν πολλαπλά ζητήματα ασφαλείας εκεί, είσαι υποψήφια διδάκτωρ, θα βρεις έναν τρόπο. Και θα προσπαθήσει να 774 02:19:26,720 --> 02:19:36,320 διορθώσει τα δικά της ζητήματα επειδή είμαι σίγουρος ότι ανέπτυξε την PHP με το δικό της χέρι, οπότε νομίζω ότι δεν θα έχει 775 02:19:36,320 --> 02:19:44,320 κανένα φιλτράρισμα σε αυτό. Εντάξει, δεν είναι ένα λογισμικό παραγωγής, αλλά εντάξει, έλα τώρα, τουλάχιστον κάνε κάποια 776 02:19:44,320 --> 02:19:50,640 βασικά πράγματα, δεν ξέρω. Αλλά θα είναι ένα συν, τόσο για εκείνη όσο και για μένα, επειδή ο επιβλέπων της 777 02:19:50,640 --> 02:19:57,680 θα με συγχαρεί. Εντάξει, συγγνώμη για αυτή τη συζήτηση, αλλά είναι κάπως, ξέρετε, 778 02:19:57,680 --> 02:20:03,600 είναι αποτέλεσμα της εμπειρίας. Και είναι σημαντικό για εσάς να κατανοήσετε τη ροή, 779 02:20:03,600 --> 02:20:11,920 πώς συμβαίνει αυτό. Οπότε εδώ είναι κάπως έτσι, αλλαγή και άλλα πράγματα, πολλά ζητήματα λογισμικού και 780 02:20:11,920 --> 02:20:17,680 ευπάθειες στο παρελθόν σχετικά με την ακατάλληλη επικύρωση εισόδου. Εντάξει, οπότε μπορείτε να εκτελέσετε 781 02:20:17,680 --> 02:20:23,120 εντολές εδώ, εντολές Python, να αναλάβετε προνόμια, οπότε η κλιμάκωση προνομίων (privilege escalation) μπορεί να είναι εδώ, 782 02:20:23,120 --> 02:20:29,680 δεν ξέρω εάν αυτό αναφέρεται εδώ, επιτρέψτε μου να πάω, privilege escalation, όχι; Όχι, δεν 783 02:20:29,680 --> 02:20:36,480 σχετίζεται με privilege escalation, αλλά τέλος πάντων, εντάξει. Αλλά μπορούν να συμβούν πράγματα στο script Python 784 02:20:36,480 --> 02:20:43,280 όπου κάποιος μπορεί να εκτελέσει ό,τι του αρέσει μέσα σε αυτή την αναζήτηση. Εντάξει, ας επιστρέψουμε, security. 785 02:20:43,840 --> 02:20:50,720 Εντάξει, και νομίζω ότι αυτό είναι όλο, οπότε δύο ζητήματα εδώ και δύο ζητήματα εδώ. Φυσικά, είναι ένας απλός κώδικας, 786 02:20:52,320 --> 02:20:58,080 ο φοιτητής είναι καλός, τουλάχιστον χρησιμοποίησε τα salts, αυτό ήταν εντυπωσιακό, εντάξει, σίγουρα, 787 02:20:58,640 --> 02:21:05,680 για έναν φοιτητή σε προπτυχιακό επίπεδο. Αλλά τέλος πάντων, οπότε αυτό ήταν ένα παράδειγμα, οποιεσδήποτε ερωτήσεις σχετικά με αυτό; 788 02:21:05,680 --> 02:21:11,360 Μπορείτε να δείτε ότι υπάρχουν πολλά αρχεία Python, τίποτα άλλο δεν έχει παρασχεθεί ως αποστολή. 789 02:21:11,440 --> 02:21:17,920 Φυσικά, παρέχει μια σιγουριά ότι, εντάξει, είμαστε καλά, αλλά και πάλι, εντάξει, πηγαίνοντας χειροκίνητα και βλέποντας 790 02:21:17,920 --> 02:21:23,760 εάν υπάρχουν ελαττώματα, κάνοντας το penetration testing, κάνοντας την αξιολόγηση ευπαθειών σε ένα "μαύρο κουτί", 791 02:21:23,760 --> 02:21:30,880 αυτό σίγουρα θα πει ότι, εντάξει, είμαστε μια χαρά όσον αφορά την ασφάλεια. Είναι απλώς ένας εύκολος τρόπος για 792 02:21:30,880 --> 02:21:37,840 εμάς να παρέχουμε την ανάλυση κώδικα και να δούμε αν υπάρχει ένα πολύ μεγάλο ζήτημα, ας πούμε στον κώδικά μας, 793 02:21:37,840 --> 02:21:43,920 τελικά δεν θα παρέχει τα πάντα, διαφορετικά θα ήταν εύκολο, απλώς τρέξτε μια ανάλυση κώδικα, 794 02:21:43,920 --> 02:21:50,160 όλα διορθώνονται και ούτω καθεξής, επειδή τι γίνεται επίσης με τις επιθέσεις zero day, εντάξει, 795 02:21:50,160 --> 02:21:54,800 υπάρχει μια νέα ευπάθεια που δεν ανακαλύφθηκε πριν και ούτω καθεξής. Ποτέ λοιπόν δεν ξέρεις, 796 02:21:54,800 --> 02:22:02,160 αλλά αυτό τουλάχιστον παρέχει μια βάση αναφοράς ασφαλούς κώδικα στην ανάπτυξη και καταλαβαίνετε καλύτερα 797 02:22:02,160 --> 02:22:06,640 τον κώδικά σας. Αυτό είναι το σημαντικό ότι, εντάξει, ξοδεύετε πολύ χρόνο 798 02:22:08,480 --> 02:22:15,200 προετοιμάζοντας τον κώδικα για να κάνετε την ασφάλεια. Η ανατροφοδότηση, το πλεονέκτημα είναι ότι αποκτάτε εμπειρία 799 02:22:15,200 --> 02:22:22,160 όσον αφορά την ανάπτυξη. Προσπαθώ λοιπόν να προωθήσω τους φοιτητές, εντάξει, δεν θέλετε να μάθετε 800 02:22:22,160 --> 02:22:29,040 λίγη ασφάλεια, αλλά θα γίνετε καλύτεροι προγραμματιστές. Θα πάρετε αυτό το καλό όφελος, εντάξει. Αλλά 801 02:22:29,040 --> 02:22:34,320 νομίζω ότι οι περισσότεροι προγραμματιστές θα ήθελαν να δουν τον κώδικά τους και να δουν αν υπάρχουν τυχόν ροές, δεν έχουν 802 02:22:34,320 --> 02:22:39,120 κανένα πρόβλημα, τους αρέσει, τους αρέσει νομίζω αυτή η προοπτική. Μπορεί να μην τους αρέσουν άλλα πράγματα 803 02:22:39,120 --> 02:22:46,400 όπως τα εγκληματολογικά ή η ανάλυση log ή οτιδήποτε άλλο, αλλά νομίζω ότι αφού είναι προγραμματιστές, τους αρέσει ο κώδικας, 804 02:22:46,400 --> 02:22:52,240 τους αρέσει επίσης να ενημερώνουν τον κώδικά τους και να έχουν έναν καλύτερο κώδικα. Εντάξει, αυτό ήταν λοιπόν ένα παράδειγμα, 805 02:22:52,240 --> 02:23:00,800 επιτρέψτε μου να επιστρέψω. Μου αρέσει να παρέχω ορισμένα παραδείγματα. Και εδώ είναι ένα άλλο παράδειγμα. Είναι κάπως, 806 02:23:01,680 --> 02:23:08,240 δεν... δεν έχω χρησιμοποιήσει αυτόν τον διακομιστή DICOM. Ένας διακομιστής DICOM στην υγειονομική περίθαλψη είναι ένας διακομιστής που έχει 807 02:23:08,240 --> 02:23:18,400 τόσο βάση δεδομένων όσο και αποθήκευση δεδομένων. Και αποθηκεύουν εικόνες ακτινογραφιών ή εικόνες τομογραφίας. Έτσι, όλες 808 02:23:18,400 --> 02:23:29,920 αυτές οι εικόνες είναι κάπως... επιτρέψτε μου να σας δείξω, παράδειγμα εικόνας DICOM. Φυσικά, είναι πολύ ευαίσθητα δεδομένα 809 02:23:29,920 --> 02:23:36,400 επειδή έχουν ιατρικό ιστορικό. Και στην πραγματικότητα, μπορείτε να δείτε όλες τις λεπτομέρειες του εγκεφάλου, για 810 02:23:36,400 --> 02:23:41,360 παράδειγμα, του ανθρώπου, του ασθενούς. Είναι λοιπόν κάπως έτσι η εικόνα DICOM. Και δεν είναι κάπως 811 02:23:41,360 --> 02:23:47,920 μόνο μια εικόνα, έχουν επίσης μεταδεδομένα μέσα. Οπότε ο γιατρός θα πάει εδώ και θα επισημάνει αυτό το 812 02:23:47,920 --> 02:23:54,640 μέρος του εγκεφάλου και θα πει ότι, εντάξει, αυτό έχει προβλήματα εδώ. Ή μπορώ να δω κάτι συγκεκριμένο 813 02:23:54,640 --> 02:24:00,400 να συμβαίνει εδώ. Και σχολιάζουν την εικόνα. Και αυτή είναι σαν μια εγκληματολογική εικόνα επειδή ένας άλλος 814 02:24:00,400 --> 02:24:04,720 γιατρός θα πάει και θα επισημάνει και μετά ένας άλλος γιατρός θα πάει και θα επισημάνει. Θα κάνουν το 815 02:24:04,720 --> 02:24:10,400 χειρουργείο και μετά θα επισημάνουν ξανά το μέρος που έκαναν το χειρουργείο. Και αυτό συνεχίζεται στο 816 02:24:10,400 --> 02:24:14,880 παρελθόν. Είναι λοιπόν σαν μεταδεδομένα. Είναι λοιπόν σαν μια στοίβα εικόνων που συνδέονται μέσα σε μία 817 02:24:14,880 --> 02:24:20,720 εικόνα. Και αυτό είναι ένα πρωτόκολλο DICOM. Ονομάζεται πρωτόκολλο DICOM. Και αποθηκεύονται σε διακομιστές 818 02:24:20,720 --> 02:24:30,240 που ονομάζονται διακομιστές PACS. Οι διακομιστές PACS αποθηκεύουν λοιπόν αυτές τις εικόνες. Έχουν ένα λογισμικό 819 02:24:20,240 --> 02:24:38,400 σαν frontend για να βάζουν τις εικόνες. Έχουν τη βάση δεδομένων για να κάνουν την ευρετηρίαση. Και έχουν την 820 02:24:38,400 --> 02:24:44,480 αποθήκευση δεδομένων για την αποθήκευση των εικόνων DICOM. Έτσι, στη συνέχεια οι νοσοκόμες, οι γιατροί θα πάνε σε ένα web UI 821 02:24:44,880 --> 02:24:50,160 και θα δουν ποιοι είναι οι ασθενείς. Θα ανοίξουν και θα δουν τις εικόνες DICOM και όλο 822 02:24:50,160 --> 02:24:56,400 το παρελθόν των εικόνων DICOM. Αυτός είναι λοιπόν ένας διακομιστής που βρήκα από τη Microsoft. Δεν τον έχω χρησιμοποιήσει. 823 02:24:56,400 --> 02:25:03,680 Κυρίως χρησιμοποιώ μια άλλη πλατφόρμα ανοιχτού κώδικα για δοκιμαστήρια (test beds). Προσπαθώ λοιπόν να δημιουργήσω healthcare test 824 02:25:03,680 --> 02:25:10,720 beds σε ορισμένα από τα projects για να κάνω το red teaming και να κάνω τις επιθέσεις στις 825 02:25:10,800 --> 02:25:17,440 υπηρεσίες web για να δω τι συμβαίνει. Είναι λοιπόν σαν ένα cyber range στο healthcare. 826 02:25:17,440 --> 02:25:23,120 Οπότε δεν έχω χρησιμοποιήσει αυτόν εδώ, αλλά ήθελα απλώς να κάνω fork για να σας δώσω ένα παράδειγμα. Έτσι μπορείτε να δείτε εδώ 827 02:25:23,120 --> 02:25:31,040 JavaScript, 43% της C-Sharp, 38, φυσικά, είναι Microsoft. TSQL, το οποίο δεν γνωρίζω, 828 02:25:31,040 --> 02:25:38,320 αλλά είναι TSQL. Γνωρίζω, αλλά είναι TSQL τέλος πάντων. PowerShell. Έχουν επίσης PowerShell. Ίσως 829 02:25:38,320 --> 02:25:43,360 το PowerShell το χρησιμοποίησαν απλώς για αυτοματοποίηση. Dockerfile. Παρέχουν το Dockerfile HTML. 830 02:25:43,920 --> 02:25:48,640 Οπότε αφορά κυρίως τη JavaScript. Εάν πάω στην ασφάλεια, και αυτό δεν το θυμάμαι 831 02:35:49,280 --> 02:35:55,200 πότε έγινε αυτό. Είναι κλώνος, οπότε δεν είναι fork, αλλά είναι νέος. Εάν πάω στο code 832 02:35:55,200 --> 02:36:01,520 scanning, μπορείτε να δείτε εδώ διαφορετικά ζητήματα, ας πούμε. Και αυτό είναι από τη Microsoft. Εντάξει. 833 02:36:01,520 --> 02:36:08,160 Δεν είναι ένα εμπορικό, ας πούμε, λογισμικό, αλλά τέλος πάντων, ας δούμε. Log entry created from 834 02:36:08,160 --> 02:36:16,080 user input. Δεν θυμάμαι τα πάντα από τα CVEs, από τα ελαττώματα που παρουσιάζω, αλλά εδώ, 835 02:36:16,080 --> 02:36:21,760 εάν μια μη καθαρισμένη είσοδος χρήστη γραφτεί σε μια καταχώρηση log, ένας κακόβουλος χρήστης μπορεί να είναι σε θέση να πλαστογραφήσει (forge) 836 02:36:21,760 --> 02:36:27,440 καταχωρήσεις log. Κάποιος από εσάς αναπτύσσει σε Android, Android development, κανείς; 837 02:36:29,040 --> 02:36:37,520 Λοιπόν, ένας. Εντάξει. Δύο. Είδατε ποτέ ασφάλεια στο Android, οποιεσδήποτε προκλήσεις, capture the flag, 838 02:36:37,520 --> 02:36:48,080 ή οτιδήποτε άλλο; Όχι; Εσείς; Όχι. Αλλά μετά έχετε. Ίσως. 839 02:36:50,160 --> 02:36:57,440 Android development. Λοιπόν, ας μιλήσουμε για αυτή την ερώτηση. Logcat. Γνωρίζετε το Logcat; Όχι; 840 02:36:58,320 --> 02:37:13,200 Όχι δίκτυο. Είναι το σύστημα καταγραφής του Android. Logcat. Γνωρίζετε το Logcat; Ναι, ναι, ναι, σωστά. 841 02:37:13,200 --> 02:37:17,920 Κάνετε κλικ στο ADB, συνδέεστε στο τηλέφωνο Android, κάνετε κλικ στο Logcat και βλέπετε όλα όσα 842 02:37:17,920 --> 02:37:24,000 συμβαίνουν στο κινητό τηλέφωνο. Είναι λοιπόν σαν να αγγίζετε την οθόνη και αυτό έχει καταγραφεί στο 843 02:37:24,000 --> 02:37:29,280 log. Τα πάντα καταγράφονται στο log. Είναι ωραίο. Είναι πολύ ωραίο. Ανοίγετε την κάμερα, 844 02:37:29,280 --> 02:37:33,760 βλέπετε το log που ανοίγει την κάμερα, τα πάντα. Τα πάντα είναι στο Logcat. Και το Logcat ήταν 845 02:37:33,760 --> 02:37:41,440 απενεργοποιημένο στα μεταγενέστερα τηλέφωνα Android στη συσκευή. Μπορείτε να το κάνετε αυτό μόνο εάν συνδεθείτε σε έναν υπολογιστή, 846 02:37:41,440 --> 02:37:46,720 ενεργοποιήσετε τον εντοπισμό σφαλμάτων USB (USB debugging) και επιτρέψετε την εκτέλεση του Logcat για λόγους ασφαλείας. Εντάξει. 847 02:37:46,720 --> 02:37:54,960 Πίσω στο Android 6, δεν συνέβαιναν πράγματα κάπως έτσι, που σημαίνει ότι κάνετε κλικ στη σύνδεση σε μια εφαρμογή, 848 02:37:54,960 --> 02:38:01,840 σε μια εφαρμογή Android, απαιτεί σύνδεση και κωδικό πρόσβασης. Δίνετε τον κωδικό πρόσβασης, τα logs 849 02:38:02,640 --> 02:38:10,880 λένε ότι, εντάξει, ο κωδικός πρόσβασης A, B, C, Stelios δόθηκε στην πλατφόρμα, και αυτό το log αποθηκεύτηκε. 850 02:38:10,880 --> 02:38:17,920 Έτσι κάποιος παίρνει το κινητό σας τηλέφωνο, παίρνει ένα ADB, μπαίνει στα logs που αποθηκεύονται από την 851 02:38:17,920 --> 02:38:25,120 εφαρμογή, όχι το Logcat. Το Logcat, είναι σαν μια εφαρμογή ζωντανής ροής. Αλλά η ίδια η υπηρεσία, 852 02:38:25,120 --> 02:38:31,680 έτσι, αποθηκεύει κάποιες από τις εισόδους μέσα στα logs. Έτσι κάποιος μπορεί να δει τα logs και να δει 853 02:38:31,680 --> 02:38:39,840 προσωπικά δεδομένα μέσα στα logs. Αυτό λοιπόν είναι κάτι σημαντικό. Μην αποθηκεύετε στα logs του 854 02:38:39,840 --> 02:38:46,800 λογισμικού, ονόματα χρηστών, κωδικούς πρόσβασης και ούτω καθεξής. Αυτό είναι επίσης ένα σοβαρό ζήτημα στην πλευρά της ανάπτυξης. 855 02:38:46,800 --> 02:38:52,560 Βρίσκεστε στον κύκλο ανάπτυξης, έχετε ανοιχτό τον debugger επειδή θέλετε να κάνετε debug στα πάντα. 856 02:38:52,560 --> 02:38:58,000 Και μετά δημοσιεύετε σε οτιδήποτε, στον πελάτη ή στο διαδίκτυο, και ξεχνάτε 857 02:38:59,120 --> 02:39:05,520 να κλείσετε τον debugger. Και τα logs εξακολουθούν να διατηρούνται εκεί. Έτσι κάποιος μπορεί να πάει στα logs και 858 02:39:05,520 --> 02:39:12,160 να βρει τα δεδομένα και ούτω καθεξής. Οπότε ο εντοπισμός σφαλμάτων, είναι σαν να πρέπει να είστε προσεκτικοί. Είναι σοβαρά ζητήματα. 859 02:39:12,160 --> 02:39:17,600 Εντάξει. Οπότε αυτό είναι το ζήτημα εδώ. Log entries created from the user input. Οπότε έχουν κάποιες 860 02:39:17,600 --> 02:39:25,600 καταχωρήσεις log που δημιουργούνται και έχουν εισόδους. Συγκεκριμένα εδώ, λέει εάν μη καθαρισμένη 861 02:39:25,600 --> 02:39:29,920 είσοδος χρήστη γραφτεί στην καταχώρηση log, ένας κακόβουλος χρήστης μπορεί να είναι σε θέση να πλαστογραφήσει νέες καταχωρήσεις 862 02:39:29,920 --> 02:39:34,880 log. Επομένως μπορεί να είναι σε θέση να δημιουργήσει νέες καταχωρήσεις log, αλλά είναι διαφορετικό. Εντάξει, είναι διαφορετικό 863 02:39:34,880 --> 02:39:39,760 από αυτό που εξήγησα προηγουμένως, αλλά είναι σε παρόμοιο, ας πούμε, πλαίσιο. 864 02:39:39,760 --> 02:39:46,400 Παράδειγμα, έχουν ένα παράδειγμα εξυγίανσης και ούτω καθεξής. Τι μαθαίνουμε λοιπόν πάλι από αυτό; Logging. 865 02:39:48,160 --> 02:39:54,160 Πόσοι από εσάς έχετε δει logs; Ένας, δύο, τρεις. Πόσοι από εσάς έχετε δει 866 02:39:54,160 --> 02:40:02,480 logs από debugger, ας πούμε; Εντάξει, πόσοι από εσάς έχετε δει logs από το λειτουργικό σύστημα; 867 02:40:03,440 --> 02:40:08,000 Είμαι αρκετοί. Πόσοι από εσάς έχετε δει logs από Android; 868 02:40:10,640 --> 02:40:11,520 Ακόμα ο χρήστης. 869 02:40:19,120 --> 02:40:31,120 Ω, εντάξει. Αυτό είναι ωραίο. Αυτό είναι ωραίο. Δεν είναι από προεπιλογή στο Flutter. Τα logs, εντάξει. 870 02:40:32,000 --> 02:40:39,760 Πολύ καλά. Για αυτούς που δεν έχουν δει ένα log, το κάνω αυτό στους προπτυχιακούς φοιτητές πολύ. 871 02:40:40,640 --> 02:40:48,400 Πηγαίνω εδώ και βλέπετε logs, Windows logs. Εάν πάω εδώ, είναι κάπως τα logs του λειτουργικού συστήματος. 872 02:40:49,440 --> 02:40:55,200 Θα φορτώσουν. Εντάξει. Εδώ λοιπόν είναι τα πάντα για τα logs ασφαλείας των Windows, 873 02:40:55,760 --> 02:41:04,000 application logs. Εάν λοιπόν έχω τον διακομιστή Apache να εκτελείται ή MariaDB να εκτελείται στο λειτουργικό μου σύστημα, 874 02:41:04,000 --> 02:41:09,200 τα logs θα είναι εδώ. Τέλος πάντων, θα φορτώσουν με κάποιο τρόπο. Και εάν πάτε πίσω, πίσω, θα 875 02:41:09,200 --> 02:41:14,560 δείτε τελικά επίσης στην πλευρά του kernel, πότε άνοιξε για πρώτη φορά ο υπολογιστής μετά το format. 876 02:41:15,440 --> 02:41:18,960 Εντοπίζουν τα πάντα στο λειτουργικό σύστημα. Αυτό πηγαίνει από το Android. 877 02:41:19,040 --> 02:41:26,800 Το Android είναι ωραίο. Είναι ακόμη καλύτερο από αυτό επειδή το Android, είναι ένα πολύ περίπλοκο σύστημα. 878 02:41:26,800 --> 02:41:33,040 Τα πάντα καταγράφονται επειδή έχετε ένα GPS, έχετε μια οθόνη αφής, έχετε ένα μικρόφωνο, 879 02:41:33,040 --> 02:41:40,160 έχετε όλες τις μετρήσεις και τους αισθητήρες που μπορεί να έχει. Έχει πολλή μπαταρία, οτιδήποτε, 880 02:41:40,160 --> 02:41:44,800 αλλά έχουν πολλούς αισθητήρες στο Android. Εάν μπορείτε να το δείτε αυτό σε πραγματικό χρόνο, είναι πολύ ωραίο. 881 02:41:44,800 --> 02:41:48,640 Και μπορείτε να μάθετε πολλά και μπορείτε να πάρετε πολλά δεδομένα από την ανάλυση αργότερα. 882 02:41:48,960 --> 02:41:52,160 Οπότε μπορείτε να φανταστείτε ότι έρχεστε και έχετε ένα smartphone και μπορείτε πραγματικά 883 02:41:52,160 --> 02:41:56,400 να το χρησιμοποιήσετε ως συσκευή αισθητήρα για να κάνετε ό,τι θέλετε, σαν πείραμα. 884 02:41:57,520 --> 02:42:04,000 Εδώ λοιπόν τα logs θα παρουσιαστούν πραγματικά. Για την κυβερνοασφάλεια, τα logs είναι πολύ σημαντικά επειδή 885 02:42:04,000 --> 02:42:08,160 εκεί συμβαίνουν οι ειδοποιήσεις. Παίρνετε τις πληροφορίες από τα logs και δημιουργείτε 886 02:42:08,160 --> 02:42:14,880 τις ειδοποιήσεις και ούτω καθεξής εάν συμβαίνει κάτι κακό. Έχουν άλλες λεπτομέρειες όπως αυτή, 887 02:42:14,880 --> 02:42:19,200 επηρεασμένοι buds και υψηλό επίπεδο. Ας επιστρέψουμε και ας δούμε τι άλλες λεπτομέρειες μπορούμε να έχουμε. 888 02:42:21,760 --> 02:42:25,280 Το ίδιο ισχύει για τον controller, view controller, οπότε είναι το ίδιο. 889 02:42:26,240 --> 02:42:28,240 Τα περισσότερα από αυτά νομίζω ότι είναι τα ίδια. Ας πάμε. 890 02:42:30,160 --> 02:42:36,960 Client side URL, η ανακατεύθυνση (redirect). Έχουν ένα URL redirect. Όταν καλούν ίσως 891 02:42:37,840 --> 02:42:44,560 κάποιος μπορεί να πει τι μπορεί να συμβαίνει. Δεν θέλω να σκεφτείτε ότι δεν 892 02:42:44,640 --> 02:42:50,480 θέλετε να πείτε τη σωστή απάντηση. Απλώς μια υπόθεση. Τι μπορεί να σημαίνει αυτό; Τι μπορεί να πάει στραβά; 893 02:42:51,600 --> 02:42:56,480 Σε ανακατεύθυνση URL στην πλευρά του πελάτη. Κανείς; Ναι, ναι. 894 02:43:00,080 --> 02:43:04,400 Εντάξει. Θα μπορούσε να συμβαίνει. Είναι λοιπόν σαν μια φόρμα σύνδεσης και όταν συνδέεστε, 895 02:43:04,400 --> 02:43:12,400 αυτό θα πάει σε μια απευθείας σελίδα σε έναν άλλο ιστότοπο και κάνετε κλικ σε κάτι εκεί και 896 02:43:12,400 --> 02:43:16,640 λαμβάνετε ορισμένες λεπτομέρειες στον ιστότοπο που δεν υποτίθεται ότι θα έπρεπε. Φυσικά, 897 02:43:16,640 --> 02:43:21,280 μπορείτε να δείτε ότι ανακατευθύνεται σε άλλον ιστότοπο, αλλά ο άλλος ιστότοπος θα ήταν ένας άλλος. 898 02:43:21,280 --> 02:43:27,840 Ω, όχι. Μπορεί να είναι ένας κλώνος του Facebook. Κάποιος μπορεί να κλωνοποιήσει την κύρια σελίδα σύνδεσης του Facebook και 899 02:43:27,840 --> 02:43:33,440 νομίζετε, εντάξει, πρέπει να συνδεθώ στην οθόνη σύνδεσης του Facebook. Κάνετε κλικ στις λεπτομέρειες και 900 02:43:33,440 --> 02:43:49,360 λαμβάνετε τις λεπτομέρειες. Είναι μια καλή απάντηση. Άλλη μία; Ναι. 901 02:43:49,360 --> 02:44:01,280 Σωστά. 902 02:44:01,280 --> 02:44:04,160 Δεν υπάρχει τίποτα στη σελίδα; Σωστά. 903 02:44:05,680 --> 02:44:13,040 Σε ένα iFrame; Όχι. Ναι. Σωστά. Είναι δύο διαφορετικές προσεγγίσεις. Η μία είναι η έξοδος. 904 02:44:13,040 --> 02:44:17,840 Κάνετε κλικ σε κάτι και ανακατευθύνει σε άλλη σελίδα. Οπότε είναι η έξοδος. Η άλλη είναι η είσοδος. 905 02:44:17,840 --> 02:44:24,720 Μπορείτε να χρησιμοποιήσετε την ανακατεύθυνση για είσοδο για να έχετε κάτι στη σελίδα που προσπαθείτε να μολύνετε. 906 02:44:24,720 --> 02:44:29,040 Βάζετε κάτι στην κεφαλίδα και αυτό καλεί κάτι κακό. Επομένως μπορείτε να δείτε εδώ, 907 02:44:30,080 --> 02:44:36,080 εδώ, έχει αυτό το URL. Καλεί JavaScript από τον έξω κόσμο, από το διαδίκτυο. 908 02:44:36,080 --> 02:44:40,560 Οπότε μπορείτε να βάλετε εδώ μια άλλη JavaScript ή τη δική σας κακόβουλη JavaScript. 909 02:44:40,560 --> 02:44:45,280 Και αυτό θα συμπεριληφθεί εδώ. Και θα κάνει το σημείο δράσης, 910 02:44:45,280 --> 02:44:50,640 μια διαφορετική JavaScript που θα κάνει κάτι άλλο. Αυτό είναι λοιπόν κάτι που μπορούμε να υποθέσουμε. 911 02:44:52,160 --> 02:44:57,040 Ας πάμε ανακατεύθυνση σε URL που έχει κατασκευαστεί για μέρη του DOM που μπορεί να ελέγχονται από τον 912 02:44:57,040 --> 01:45:02,880 επιτιθέμενο μπορεί να διευκολύνει τις επιθέσεις phishing. Αυτό είναι ωραίο. Αυτό που ανέφερε ο συνάδελφός σας. 913 01:45:02,880 --> 01:45:06,960 Σε αυτές τις επιθέσεις, ανυποψίαστοι χρήστες μπορούν να ανακατευθυνθούν σε μια κακόβουλη τοποθεσία 914 01:45:06,960 --> 01:45:11,600 που φαίνεται πολύ οικεία στην πραγματική και ούτω καθεξής. Με άλλα λόγια, μπορεί να ελεγχθεί 915 01:45:11,600 --> 01:45:18,880 από τον επιτιθέμενο. Σύσταση, μη έμπιστο URL. Συνιστάται να αποφεύγετε την απευθείας τοποθέτηση εισόδου χρήστη 916 01:45:18,880 --> 01:45:23,120 σε ανακατεύθυνση. Αντ' αυτού, διατήρηση μιας λίστας εξουσιοδοτημένων ανακατευθύνσεων από τον διακομιστή, 917 01:45:23,760 --> 01:45:29,520 στη συνέχεια επιλογή από τη λίστα βάσει της εισόδου χρήστη που παρέχεται. Και έχουν κάποιες επιλογές εδώ. 918 01:45:29,520 --> 01:45:34,080 Δεν είμαι ειδικός για να το επιλύσω αυτό, αλλά μπορείτε να δείτε εδώ την πρόταση. 919 01:45:34,080 --> 01:45:39,360 Μπορείτε να διαβάσετε τη σύσταση. Στη συνέχεια, η προσέγγισή μου είναι πάντα να πηγαίνω στο CWE, 920 01:45:39,360 --> 01:45:44,800 να δω τι συμβαίνει στο cross-site scripting και ούτω καθεξής. Και ίσως εδώ και ίσως εκεί. 921 01:45:44,800 --> 01:45:50,080 Και μετά προσπαθήστε να βρείτε τη λύση, προσπαθήστε να ξαναγράψετε τον κώδικα και ούτω καθεξής. Αυτή είναι λοιπόν μια κοινή προσέγγιση. 922 01:45:50,800 --> 01:45:57,200 Εάν κάναμε... Ποιος έχει κάνει penetration testing στο παρελθόν; Το κάνατε; Ω, έχετε κάνει. 923 01:45:57,920 --> 01:46:05,200 Εντάξει. Εάν κάνετε μια σάρωση NMAP, όχι σάρωση NMAP. Δεν γνωρίζω τα εργαλεία. Μια σάρωση XSS 924 01:46:05,200 --> 01:46:12,000 για να δείτε αν υπάρχει cross-site scripting. Εντάξει. Ποιο; Zap. Ναι. Μπορείτε να κάνετε... 925 01:46:13,120 --> 01:46:18,480 Ίσως χρησιμοποιώντας το Zap ή οτιδήποτε άλλο. Μπορείτε να βρείτε την ευπάθεια. Επομένως, η ευπάθεια αυτού 926 01:46:18,480 --> 01:46:26,080 θα είναι η εκμετάλλευση XSS, πιθανότατα. Εντάξει. Επειδή αυτός είναι ο κώδικας. Αυτό είναι το πρόβλημα. 927 01:46:26,080 --> 01:46:32,400 Εάν κάνετε το "μαύρο κουτί" testing, πιθανότατα θα ανακτήσει, θα απαντήσει με... 928 01:46:32,400 --> 01:46:38,960 Αυτό θα πρέπει κυρίως να έχει μια εκμετάλλευση XSS, ευπάθεια XSS εκεί. Εντάξει. 929 01:46:41,280 --> 01:46:46,800 Ναι. Αυτό λοιπόν είναι ωραίο. Και είναι μια προσέγγιση. Προσπάθησα να το κάνω αυτό με έναν φοιτητή μου. 930 01:46:47,360 --> 01:46:54,720 Δημιούργησε τον κώδικα. Ανέπτυξε το component, το λογισμικό. Στη συνέχεια έκανε αυτή την ανάλυση και μετά 931 01:46:55,280 --> 01:47:01,200 πήγε στη σάρωση ευπαθειών και επικύρωσε αυτό που είπαμε. Είναι ένα exploit XSS; Ναι, 932 01:47:01,200 --> 01:47:08,000 είναι. Αυτό ήταν λοιπόν το πρόβλημα. Και έκανε αυτόν τον κύκλο ζωής για να καλύψει συνολικά όλα αυτά τα, 933 01:47:08,000 --> 01:47:13,280 ας πούμε, θέματα, όλα αυτά. Και είναι ένα ωραίο project. Μπορείτε να δείτε ένα πολύ απλό project. 934 01:47:13,280 --> 01:47:18,800 Πολύ, πολύ απλό. Προσπαθείτε να κάνετε τον κώδικα ανάλυσης ασφαλείας. Στη συνέχεια κάνετε την εκμετάλλευση 935 01:47:18,800 --> 01:47:23,280 από την άλλη πλευρά, από το "μαύρο κουτί" testing. Το τυλίγετε σαν μια αναφορά και λέτε, 936 01:47:23,280 --> 01:47:29,120 εντάξει, έχω μια αναφορά. Στη συνέχεια βγαίνετε στην αγορά για πρόσληψη εργασίας και λένε, 937 01:47:29,120 --> 01:47:34,320 εντάξει, τι γνωρίζετε για την κυβερνοασφάλεια; Έχω κάνει αυτό. Κάνω ανάλυση κώδικα ασφαλείας. 938 01:47:34,320 --> 01:47:41,840 Έκανα την εκμετάλλευση. Είδα ότι είχαν το XSS σε αυτή την υπηρεσία. Και αυτή είναι η αναφορά μου. 939 01:47:41,840 --> 01:47:48,080 Και μπορείτε να δείτε, εντάξει, γνωρίζετε κάποια πράγματα. Είναι ωραίο. Ελάτε να δουλέψετε μαζί μας. Και αυτό 940 01:47:48,080 --> 01:47:53,600 συνέβη στο παρελθόν σε έναν φοιτητή μου, εντάξει, με αυτές, εκείνες τις ασκήσεις. Και πήρε 941 01:47:54,160 --> 01:47:59,440 δουλειά σε μια φάση κυβερνοασφάλειας πολύ εύκολα. Και στην πραγματικότητα, ξέρετε, δεν είναι ότι 942 01:48:00,400 --> 01:48:06,000 κατάλαβε πραγματικά πολλά πράγματα λόγω όλων αυτών των ασκήσεων. Ήταν απλώς μια διπλωματική. 943 01:48:06,000 --> 01:48:12,400 Αλλά κατά τη διάρκεια της διπλωματικής, τα έκανε όλα αυτά. Και στην πραγματικότητα, ωφελήθηκε πολύ από αυτό. 944 01:48:13,600 --> 01:48:20,000 Εντάξει, ας δούμε δύο παραδείγματα ακόμη και μετά τελειώσαμε. Εδώ, prototype pollution function. 945 01:48:20,000 --> 01:48:27,040 Δεν γνωρίζω τι είναι αυτό. Δεν γνωρίζω καν. Είναι μια, ναι, πιθανότατα. Είναι μια κλάση εδώ, 946 01:48:27,040 --> 01:48:34,480 οπότε μπορεί να είναι αντικειμενοστρεφές ζήτημα. Συμπερίληψη λειτουργικότητας από μη έμπιστη πηγή πάλι, 947 01:48:34,480 --> 01:48:40,560 cloud for, εντάξει, χρησιμοποιούν κάπως έτσι. Οπότε μπορείτε να δείτε μια συνολική, ας πούμε επιστροφή, 948 01:48:40,560 --> 01:48:46,080 περιστατικά ασφαλείας εδώ. Και ναι, πρέπει να κλείσουμε όλες αυτές τις καταχωρήσεις ή οτιδήποτε άλλο. 949 01:48:46,080 --> 01:48:51,600 Τα περισσότερα από αυτά είναι τα ίδια, αλλά εδώ παρέχεται ένα συνολικό, ξέρετε, ζήτημα του τι μπορεί να πάει στραβά 950 01:48:51,600 --> 01:48:58,720 σε έναν διακομιστή διαγραμμάτων που περιέχει ακτινογραφίες και ούτω καθεξής. Εντάξει. Οποιεσδήποτε ερωτήσεις ή σχόλια; 951 01:49:01,760 --> 01:49:12,080 Όχι, εντάξει. Πολύ καλά. Λοιπόν είμαι, ας δούμε πού είναι αυτό τελείωσα. Εδώ είναι το email μου. Εάν θέλετε να 952 01:49:12,080 --> 01:49:20,080 με βρείτε, φυσικά, μπορείτε να γράψετε στο LinkedIn, μπορείτε πάντα να με ρωτήσετε. Προσπαθώ να είμαι όσο το δυνατόν 953 01:49:20,080 --> 01:49:25,200 περισσότερο ανταποκρίσιμος στους φοιτητές ή σε οποιουσδήποτε ανθρώπους θέλουν να μάθουν ή να συζητήσουν. 954 01:49:26,240 --> 01:49:31,920 Μου αρέσει να μοιράζομαι πληροφορίες και την εξειδίκευσή μου. Επομένως, μη διστάσετε να επικοινωνήσετε για ό,τι χρειαστείτε. 955 01:49:31,920 --> 01:49:34,720 Και σας ευχαριστώ πολύ για την προσοχή σας. Σας ευχαριστώ.