Υπερχείλιση Ακέραιου (Εφαρμογές Ιστού)
Reading time: 5 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αυτή η σελίδα εστιάζει στο πώς οι υπερχειλίσεις/κοπές ακέραιων αριθμών μπορούν να καταχραστούν σε εφαρμογές ιστού και προγράμματα περιήγησης. Για τις πρωτογενείς εκμεταλλεύσεις μέσα σε εγγενείς δυαδικούς κώδικες μπορείτε να συνεχίσετε να διαβάζετε τη σελίδα που είναι αφιερωμένη σε αυτό:
{{#ref}}
../../binary-exploitation/integer-overflow.md {{#endref}}
1. Γιατί η αριθμητική με ακέραιους αριθμούς εξακολουθεί να έχει σημασία στο διαδίκτυο
Ακόμα και αν η πλειονότητα της επιχειρηματικής λογικής σε σύγχρονες στοίβες είναι γραμμένη σε ασφαλείς μνήμες γλώσσες, η υποκείμενη εκτέλεση (ή οι βιβλιοθήκες τρίτων) τελικά υλοποιείται σε C/C++. Όποτε χρησιμοποιούνται αριθμοί που ελέγχονται από τον χρήστη για την κατανομή μνημών, τον υπολογισμό μετατοπίσεων ή την εκτέλεση ελέγχων μήκους, μια περιτύλιξη 32-bit ή 64-bit μπορεί να μετατρέψει μια φαινομενικά αβλαβή παράμετρο σε μια ανάγνωση/γραφή εκτός ορίων, μια παράκαμψη λογικής ή μια DoS.
Τυπική επιφάνεια επίθεσης:
- Αριθμητικές παράμετροι αιτήματος – κλασικά πεδία id, offset ή count.
- Επικεφαλίδες μήκους/μεγέθους – Content-Length, μήκος πλαισίου WebSocket, HTTP/2 continuation_len, κ.λπ.
- Μεταδεδομένα μορφής αρχείου που αναλύονται από τον διακομιστή ή τον πελάτη – διαστάσεις εικόνας, μεγέθη τμημάτων, πίνακες γραμματοσειρών.
- Μετατροπές σε επίπεδο γλώσσας – υπογεγραμμένες↔μη υπογεγραμμένες μετατροπές σε PHP/Go/Rust FFI, JS Number → int32 κοπές μέσα στο V8.
- Αυθεντικοποίηση & επιχειρηματική λογική – αξία κουπονιού, τιμή ή υπολογισμοί υπολοίπου που υπερχειλίζουν σιωπηλά.
2. Πρόσφατες πραγματικές ευπάθειες (2023-2025)
Έτος | Συστατικό | Ρίζα αιτίας | Επιπτώσεις |
---|---|---|---|
2023 | libwebp – CVE-2023-4863 | Υπερχείλιση πολλαπλασιασμού 32-bit κατά τον υπολογισμό του μεγέθους αποκωδικοποιημένων εικονοστοιχείων | Προκάλεσε ένα 0-day Chrome (BLASTPASS σε iOS), επέτρεψε εκτέλεση απομακρυσμένου κώδικα μέσα στο sandbox του renderer. |
2024 | V8 – CVE-2024-0519 | Κοπή σε 32-bit κατά την αύξηση ενός JSArray οδηγεί σε OOB εγγραφή στο backing store | Εκτέλεση απομακρυσμένου κώδικα μετά από μία μόνο επίσκεψη. |
2025 | Apollo GraphQL Server (μη δημοσιευμένο patch) | Χρησιμοποιήθηκε 32-bit υπογεγραμμένος ακέραιος για τα πρώτα/τελευταία επιχειρήματα σε σελίδες; αρνητικές τιμές περιτυλίγονται σε τεράστιες θετικές | Παράκαμψη λογικής & εξάντληση μνήμης (DoS). |
3. Στρατηγική δοκιμών
3.1 Φύλλο συμβουλών οριακής τιμής
Στείλτε ακραίες υπογεγραμμένες/μη υπογεγραμμένες τιμές όπου αναμένεται ένας ακέραιος:
-1, 0, 1,
127, 128, 255, 256,
32767, 32768, 65535, 65536,
2147483647, 2147483648, 4294967295,
9223372036854775807, 9223372036854775808,
0x7fffffff, 0x80000000, 0xffffffff
Άλλες χρήσιμες μορφές:
- Hex (0x100), οκταδική (0377), επιστημονική (1e10), JSON big-int (9999999999999999999).
- Πολύ μεγάλες ακολουθίες ψηφίων (>1kB) για να χτυπήσουν προσαρμοσμένους αναλυτές.
3.2 Πρότυπο Burp Intruder
§INTEGER§
Payload type: Numbers
From: -10 To: 4294967300 Step: 1
Pad to length: 10, Enable hex prefix 0x
3.3 Fuzzing βιβλιοθήκες & runtimes
- AFL++/Honggfuzz με libFuzzer harness γύρω από τον parser (π.χ., WebP, PNG, protobuf).
- Fuzzilli – γραμματικά ευαίσθητο fuzzing μηχανών JavaScript για να χτυπήσει τις ακροτηριασμούς ακεραίων V8/JSC.
- boofuzz – fuzzing δικτυακού πρωτοκόλλου (WebSocket, HTTP/2) εστιάζοντας στα πεδία μήκους.
4. Πρότυπα εκμετάλλευσης
4.1 Παράκαμψη λογικής στον κωδικό πλευράς διακομιστή (παράδειγμα PHP)
$price = (int)$_POST['price']; // expecting cents (0-10000)
$total = $price * 100; // ← 32-bit overflow possible
if($total > 1000000){
die('Too expensive');
}
/* Sending price=21474850 → $total wraps to ‑2147483648 and check is bypassed */
4.2 Υπερχείλιση σωρού μέσω αποκωδικοποιητή εικόνας (libwebp 0-day)
Ο αποκωδικοποιητής WebP χωρίς απώλειες πολλαπλασίασε το πλάτος εικόνας × ύψος × 4 (RGBA) μέσα σε έναν 32-bit int. Ένα κατασκευασμένο αρχείο με διαστάσεις 16384 × 16384 υπερχειλίζει τον πολλαπλασιασμό, εκχωρεί ένα σύντομο buffer και στη συνέχεια γράφει ~1GB αποσυμπιεσμένων δεδομένων πέρα από τον σωρό – οδηγώντας σε RCE σε κάθε πρόγραμμα περιήγησης βασισμένο σε Chromium πριν από την έκδοση 116.0.5845.187.
4.3 Αλυσίδα XSS/RCE βασισμένη σε πρόγραμμα περιήγησης
- Υπερχείλιση ακέραιου στο V8 δίνει αυθαίρετη ανάγνωση/γραφή.
- Ξεφύγετε από το sandbox με ένα δεύτερο σφάλμα ή καλέστε εγγενή APIs για να ρίξετε ένα payload.
- Το payload στη συνέχεια εισάγει ένα κακόβουλο σενάριο στο αρχικό πλαίσιο → αποθηκευμένο XSS.
5. Κατευθυντήριες γραμμές άμυνας
- Χρησιμοποιήστε ευρείες τύπους ή ελεγμένη αριθμητική – π.χ., size_t, Rust checked_add, Go math/bits.Add64.
- Επικυρώστε τα εύρη νωρίς: απορρίψτε οποιαδήποτε τιμή εκτός του επιχειρηματικού τομέα πριν από την αριθμητική.
- Ενεργοποιήστε τους απολυμαντές του μεταγλωττιστή: -fsanitize=integer, UBSan, Go race detector.
- Υιοθετήστε fuzzing στο CI/CD – συνδυάστε την ανατροφοδότηση κάλυψης με όρια corpora.
- Μείνετε ενημερωμένοι – τα σφάλματα υπερχείλισης ακέραιου σε προγράμματα περιήγησης συχνά όπλιζονται εντός εβδομάδων.
Αναφορές
- NVD CVE-2023-4863 – libwebp Heap Buffer Overflow
- Google Project Zero – "Understanding V8 CVE-2024-0519"
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.