SlideShare uma empresa Scribd logo
1 de 25
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή
διαδικασίας αρχικής προσφοράς νομίσματος στο
Ethereum Blockchain
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
Επιβλέπων καθηγητής: κ. Ανδρέας Συμεωνίδης
Καμτζηρίδης Γεώργιος
ΑΕΜ: 8542
Οκτώβρης, 2019
ISSEL Intelligent Systems & Software Engineering Labgroup
ISSEL Intelligent Systems & Software Engineering Labgroup 2
Κίνητρο
• Επεκτείνει τη λειτουργία της σε μη οικονομοκεντρικά συστήματα
• Διακινεί νόμιμα μεγάλες χρηματικές ποσότητες
• Ενισχύει τη ψηφιοποίηση αγαθών και προϊόντων
• Βοηθά τη χρηματοδότηση μικρομεσαίων επιχειρήσεων
Τα τελευταία 4 χρόνια η τεχνολογία Blockchain μέσω της πλατφόρμας Ethereum:
Τα τελευταία 2 χρόνια μέσω του Ethereum:
• Πραγματοποιήθηκαν πάνω από 1337 ξεχωριστές χρηματοδοτήσεις επιχειρήσεων1
• Συλλέχθηκαν περίπου 8.158.239.066$ μέσω χρηματοδοτήσεων1
1 Πηγές: https://www.icodata.io/stats/2018, https://www.icodata.io/stats/2019
2 Πηγή: https://www.investopedia.com/news/ethereum-smart-contracts-vulnerable-
hacks-4-million-ether-risk/
Ωστόσο, την ίδια περίοδο σε Blockchain δίκτυα:
• Κλάπηκαν περισσότερα από 500.000.000$ λόγω ευπαθών λογισμικών2
• Πάνω από 4.000.000$ ήταν υπό την κατοχή ευάλωτων προγραμμάτων2
ISSEL Intelligent Systems & Software Engineering Labgroup 3
Σκοπός
• Παρουσίαση της τεχνολογίας Blockchain με έμφαση στο δίκτυο του Ethereum
• Ανάλυση της αρχιτεκτονικής του λογισμικού που λειτουργεί στο Ethereum
• Έρευνα σχετική με τις ευπάθειες των προγραμμάτων στο Ethereum
• Υπόδειξη χρήσης προτύπων σχεδίασης και γενικότερων λύσεων για την αντιμετώπιση των προβλημάτων
• Καθιέρωση καλών πρακτικών σε θέματα ασφαλείας που αφορούν την ανάπτυξη και παραγωγή
λογισμικού
Γενικά:
Ειδικότερα:
• Επεξήγηση μιας διαδικασίας αρχικής προσφοράς νομίσματος (Initial Coin Offering ή ICO)
• Αντιμετώπιση απειλών και λογικών σφαλμάτων ενός ICO
• Εφαρμογή εξειδικευμένων πρακτικών και συμβουλών κατά την ανάπτυξη ενός ICO
Τέλος, παρουσιάζεται αναλυτικά η σχεδίαση και υλοποίηση μιας διαδικασίας ICO με γνώμονα την ασφάλεια
και αξιοπιστία στην πλατφόρμα του Ethereum.
ISSEL Intelligent Systems & Software Engineering Labgroup 4
Γνώσεις που αποκτήθηκαν
• Χαρακτηριστικά δικτύου
• Αρχιτεκτονική λογισμικού
• Ευπάθειες λογισμικού
• Μέθοδοι αντιμετώπισης προβλημάτων
• Καλές πρακτικές
• Πρότυπα σχεδίασης
Γενικά: Ειδικότερα στο Ethereum:
• Τεχνολογία Blockchain
• Αρχική προσφορά νομίσματος (ICO)
Εν τέλει:
• Ασφαλή σχεδίαση και ανάπτυξη λογισμικού στο Ethereum
• Υλοποίηση λογισμικού για τη διεκπεραίωση ενός ICO
ακολουθώντας υψηλά πρότυπα ασφαλείας
ISSEL Intelligent Systems & Software Engineering Labgroup 5
Υπόβαθρο – Ethereum (1/2)
Τι είναι το Ethereum;
• Είναι ένα Blockchain δίκτυο
• Δημιουργήθηκε το 2014 από μια ομάδα προγραμματιστών στην Ελβετία
• Διαθέτει δικό του κρυπτονόμισμα, το ether
Γιατί ξεχωρίζει το δίκτυο του Ethereum;
Γιατί εκτός από την καταχώρηση οικονομικών συναλλαγών επιτρέπει και την
εκτέλεση προγραμμάτων γενικότερου σκοπού
Στο Ethereum:
• Καταχωρούνται προγράμματα τα οποία ονομάζονται έξυπνα συμβόλαια
(Smart Contracts)
• Οι χρήστες του μπορούν να αλληλεπιδράσουν με αυτά μέσω συναλλαγών
• Οι συναλλαγές εκτελούνται από τους miners
• Τα αποτελέσματα των συναλλαγών καταχωρούνται ξανά στην αλυσίδα
ISSEL Intelligent Systems & Software Engineering Labgroup 6
Υπόβαθρο – Ethereum (2/2)
• Στην πράξη το δίκτυο του Ethereum αποτελεί έναν παγκόσμιο υπολογιστή
• Τα προγράμματα γράφονται σε μια γλώσσα υψηλού επιπέδου
Η δημοφιλέστερη γλώσσα υψηλού επιπέδου είναι η Solidity1 η οποία:
1Αποθετήριο: https://github.com/ethereum/solidity
• Είναι σχεδιασμένη για την ανάπτυξη smart contracts
• Αποτελεί αλχημεία των γλωσσών Javascript και C++
• Είναι Turing-Complete
• Υποστηρίζει την αντικειμενοστραφή σχεδίαση λογισμικού
ISSEL Intelligent Systems & Software Engineering Labgroup 7
Υπόβαθρο – Αρχική προσφορά νομίσματος
• Μια μέθοδος συλλογικής χρηματοδότησης ενός προϊόντος ή μιας υπηρεσίας
• Λαμβάνει χώρα, κυρίως, σε Blockchain περιβάλλοντα
Λειτουργία:
Τι είναι;
1. Η εταιρία δημιουργεί μια ποσότητα από ψηφιακές μάρκες (tokens)
2. Συσχετίζει τα tokens με ένα προϊόν ή υπηρεσία
3. Κοστολογεί τα tokens βάσει της συσχέτισης
4. Διαθέτει τα tokens, σε διακριτά στάδια, σε τιμή μικρότερη απ’ αυτή που θα έχει τελικά το προϊόν ή η
υπηρεσία
Αποτέλεσμα:
• Η εταιρία χρηματοδοτείται άμεσα από τους πελάτες της
• Οι πελάτες αποκτούν το προϊόν ή την υπηρεσία που επιθυμούν σε χαμηλή τιμή
Κυριότερα πλεονεκτήματα:
• Αυτοματοποιημένη, αποκεντρωμένη και ανεξάρτητη διαδικασία
• Ορισμένες φορές ανεξάρτητη από κεντρικές αρχές, χωρίς κάποιο νομικό περιορισμό ή ρύθμιση
ISSEL Intelligent Systems & Software Engineering Labgroup 8
Μεθοδολογία – Επίθεση επανεισαγωγής
Δεδομένα:
• Τα smart contracts επιτρέπουν την παύση της εκτέλεσής τους ώστε να εκτελεστεί μια ρουτίνα ενός
εξωτερικού smart contract
• Μόλις ολοκληρωθεί η εκτέλεση της εξωτερικής ρουτίνας, το αρχικό smart contract συνεχίζει να εκτελείται
Πρόβλημα:
Λύση: χρήση προτύπου σχεδίασης ελέγχων-επιδράσεων-αλληλεπιδράσεων (Checks-Effects-
Interactions)
Βήματα:
Αποτέλεσμα: η εσωτερική κατάσταση του smart contract δεν εξαρτάται άμεσα από την
αλληλεπίδραση με το εξωτερικό σύστημα
Η εκτέλεση αυθαίρετου κώδικα μπορεί να δημιουργήσει καταστάσεις αναδρομής, όπου η εξωτερική ρουτίνα
καλεί, ξανά, το αρχικό smart contract επιτρέποντας τη μεταβολή της κατάστασής του με απρόσμενο τρόπο
1. Έλεγχος δεδομένων εισόδου
2. Μεταβολές στην εσωτερική κατάσταση του smart contract
3. Αλληλεπιδράσεις με εξωτερικά συστήματα
ISSEL Intelligent Systems & Software Engineering Labgroup 9
Μεθοδολογία – Επίθεση άρνησης υπηρεσίας
Δεδομένα:
• Στο δίκτυο του Ethereum ο αριθμός των συναλλαγών που μπορούν να καταχωρηθούν σε ένα block
περιορίζεται από το block gas limit
• Ένα smart contract μπορεί να εκτελεί συναλλαγές μαζικά
Πρόβλημα:
Λύση: χρήση προτύπου σχεδίασης Pull Over Push
Βήματα:
Αποτέλεσμα: εξασφαλίζεται η καταχώρηση των συναλλαγών στην αλυσίδα και οι ενέργειες ενός
χρήστη δεν επηρεάζουν τους υπόλοιπους χρήστες, αλλά ούτε και το σύνολο του συστήματος
• Μια συναλλαγή ενδέχεται να μην μπορεί να καταχωρηθεί λόγω της ποσότητας από gas που χρειάζεται
• Μαζικές ενέργειες μπορούν να αναβληθούν αέναα εξαιτίας κακοηθών χρηστών
1. Αποφυγή χρήσης βρόχων επανάληψης σε ανεξέλεγκτου μήκους πίνακες
2. Αποφυγή μαζικών ενεργειών
3. Εκκίνηση διαδικασίας από τον εκάστοτε χρήστη
ISSEL Intelligent Systems & Software Engineering Labgroup 10
Μεθοδολογία – Επίθεση εξουσιοδότησης
Δεδομένα:
• Η γλώσσα Solidity δίνει τη δυνατότητα λήψης της «ταυτότητας» του δράστη που εκτελεί την τρέχουσα
ρουτίνα, αλλά και αυτού που εκκίνησε τη διαδικασία
• Ο δράστης μπορεί να είναι είτε εξωτερικός λογαριασμός είτε λογαριασμός συμβολαίου
Πρόβλημα:
Λύση: εξουσιοδότηση αποκλειστικά και μόνο μέσω της «ταυτότητας» του τελευταίου χρήστη
Βήματα:
Αποτέλεσμα: εξασφαλίζεται ότι η εξουσιοδότηση γίνεται στον «πραγματικό» δράστη
Η χρήση του δράστη που εκκίνησε τη διαδικασία ως «ταυτότητα» για την εξουσιοδότηση μιας ενέργειας
μπορεί να προκαλέσει επιθέσεις τύπου man in the middle
1. Απαγόρευση χρήσης της μεταβλητής tx.origin σε θέματα εξουσιοδότησης
2. Αποκλειστική χρήση της μεταβλητής msg.sender σε θέματα εξουσιοδότησης
ISSEL Intelligent Systems & Software Engineering Labgroup 11
Μεθοδολογία – Καλές πρακτικές
• Έχει δηλώσεις περιορισμού σε όλες τις συναρτήσεις και τις μεταβλητές
• Έχει μηχανισμούς απενεργοποίησης και ενεργοποίησης λειτουργιών
• Πραγματοποιεί αποστολές ether μέσω της συνάρτησης transfer
• Λαμβάνει υπόψη καταστάσεις υπερχείλισης (Overflow) ή ανεπάρκειας (Underflow)
• Κάνει σωστή χρήση των μεταβλητών «χρόνου»
• Έχει αυτοματοποιημένους ελέγχους (Unit Tests) με υψηλή κάλυψη
• Έχει πλήρη τεκμηρίωση τόσο στον πηγαίο κώδικα όσο και σε μορφή εγγράφου ή ιστοσελίδας
Ένα smart contract πρέπει να:
ISSEL Intelligent Systems & Software Engineering Labgroup 12
Αποτελέσματα (1/6)
1. Τεκμηρίωση σε μορφή σχολίων
2. Checks-Effects-Interactions
A. Checks
B. Effects
C. Interactions
3. Χρήση της συνάρτησης transfer
Συνάρτηση επιστροφής χρημάτων
ISSEL Intelligent Systems & Software Engineering Labgroup 13
Αποτελέσματα (2/6)
Συνάρτηση εξαργύρωσης tokens
1. Pull Over Push
ISSEL Intelligent Systems & Software Engineering Labgroup 14
Αποτελέσματα (3/6)
Συνάρτηση μεταφοράς tokens
Χρήση συναρτήσεων βιβλιοθήκης
SafeMath για την αντιμετώπιση
περιπτώσεων overflow και underflow
ISSEL Intelligent Systems & Software Engineering Labgroup 15
Αποτελέσματα (4/6)
Συνάρτηση ενεργοποίησης και
απενεργοποίησης
1. Συνάρτηση ενεργοποίησης
2. Συνάρτηση απενεργοποίησης
ISSEL Intelligent Systems & Software Engineering Labgroup 16
Αποτελέσματα (5/6)
1. Χρήση του timestamp αντί του block number
2. Χρήση του msg.sender αντί του tx.origin
Τροποποιητές συναρτήσεων χρόνου
Τροποποιητές συναρτήσεων
εξουσιοδότησης
ISSEL Intelligent Systems & Software Engineering Labgroup 17
Αποτελέσματα (6/6)
Κάλυψη Unit Tests Τεκμηρίωση κώδικα
ISSEL Intelligent Systems & Software Engineering Labgroup 18
Υποδομή
Διεπαφή χρήστη Διακομιστής
• Αλληλεπίδραση χρηστών με τα smart contracts
• Παρακολούθηση των smart contracts
• Παρουσίαση αναλυτικών δεδομένων και
διαγραμμάτων
Τεχνολογίες:
• AngularJS: 1.6.5
• Typescript: 3.4.4
• Web3JS: 1.0.0-beta.37
• ChartJS: 2.8.0
• Παρακολούθηση της δραστηριότητας των smart
contracts
• Λεπτομερής καταγραφή των δεδομένων που
διαχειρίζονται τα smart contracts
• Διάθεση των δεδομένων στη διεπαφή για την
κατασκευή διαγραμμάτων
Τεχνολογίες:
• NodeJS: 11.10.1
• ExpressJS: 4.17.1
• MongoDB: 3.4.21
ISSEL Intelligent Systems & Software Engineering Labgroup 19
Διεπαφή χρήστη - Token
ISSEL Intelligent Systems & Software Engineering Labgroup 20
Διεπαφή χρήστη - ICO
ISSEL Intelligent Systems & Software Engineering Labgroup 21
Διεπαφή χρήστη - Διαγράμματα
ISSEL Intelligent Systems & Software Engineering Labgroup 22
Συμπεράσματα
• Η ανάπτυξη ασφαλών smart contracts είναι μια απαιτητική διαδικασία
• Διαφέρει στη νοοτροπία από τη συμβατική παραγωγή λογισμικού
• Χρειάζεται εξειδικευμένες γνώσεις σε διάφορους τομείς
• Απαιτεί ιδιαίτερη προσοχή κατά τα στάδια της ανάλυσης ενός smart contract
• Η κατανόηση των κυριότερων ευπαθειών ενός smart contract είναι απαραίτητη
• Η εφαρμογή καλών πρακτικών κατά την ανάπτυξη είναι αναγκαία
Διαδικασία ανάπτυξης smart contracts για μια διαδικασία ICO
ISSEL Intelligent Systems & Software Engineering Labgroup 23
Μελλοντική εργασία
Ο τομέας της ασφάλειας είναι ραγδαία εξελισσόμενος, ιδιαίτερα σε μια πλατφόρμα ηλικίας 5 ετών.
Καθημερινά εντοπίζονται νέες ευπάθειες σε συστήματα που θεωρούνταν, μέχρι πρότερα, ασφαλή.
Το δίκτυο του Ethereum αναβαθμίζεται ετησίως, προσθέτοντας νέα χαρακτηριστικά και δημιουργώντας
καινούργιες απαιτήσεις ασφαλείας.
Εμφανίζονται νέα πρότυπα σχεδίασης για την αντιμετώπιση προβλημάτων στα smart contracts.
ISSEL Intelligent Systems & Software Engineering Labgroup 24
Ευχαριστίες
Θα ήθελα να ευχαριστήσω τον Αναπληρωτή καθηγητή κ. Ανδρέα Συμεωνίδη για την εμπιστοσύνη που μου έδειξε
με την αποδοχή της πρότασης για τη διπλωματική εργασία, καθώς και τη συμβολή του στην τελική μορφή αυτής
Επίσης, θα ήθελα να ευχαριστήσω τον κ. Δημήτρη Φιλιππίδη ο οποίος πρότεινε τη βασική ιδέα της εργασίας
Τέλος, θα ήθελα να ευχαριστήσω όλους εσάς που είστε σήμερα εδώ γι’ αυτήν την παρουσίαση
ISSEL Intelligent Systems & Software Engineering Labgroup 25
Ερωτήσεις

