Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 69af5044

Von Moritz Bunkus vor fast 9 Jahren hinzugefügt

  • ID 69af50448452e9b292134bee25705a64505e8ff4
  • Vorgänger c157c911
  • Nachfolger 70654da2

Passwörter: Unterstützung für crypt, MD5 und SHA-1 entfernt

Diese Algorithmen gelten allesamt als unsicher.

Falls die Datenbank jemals in falsche Hände geraten sollte, so würden
zumindest die mit crypt und MD5 gehashten Passwörter schnell zu knacken
sein. Die mit SHA-1 gehashten dürften etwas länger dauern, aber auch sie
sind gefährdet. Daher werden sie in der Datenbank schlicht
entfernt. Admins müssen für solche Accounts neue Passwörter vergeben.

Dies sollte nur Accounts betreffen, deren Passwort sich seit der
Einführung von SHA256S als Mechanismus in kivitendo 2.7.0 Mitte 2011
nicht mehr geändert hat.

Unterschiede anzeigen:

SL/Auth/Password.pm
3 3
use strict;
4 4

  
5 5
use Carp;
6
use Digest::MD5 ();
7 6
use Digest::SHA ();
8 7
use Encode ();
9 8
use PBKDF2::Tiny ();
......
49 48
  if ($params{algorithm} =~ m/^SHA256/) {
50 49
    return '{' . $params{algorithm} . '}' . Digest::SHA::sha256_hex($salt . $params{password});
51 50

  
52
  } elsif ($params{algorithm} =~ m/^SHA1/) {
53
    return '{' . $params{algorithm} . '}' . Digest::SHA::sha1_hex($salt . $params{password});
54

  
55
  } elsif ($params{algorithm} =~ m/^MD5/) {
56
    return '{' . $params{algorithm} . '}' . Digest::MD5::md5_hex($salt . $params{password});
57

  
58
  } elsif ($params{algorithm} eq 'CRYPT') {
59
    return '{CRYPT}' . crypt($params{password}, substr($params{login}, 0, 2));
60

  
61 51
  } elsif ($params{algorithm} =~ m/^PBKDF2/) {
62 52
    return $class->hash_pkkdf2(password => $params{password}, stored_password => $params{stored_password});
63 53

  
......
86 76
  my ($class, $password, $default_algorithm) = @_;
87 77

  
88 78
  return ($1, $2) if $password =~ m/^\{ ([^\}]+) \} (.+)/x;
89
  return ($default_algorithm || 'CRYPT', $password);
79
  return ($default_algorithm || 'PBKDF2', $password);
90 80
}
91 81

  
92 82
1;
doc/UPGRADE
35 35
  noch existieren und verweigert den Start mit einer hilfreichen
36 36
  Fehlermeldung, solange sie noch vorhanden sind.
37 37

  
38
* Die Unterstützung unsicherer Passwort-Hashing-Mechanism wurde
39
  entfernt. Für BenutzerInnen, die noch alte Mechanismen verwenden,
40
  müssen die Passwörter einmalig in der Administrationsoberfläche
41
  zurückgesetzt werden.
42

  
43
  Dies betrifft nur Accounts, deren Passwort sich das letzte Mal vor
44
  kivitendo 2.7.0 geändert hat.
45

  
38 46
Upgrade auf v3.3.0
39 47
==================
40 48

  
doc/changelog
61 61
    und standardmäßig bei allen zukünftigen Passwortänderungen
62 62
    benutzt.
63 63

  
64
  - Die Unterstützung der unsicheren Passwort-Hashing-Mechanism crypt,
65
    MD5 und SHA-1 wurde entfernt, und entsprechend gehashte Passwörter
66
    wurden in der Datenbank entfernt. Für BenutzerInnen, die noch alte
67
    Mechanismen verwenden, müssen die Passwörter einmalig in der
68
    Administrationsoberfläche zurückgesetzt werden.
69

  
64 70
2015-08-20 - Release 3.3
65 71

  
66 72
Größere neue Features:
sql/Pg-upgrade2-auth/remove_insecurely_hashed_passwords.sql
1
-- @tag: remove_insecurely_hashed_passwords
2
-- @description: Passwörter löschen, die mit unsicheren Hash-Verfahren gehasht wurden
3
-- @depends: release_3_3_0
4
-- @charset: utf-8
5
UPDATE auth.user
6
SET password = '*'
7
WHERE (password IS NOT NULL)
8
  AND (password NOT LIKE '{PBKDF2%')
9
  AND (password NOT LIKE '{SHA256%');

Auch abrufbar als: Unified diff