Als Perl 5.8.1 herauskam, fügte es Hash-Randomisierung . Als Perl 5.8.2 herauskam, dachte ich, es entfernte Hash-Randomisierung, wenn keine Umgebungsvariable ( PERL_HASH_SEED
) vorhanden war. Es scheint jetzt so, als würde ich mich schwer irren wie
Startet immer die gleiche Tastenfolge unabhängig vom Wert von $SEED
.
Ist die Hash-Randomisierung komplett verschwunden, mache ich etwas falsch oder ist das ein Fehler?
Siehe Algorithmische Komplexitätsangriffe :
In Perl 5.8.1 wird die Hash-Funktion zufällig durch einen Pseudozufalls-Seed gestört, was das Erzeugen solcher unartiger Hash-Schlüssel erschwert. [...] aber ab 5.8.2 wird es nur bei einzelnen Hashes verwendet, wenn die Interna die Einfügung pathologischer Daten erkennen .
Randomisierung findet also nicht immer statt, nur wenn Perl erkennt, dass sie benötigt wird.
Es gab zumindest einige schlampige Dokumentationsaktualisierungen. Im dritten Abschnitt von perlrun wird der Eintrag für PERL_HASH_SEED
angezeigt:
Das Standardverhalten ist Randomisieren, wenn nicht
PERL_HASH_SEED
festgelegt ist.
was in 5.8.1 nur war und widerspricht dem unmittelbar vorhergehenden Absatz:
Die meisten Hashes geben die Elemente standardmäßig in der gleichen Reihenfolge wie in Perl 5.8.0 zurück. Wenn auf einer Hash-nach-Hash-Basis während einer Hash-Schlüsseleinfügung pathologische Daten erkannt werden, wechselt dieser Hashwert zu einem alternativen Zufalls-Hash-Seed.
perlsec wird für Algorithmic Complexity Attacks eingetragen rechts:
In Perl 5.8.1 wurde die zufällige Störung standardmäßig vorgenommen, aber ab 5.8.2 es wird nur für einzelne Hashes verwendet, wenn die Interna das Einfügen von pathologischen Daten.
perlsec fährt fort zu sagen
Wenn man aus irgendeinem Grund das alte Verhalten emulieren möchte, [...] setzen Sie das Umgebungsvariable
PERL_HASH_SEED
auf Null, um die Schutz ( oder eine andere ganze Zahl, um eine bekannte Störung zu erzwingen, ) als zufällig).
[Hervorhebung hinzugefügt]
Da die Einstellung von PERL_HASH_SEED
nicht die Hash-Reihenfolge beeinflusst, würde ich es als Fehler bezeichnen. Die Suche nach "PERL_HASH_SEED" auf rt.perl.org ergab keine Ergebnisse, daher scheint es kein "bekanntes" Problem zu sein.