Hash Length Extension Attack

Support HackTricks

Summary of the attack

Φανταστείτε έναν διακομιστή που υπογράφει κάποια δεδομένα προσθέτοντας ένα μυστικό σε κάποια γνωστά καθαρά δεδομένα και στη συνέχεια κατακερματίζοντας αυτά τα δεδομένα. Αν γνωρίζετε:

  • Το μήκος του μυστικού (αυτό μπορεί επίσης να βρεθεί με brute force από μια δεδομένη περιοχή μήκους)

  • Τα καθαρά δεδομένα

  • Ο αλγόριθμος (και είναι ευάλωτος σε αυτή την επίθεση)

  • Η προσθήκη είναι γνωστή

  • Συνήθως χρησιμοποιείται μια προεπιλεγμένη, οπότε αν πληρούνται οι άλλες 3 απαιτήσεις, αυτό ισχύει επίσης

  • Η προσθήκη ποικίλλει ανάλογα με το μήκος του μυστικού + δεδομένα, γι' αυτό χρειάζεται το μήκος του μυστικού

Τότε, είναι δυνατό για έναν επιτιθέμενο να προσθέσει δεδομένα και να δημιουργήσει μια έγκυρη υπογραφή για τα προηγούμενα δεδομένα + προστιθέμενα δεδομένα.

How?

Βασικά, οι ευάλωτοι αλγόριθμοι δημιουργούν τους κατακερματισμούς πρώτα κατακερματίζοντας ένα μπλοκ δεδομένων, και στη συνέχεια, από τον προηγουμένως δημιουργημένο κατακερματισμό (κατάσταση), προσθέτουν το επόμενο μπλοκ δεδομένων και το κατακερματίζουν.

Τότε, φανταστείτε ότι το μυστικό είναι "secret" και τα δεδομένα είναι "data", το MD5 του "secretdata" είναι 6036708eba0d11f6ef52ad44e8b74d5b. Αν ένας επιτιθέμενος θέλει να προσθέσει τη συμβολοσειρά "append" μπορεί να:

  • Δημιουργήσει ένα MD5 από 64 "A"s

  • Αλλάξει την κατάσταση του προηγουμένως αρχικοποιημένου κατακερματισμού σε 6036708eba0d11f6ef52ad44e8b74d5b

  • Προσθέσει τη συμβολοσειρά "append"

  • Ολοκληρώσει τον κατακερματισμό και ο προκύπτων κατακερματισμός θα είναι έγκυρος για "secret" + "data" + "padding" + "append"

Tool

References

Μπορείτε να βρείτε αυτή την επίθεση καλά εξηγημένη στο https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

Support HackTricks

Last updated