Ασφάλεια Λογισμικού |
|
|---|---|
| Διδάσκοντες | Χρήστος Ξενάκης |
| Κατηγορία μαθήματος | Ε/ΑΣΦ |
| Κωδικός μαθήματος | ΨΣ-811 |
| Πιστωτικές μονάδες | 5 |
| Ώρες μαθήματος | 3 ώρες |
| Ώρες εργαστηρίων | 2 ώρες |
| Ηλεκτρονικό υλικό | Προβολή στον Αρίσταρχο (Open e-Class) |
Μαθησιακά Αποτελέσματα
Στο πλαίσιο του μαθήματος οι φοιτητές αποκτούν θεωρητικές και πρακτικές γνώσεις για τον σχεδιασμό, την ανάπτυξη, τον έλεγχο και τη συντήρηση ασφαλούς λογισμικού. Το μάθημα καλύπτει τον κύκλο ζωής ασφαλούς ανάπτυξης, threat modeling, ασφαλή προγραμματισμό, ασφάλεια web/API εφαρμογών, βασική κρυπτογραφία για προγραμματιστές, security testing, software supply chain, DevSecOps και ασφάλεια deployment σε cloud/container περιβάλλοντα.
Με την επιτυχή ολοκλήρωση του μαθήματος οι φοιτητές θα είναι σε θέση:
● Να εξηγούν τους στόχους εμπιστευτικότητας, ακεραιότητας και διαθεσιμότητας, καθώς και τις έννοιες threat, vulnerability, exploit και risk.
●Να ενσωματώνουν απαιτήσεις ασφάλειας, abuse cases, secure design reviews και security gates σε SDLC, agile και DevOps διαδικασίες.
● Να εκπονούν threat models με STRIDE, attack trees, data-flow diagrams, trust boundaries και τεκμηριωμένη κατάταξη κινδύνων.
● Να αναγνωρίζουν και να διορθώνουν λάθη προγραμματισμού.
● Να αναλύουν βασικές κατηγορίες ευπαθειών, όπως memory safety bugs, injection, XSS, broken access control, CSRF, session flaws και κρυπτογραφικά λάθη.
● Να χρησιμοποιούν ασφαλείς βιβλιοθήκες για password hashing, κρυπτογράφηση, TLS και διαχείριση κλειδιών, αποφεύγοντας μη ασφαλείς ιδιοκατασκευές.
● Να εφαρμόζουν τεχνικές επαλήθευσης όπως code review, SAST, DAST, SCA, fuzzing, ASVS-based testing και CWE mapping, και να ιεραρχούν ευρήματα.
● Να αξιολογούν κινδύνους software supply chain, CI/CD, containers, cloud IAM και IaC misconfigurations και να προτείνουν κατάλληλα mitigations.
● Να τεκμηριώνουν επαγγελματικά ένα εύρημα ασφάλειας και να παρουσιάζουν threat model, ελεγχόμενη εκμετάλλευση, διόρθωση και security report
Περιεχόμενα
Στόχος του μαθήματος είναι η εξοικείωση των φοιτητών με τις αρχές, τις μεθόδους και τα εργαλεία που απαιτούνται για την ανάπτυξη ασφαλούς λογισμικού σε όλο τον κύκλο ζωής του. Το μάθημα συνδυάζει θεωρία, μελέτη πραγματικών ευπαθειών και εργαστηριακές ασκήσεις σε απομονωμένα περιβάλλοντα, με έμφαση στην κατανόηση του κινδύνου, στην ασφαλή υλοποίηση, στον έλεγχο και στην τεκμηριωμένη διόρθωση.
Ειδικότερα, το μάθημα περιλαμβάνει τις ακόλουθες ενότητες:
- Εισαγωγή στην Ασφάλεια Λογισμικού: εμπιστευτικότητα, ακεραιότητα, διαθεσιμότητα, threat, vulnerability, exploit, risk, ηθικά και νομικά όρια.
- Secure Software Development Lifecycle: security requirements, abuse cases, secure design reviews, NIST SSDF και security gates σε agile/DevOps.
- Threat Modeling: STRIDE, attack trees, trust boundaries, data-flow diagrams και risk ranking.
- Θεμέλια Ασφαλούς Προγραμματισμού: input validation, output encoding, error handling, logging, fail-safe defaults και secure coding standards.
- Memory Safety και Low-Level Vulnerabilities: buffer overflows, use-after-free, integer bugs, format strings και memory-safe languages.
- Web Security I – Injection και XSS: SQL/NoSQL/command injection, cross-site scripting, template injection, sanitization έναντι
- Web Security II – Authentication, Sessions και Access Control: authentication, authorization, session management, CSRF, broken access control, MFA και password storage.
- Κρυπτογραφία για Προγραμματιστές: hashing, password hashing, symmetric/asymmetric crypto, TLS, key management και συνηθισμένα λάθη.
- API και Microservice Security: REST/GraphQL security, OAuth 2.0/OIDC basics, JWT mistakes, rate limiting και service-to-service authentication.
- Security Testing και Verification: SAST, DAST, SCA, fuzzing, code review, ASVS-based testing και CWE mapping.
- Software Supply Chain και DevSecOps: dependency risks, SBOMs, package compromise, CI/CD security, secrets scanning και signed builds.
- Cloud, Container και Deployment Security: container images, Kubernetes basics, IaC misconfigurations, cloud IAM, logging και monitoring.
- Αναδυόμενα Θέματα: ασφάλεια AI/LLM εφαρμογών, secure maintenance, vulnerability disclosure και incident respons
Προτεινόμενα Συγγράμματα
1. McGraw, G. (2006). Software Security: Building Security In. Addison-Wesley.
2. Howard, M., LeBlanc, D. and Viega, J. (2010). 24 Deadly Sins of Software Security. McGraw-Hill.
3. Seacord, R. C. (2013). Secure Coding in C and C++, 2nd ed. Addison-Wesley.

