Magento wydało łatkę bezpieczeństwa SUPEE-9652dla Magento 1.x CE i EE
Chcę tylko wiedzieć, jakie są możliwe problemy po zastosowaniu tej poprawki zabezpieczeń i jakie są nowe zmiany w tej poprawce bezpieczeństwa?
Magento wydało łatkę bezpieczeństwa SUPEE-9652dla Magento 1.x CE i EE
Chcę tylko wiedzieć, jakie są możliwe problemy po zastosowaniu tej poprawki zabezpieczeń i jakie są nowe zmiany w tej poprawce bezpieczeństwa?
Odpowiedzi:
To bardzo mała łatka, oto różnica:
diff --git lib/Zend/Mail/Transport/Sendmail.php lib/Zend/Mail/Transport/Sendmail.php
index b24026b..9323f58 100644
--- lib/Zend/Mail/Transport/Sendmail.php
+++ lib/Zend/Mail/Transport/Sendmail.php
@@ -119,14 +119,19 @@ class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
);
}
- set_error_handler(array($this, '_handleMailErrors'));
- $result = mail(
- $this->recipients,
- $this->_mail->getSubject(),
- $this->body,
- $this->header,
- $this->parameters);
- restore_error_handler();
+ // Sanitize the From header
+ if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
+ throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
+ } else {
+ set_error_handler(array($this, '_handleMailErrors'));
+ $result = mail(
+ $this->recipients,
+ $this->_mail->getSubject(),
+ $this->body,
+ $this->header,
+ $this->parameters);
+ restore_error_handler();
+ }
}
if ($this->_errstr !== null || !$result) {
Wydaje się jednak, że Peter O'Callaghan (jedyny) znalazł błąd. Delikatnie udostępnił mi szczegóły i powiedział, że mogę się z tobą tutaj podzielić, więc oto :
Najlepszy, co mogę powiedzieć, wartość
$this->paramszawsze będzie miała prefiks-fw miejscu dodania sprawdzania poprawności (jest przekazywana do konstruktora w miejscu dodawania ścieżki zwrotnej). Dlatego w momencie, gdy jest on przekazywany do sprawdzania poprawności, jeśli skonfigurowałem swój adres e-mailcontact@me.com, wartość, która jest faktycznie sprawdzana-fcontact@me.com, wydaje się bardziej fartem niż intencją, że dzieje się tak, aby sprawdzić poprawność jako adres e-mail. Jeśli mój adres e-mail"example"@example.combyłby-f"example"@example.com, stałby się , co nie będzie poprawny. Nawiasem mówiąc,str_replacewydaje się to całkowicie zbędne w tej kwestii, biorąc pod uwagę, że AFAIK spacji można używać tylko w połączeniu z cytatami, a wiadomości e-mail z cytatami nie będą sprawdzane z-fprefiks. W rzeczywistości, jeśli nie było dla przedrostek będąc tam, str_replace i validate nie byłoby użyteczne, ponieważ"foo bar"@example.comi"foobar"@example.comzarówno validate, ponieważ ten ostatni nie jest przypisany do niczego po wymianie, e-mail nadal będzie wysyłana przy użyciu byłej wartość, która prawdopodobnie nadal byłaby wrażliwa.
Dwie inne rzeczy, o których należy pamiętać:
app/etc/applied.patches.listco wydaje się nieco dziwne. (źródło: https://twitter.com/JohnHughes1984/status/829050203139358720 )Odpowiednia nowa wersja Magento CE 1.9.3.2 zawiera również aktualizację z komentarzem dotyczącym praw autorskich (od 2016 do 2017 r.), Więc prawie wszystkie pliki Magento zostały zaktualizowane, a różnica wygląda na ogromną
"example"@example.comAdresy, niezależnie od tego, czy są technicznie niebezpieczne. Byłbym bardzo zaskoczony, jeśli istnieją jakieś legalne sklepy korzystające z tego rodzaju wiadomości e-mail, ale chciałem, aby informacje były dostępne na wszelki wypadek.
Mała wskazówka dotycząca aktualizacji; po skopiowaniu nowej wersji do istniejącej instalacji, uruchom, git diff -w --stat=400 | grep -v " 2 +”aby szybko zobaczyć różnice, które zawierają więcej zmian niż tylko zmiana informacji o prawach autorskich.
Poprawka zabezpieczeń 9652 dotyczy tylko następującego pliku:
/lib/Zend/Mail/Transport/Sendmail.php
Dla tych, którzy zastanawiają się, co zrobić bez dostępu do SSH: edytuj plik /lib/Zend/Mail/Transport/Sendmail.php
począwszy od linii 122, zastąp to:
set_error_handler(array($this, '_handleMailErrors'));
$result = mail(
$this->recipients,
$this->_mail->getSubject(),
$this->body,
$this->header,
$this->parameters);
restore_error_handler();
z tym:
// Sanitize the From header
if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
} else {
set_error_handler(array($this, '_handleMailErrors'));
$result = mail(
$this->recipients,
$this->_mail->getSubject(),
$this->body,
$this->header,
$this->parameters);
restore_error_handler();
}