Mais conteúdo relacionado

Mais de ISSEL

Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
ISSEL
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
ISSEL
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
ISSEL
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
ISSEL
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
ISSEL
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
ISSEL
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ISSEL
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
ISSEL
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
ISSEL
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
ISSEL
 
Camera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environments
ISSEL
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
ISSEL
 
Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...
ISSEL
 
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ISSEL
 
Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...
ISSEL
 
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
ISSEL
 
Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...
ISSEL
 
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
ISSEL
 
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
ISSEL
 

Mais de ISSEL (20)

Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
 
Camera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environments
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
 
Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...
 
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
 
Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...
 
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
 
Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...
 
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
 
Analysis and profiling of developer profiles using data mining techniques fro...
Analysis and profiling of developer profiles using data mining techniques fro...Analysis and profiling of developer profiles using data mining techniques fro...
Analysis and profiling of developer profiles using data mining techniques fro...
 
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
 

Software Security Analysis for an Initial Coin Offering Process on the Ethereum Blockchain

  • 1. Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς νομίσματος στο Ethereum Blockchain ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Επιβλέπων καθηγητής: κ. Ανδρέας Συμεωνίδης Καμτζηρίδης Γεώργιος ΑΕΜ: 8542 Οκτώβρης, 2019 ISSEL Intelligent Systems & Software Engineering Labgroup
  • 2. ISSEL Intelligent Systems & Software Engineering Labgroup 2 Κίνητρο • Επεκτείνει τη λειτουργία της σε μη οικονομοκεντρικά συστήματα • Διακινεί νόμιμα μεγάλες χρηματικές ποσότητες • Ενισχύει τη ψηφιοποίηση αγαθών και προϊόντων • Βοηθά τη χρηματοδότηση μικρομεσαίων επιχειρήσεων Τα τελευταία 4 χρόνια η τεχνολογία Blockchain μέσω της πλατφόρμας Ethereum: Τα τελευταία 2 χρόνια μέσω του Ethereum: • Πραγματοποιήθηκαν πάνω από 1337 ξεχωριστές χρηματοδοτήσεις επιχειρήσεων1 • Συλλέχθηκαν περίπου 8.158.239.066$ μέσω χρηματοδοτήσεων1 1 Πηγές: https://www.icodata.io/stats/2018, https://www.icodata.io/stats/2019 2 Πηγή: https://www.investopedia.com/news/ethereum-smart-contracts-vulnerable- hacks-4-million-ether-risk/ Ωστόσο, την ίδια περίοδο σε Blockchain δίκτυα: • Κλάπηκαν περισσότερα από 500.000.000$ λόγω ευπαθών λογισμικών2 • Πάνω από 4.000.000$ ήταν υπό την κατοχή ευάλωτων προγραμμάτων2
  • 3. ISSEL Intelligent Systems & Software Engineering Labgroup 3 Σκοπός • Παρουσίαση της τεχνολογίας Blockchain με έμφαση στο δίκτυο του Ethereum • Ανάλυση της αρχιτεκτονικής του λογισμικού που λειτουργεί στο Ethereum • Έρευνα σχετική με τις ευπάθειες των προγραμμάτων στο Ethereum • Υπόδειξη χρήσης προτύπων σχεδίασης και γενικότερων λύσεων για την αντιμετώπιση των προβλημάτων • Καθιέρωση καλών πρακτικών σε θέματα ασφαλείας που αφορούν την ανάπτυξη και παραγωγή λογισμικού Γενικά: Ειδικότερα: • Επεξήγηση μιας διαδικασίας αρχικής προσφοράς νομίσματος (Initial Coin Offering ή ICO) • Αντιμετώπιση απειλών και λογικών σφαλμάτων ενός ICO • Εφαρμογή εξειδικευμένων πρακτικών και συμβουλών κατά την ανάπτυξη ενός ICO Τέλος, παρουσιάζεται αναλυτικά η σχεδίαση και υλοποίηση μιας διαδικασίας ICO με γνώμονα την ασφάλεια και αξιοπιστία στην πλατφόρμα του Ethereum.
  • 4. ISSEL Intelligent Systems & Software Engineering Labgroup 4 Γνώσεις που αποκτήθηκαν • Χαρακτηριστικά δικτύου • Αρχιτεκτονική λογισμικού • Ευπάθειες λογισμικού • Μέθοδοι αντιμετώπισης προβλημάτων • Καλές πρακτικές • Πρότυπα σχεδίασης Γενικά: Ειδικότερα στο Ethereum: • Τεχνολογία Blockchain • Αρχική προσφορά νομίσματος (ICO) Εν τέλει: • Ασφαλή σχεδίαση και ανάπτυξη λογισμικού στο Ethereum • Υλοποίηση λογισμικού για τη διεκπεραίωση ενός ICO ακολουθώντας υψηλά πρότυπα ασφαλείας
  • 5. ISSEL Intelligent Systems & Software Engineering Labgroup 5 Υπόβαθρο – Ethereum (1/2) Τι είναι το Ethereum; • Είναι ένα Blockchain δίκτυο • Δημιουργήθηκε το 2014 από μια ομάδα προγραμματιστών στην Ελβετία • Διαθέτει δικό του κρυπτονόμισμα, το ether Γιατί ξεχωρίζει το δίκτυο του Ethereum; Γιατί εκτός από την καταχώρηση οικονομικών συναλλαγών επιτρέπει και την εκτέλεση προγραμμάτων γενικότερου σκοπού Στο Ethereum: • Καταχωρούνται προγράμματα τα οποία ονομάζονται έξυπνα συμβόλαια (Smart Contracts) • Οι χρήστες του μπορούν να αλληλεπιδράσουν με αυτά μέσω συναλλαγών • Οι συναλλαγές εκτελούνται από τους miners • Τα αποτελέσματα των συναλλαγών καταχωρούνται ξανά στην αλυσίδα
  • 6. ISSEL Intelligent Systems & Software Engineering Labgroup 6 Υπόβαθρο – Ethereum (2/2) • Στην πράξη το δίκτυο του Ethereum αποτελεί έναν παγκόσμιο υπολογιστή • Τα προγράμματα γράφονται σε μια γλώσσα υψηλού επιπέδου Η δημοφιλέστερη γλώσσα υψηλού επιπέδου είναι η Solidity1 η οποία: 1Αποθετήριο: https://github.com/ethereum/solidity • Είναι σχεδιασμένη για την ανάπτυξη smart contracts • Αποτελεί αλχημεία των γλωσσών Javascript και C++ • Είναι Turing-Complete • Υποστηρίζει την αντικειμενοστραφή σχεδίαση λογισμικού
  • 7. ISSEL Intelligent Systems & Software Engineering Labgroup 7 Υπόβαθρο – Αρχική προσφορά νομίσματος • Μια μέθοδος συλλογικής χρηματοδότησης ενός προϊόντος ή μιας υπηρεσίας • Λαμβάνει χώρα, κυρίως, σε Blockchain περιβάλλοντα Λειτουργία: Τι είναι; 1. Η εταιρία δημιουργεί μια ποσότητα από ψηφιακές μάρκες (tokens) 2. Συσχετίζει τα tokens με ένα προϊόν ή υπηρεσία 3. Κοστολογεί τα tokens βάσει της συσχέτισης 4. Διαθέτει τα tokens, σε διακριτά στάδια, σε τιμή μικρότερη απ’ αυτή που θα έχει τελικά το προϊόν ή η υπηρεσία Αποτέλεσμα: • Η εταιρία χρηματοδοτείται άμεσα από τους πελάτες της • Οι πελάτες αποκτούν το προϊόν ή την υπηρεσία που επιθυμούν σε χαμηλή τιμή Κυριότερα πλεονεκτήματα: • Αυτοματοποιημένη, αποκεντρωμένη και ανεξάρτητη διαδικασία • Ορισμένες φορές ανεξάρτητη από κεντρικές αρχές, χωρίς κάποιο νομικό περιορισμό ή ρύθμιση
  • 8. ISSEL Intelligent Systems & Software Engineering Labgroup 8 Μεθοδολογία – Επίθεση επανεισαγωγής Δεδομένα: • Τα smart contracts επιτρέπουν την παύση της εκτέλεσής τους ώστε να εκτελεστεί μια ρουτίνα ενός εξωτερικού smart contract • Μόλις ολοκληρωθεί η εκτέλεση της εξωτερικής ρουτίνας, το αρχικό smart contract συνεχίζει να εκτελείται Πρόβλημα: Λύση: χρήση προτύπου σχεδίασης ελέγχων-επιδράσεων-αλληλεπιδράσεων (Checks-Effects- Interactions) Βήματα: Αποτέλεσμα: η εσωτερική κατάσταση του smart contract δεν εξαρτάται άμεσα από την αλληλεπίδραση με το εξωτερικό σύστημα Η εκτέλεση αυθαίρετου κώδικα μπορεί να δημιουργήσει καταστάσεις αναδρομής, όπου η εξωτερική ρουτίνα καλεί, ξανά, το αρχικό smart contract επιτρέποντας τη μεταβολή της κατάστασής του με απρόσμενο τρόπο 1. Έλεγχος δεδομένων εισόδου 2. Μεταβολές στην εσωτερική κατάσταση του smart contract 3. Αλληλεπιδράσεις με εξωτερικά συστήματα
  • 9. ISSEL Intelligent Systems & Software Engineering Labgroup 9 Μεθοδολογία – Επίθεση άρνησης υπηρεσίας Δεδομένα: • Στο δίκτυο του Ethereum ο αριθμός των συναλλαγών που μπορούν να καταχωρηθούν σε ένα block περιορίζεται από το block gas limit • Ένα smart contract μπορεί να εκτελεί συναλλαγές μαζικά Πρόβλημα: Λύση: χρήση προτύπου σχεδίασης Pull Over Push Βήματα: Αποτέλεσμα: εξασφαλίζεται η καταχώρηση των συναλλαγών στην αλυσίδα και οι ενέργειες ενός χρήστη δεν επηρεάζουν τους υπόλοιπους χρήστες, αλλά ούτε και το σύνολο του συστήματος • Μια συναλλαγή ενδέχεται να μην μπορεί να καταχωρηθεί λόγω της ποσότητας από gas που χρειάζεται • Μαζικές ενέργειες μπορούν να αναβληθούν αέναα εξαιτίας κακοηθών χρηστών 1. Αποφυγή χρήσης βρόχων επανάληψης σε ανεξέλεγκτου μήκους πίνακες 2. Αποφυγή μαζικών ενεργειών 3. Εκκίνηση διαδικασίας από τον εκάστοτε χρήστη
  • 10. ISSEL Intelligent Systems & Software Engineering Labgroup 10 Μεθοδολογία – Επίθεση εξουσιοδότησης Δεδομένα: • Η γλώσσα Solidity δίνει τη δυνατότητα λήψης της «ταυτότητας» του δράστη που εκτελεί την τρέχουσα ρουτίνα, αλλά και αυτού που εκκίνησε τη διαδικασία • Ο δράστης μπορεί να είναι είτε εξωτερικός λογαριασμός είτε λογαριασμός συμβολαίου Πρόβλημα: Λύση: εξουσιοδότηση αποκλειστικά και μόνο μέσω της «ταυτότητας» του τελευταίου χρήστη Βήματα: Αποτέλεσμα: εξασφαλίζεται ότι η εξουσιοδότηση γίνεται στον «πραγματικό» δράστη Η χρήση του δράστη που εκκίνησε τη διαδικασία ως «ταυτότητα» για την εξουσιοδότηση μιας ενέργειας μπορεί να προκαλέσει επιθέσεις τύπου man in the middle 1. Απαγόρευση χρήσης της μεταβλητής tx.origin σε θέματα εξουσιοδότησης 2. Αποκλειστική χρήση της μεταβλητής msg.sender σε θέματα εξουσιοδότησης
  • 11. ISSEL Intelligent Systems & Software Engineering Labgroup 11 Μεθοδολογία – Καλές πρακτικές • Έχει δηλώσεις περιορισμού σε όλες τις συναρτήσεις και τις μεταβλητές • Έχει μηχανισμούς απενεργοποίησης και ενεργοποίησης λειτουργιών • Πραγματοποιεί αποστολές ether μέσω της συνάρτησης transfer • Λαμβάνει υπόψη καταστάσεις υπερχείλισης (Overflow) ή ανεπάρκειας (Underflow) • Κάνει σωστή χρήση των μεταβλητών «χρόνου» • Έχει αυτοματοποιημένους ελέγχους (Unit Tests) με υψηλή κάλυψη • Έχει πλήρη τεκμηρίωση τόσο στον πηγαίο κώδικα όσο και σε μορφή εγγράφου ή ιστοσελίδας Ένα smart contract πρέπει να:
  • 12. ISSEL Intelligent Systems & Software Engineering Labgroup 12 Αποτελέσματα (1/6) 1. Τεκμηρίωση σε μορφή σχολίων 2. Checks-Effects-Interactions A. Checks B. Effects C. Interactions 3. Χρήση της συνάρτησης transfer Συνάρτηση επιστροφής χρημάτων
  • 13. ISSEL Intelligent Systems & Software Engineering Labgroup 13 Αποτελέσματα (2/6) Συνάρτηση εξαργύρωσης tokens 1. Pull Over Push
  • 14. ISSEL Intelligent Systems & Software Engineering Labgroup 14 Αποτελέσματα (3/6) Συνάρτηση μεταφοράς tokens Χρήση συναρτήσεων βιβλιοθήκης SafeMath για την αντιμετώπιση περιπτώσεων overflow και underflow
  • 15. ISSEL Intelligent Systems & Software Engineering Labgroup 15 Αποτελέσματα (4/6) Συνάρτηση ενεργοποίησης και απενεργοποίησης 1. Συνάρτηση ενεργοποίησης 2. Συνάρτηση απενεργοποίησης
  • 16. ISSEL Intelligent Systems & Software Engineering Labgroup 16 Αποτελέσματα (5/6) 1. Χρήση του timestamp αντί του block number 2. Χρήση του msg.sender αντί του tx.origin Τροποποιητές συναρτήσεων χρόνου Τροποποιητές συναρτήσεων εξουσιοδότησης
  • 17. ISSEL Intelligent Systems & Software Engineering Labgroup 17 Αποτελέσματα (6/6) Κάλυψη Unit Tests Τεκμηρίωση κώδικα
  • 18. ISSEL Intelligent Systems & Software Engineering Labgroup 18 Υποδομή Διεπαφή χρήστη Διακομιστής • Αλληλεπίδραση χρηστών με τα smart contracts • Παρακολούθηση των smart contracts • Παρουσίαση αναλυτικών δεδομένων και διαγραμμάτων Τεχνολογίες: • AngularJS: 1.6.5 • Typescript: 3.4.4 • Web3JS: 1.0.0-beta.37 • ChartJS: 2.8.0 • Παρακολούθηση της δραστηριότητας των smart contracts • Λεπτομερής καταγραφή των δεδομένων που διαχειρίζονται τα smart contracts • Διάθεση των δεδομένων στη διεπαφή για την κατασκευή διαγραμμάτων Τεχνολογίες: • NodeJS: 11.10.1 • ExpressJS: 4.17.1 • MongoDB: 3.4.21
  • 19. ISSEL Intelligent Systems & Software Engineering Labgroup 19 Διεπαφή χρήστη - Token
  • 20. ISSEL Intelligent Systems & Software Engineering Labgroup 20 Διεπαφή χρήστη - ICO
  • 21. ISSEL Intelligent Systems & Software Engineering Labgroup 21 Διεπαφή χρήστη - Διαγράμματα
  • 22. ISSEL Intelligent Systems & Software Engineering Labgroup 22 Συμπεράσματα • Η ανάπτυξη ασφαλών smart contracts είναι μια απαιτητική διαδικασία • Διαφέρει στη νοοτροπία από τη συμβατική παραγωγή λογισμικού • Χρειάζεται εξειδικευμένες γνώσεις σε διάφορους τομείς • Απαιτεί ιδιαίτερη προσοχή κατά τα στάδια της ανάλυσης ενός smart contract • Η κατανόηση των κυριότερων ευπαθειών ενός smart contract είναι απαραίτητη • Η εφαρμογή καλών πρακτικών κατά την ανάπτυξη είναι αναγκαία Διαδικασία ανάπτυξης smart contracts για μια διαδικασία ICO
  • 23. ISSEL Intelligent Systems & Software Engineering Labgroup 23 Μελλοντική εργασία Ο τομέας της ασφάλειας είναι ραγδαία εξελισσόμενος, ιδιαίτερα σε μια πλατφόρμα ηλικίας 5 ετών. Καθημερινά εντοπίζονται νέες ευπάθειες σε συστήματα που θεωρούνταν, μέχρι πρότερα, ασφαλή. Το δίκτυο του Ethereum αναβαθμίζεται ετησίως, προσθέτοντας νέα χαρακτηριστικά και δημιουργώντας καινούργιες απαιτήσεις ασφαλείας. Εμφανίζονται νέα πρότυπα σχεδίασης για την αντιμετώπιση προβλημάτων στα smart contracts.
  • 24. ISSEL Intelligent Systems & Software Engineering Labgroup 24 Ευχαριστίες Θα ήθελα να ευχαριστήσω τον Αναπληρωτή καθηγητή κ. Ανδρέα Συμεωνίδη για την εμπιστοσύνη που μου έδειξε με την αποδοχή της πρότασης για τη διπλωματική εργασία, καθώς και τη συμβολή του στην τελική μορφή αυτής Επίσης, θα ήθελα να ευχαριστήσω τον κ. Δημήτρη Φιλιππίδη ο οποίος πρότεινε τη βασική ιδέα της εργασίας Τέλος, θα ήθελα να ευχαριστήσω όλους εσάς που είστε σήμερα εδώ γι’ αυτήν την παρουσίαση
  • 25. ISSEL Intelligent Systems & Software Engineering Labgroup 25 Ερωτήσεις