Sicherheitsprobleme mit der Sendmail.php ??? Shopware 4.36

Ich habe soeben eine Nachricht von meinen Webhoster bekommen, dass die Sendmail.php nicht sicher ist. Meine Logdatei ist Aktuell 4 MB groß ich habe deshalb das Anfrageformular und die Bewertungsfunktion abschalten müssen. Hier der Wortlaut [quote] Bitte überprüfen Sie die auf Ihrem Account verwendeten Scripte, da diese durch eine Sicherheitslücke für den Spamversand missbraucht wurden. Wir empfehlen Ihnen in diesem Fall auf eine aktuellere (sicherere) Version zu updaten. Das verdächtige Script ist: /engine/Library/Zend/Mail/Transport/Sendmail.php Nehmen Sie bitte in einer Antwort auf diese E-Mail unbedingt zeitnah mit uns Kontakt auf, damit wir dieses Ticket schließen können und nennen Sie uns bitte die von Ihnen durchgeführten Maßnahmen zur Sicherung Ihres Webspace, damit sich ein solcher Vorfall nicht wiederholt. Bei Fragen oder Anliegen stehen wir Ihnen jederzeit gern zur Verfügung. Mit freundlichen Grüßen Jens Lehmann Supportteam [/quote] Nun meine Frage gibt es in dem Script eine Sicherheitsschwachstelle. Wenn ja gibt es ein Update für diese Datei. Ich lasse mir „Error in Shop „ Meldungen via E-Mail zusenden. Die häufen sich natürlich jetzt massiv aufgrund der Abgeschalteten Formulare und Bewertungsfunktionen. Kann man sich die IP Adressen welche diese Fehlermeldungen verursachen mitsenden lassen. So könnte ich die IP’s zumindest erstmal sperren

Hi, bei der genannten Datei handelt es sich um eine Standard-Datei aus dem Zend Framework. Darüber wird in jeder Shopware der Mailversand durchgeführt. Es kann jetzt natürlich sein, dass irgendwelche Bots bei dir Formulare genutzt haben zum Versand oder das du aufgrund der Error-Mails nur aufgefallen bist beim Hoster. Evtl. verschickt das System bei dir sehr viele Mails. Man bräuchte daher schon den Aufbau einer solchen eMail, die verschickt wurde. Daran erkennt man dann erst, worum es sich handelt und welche Funktion aus Shopware, wenn überhaupt Shopware, dafür genutzt wurde. Die genannte Datei ist auf jeden Fall eine reguläre Framework Datei, welche für den Versand zuständig ist. Sebastian PS: Die Error Mails würde ich an deiner Stelle erstmal abstellen. Es gibt in Shopware ja speziell den Logs-Ordner, wo du die Meldungen auch einsehen kannst.

Klar hier die Fehlermeldungen exception 'Zend\_Mail\_Transport\_Exception' with message 'Unable to send mail. ' in /www/htdocs/w00df00001/engine/Library/Zend/Mail/Transport/Sendmail.php:137 Stack trace: #0 /www/htdocs/w00df00001/engine/Library/Zend/Mail/Transport/Abstract.php(348): Zend\_Mail\_Transport\_Sendmail-\>\_sendMail() #1 /www/htdocs/w00df00001/engine/Library/Zend/Mail.php(1194): Zend\_Mail\_Transport\_Abstract-\>send(Object(Enlight\_Components\_Mail)) #2 /www/htdocs/w00df00001/engine/Library/Enlight/Components/Mail.php(332): Zend\_Mail-\>send(NULL) #3 /www/htdocs/w00df00001/engine/Shopware/Controllers/Frontend/Detail.php(213): Enlight\_Components\_Mail-\>send() #4 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Frontend\_Detail-\>ratingAction() #5 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Dispatcher/Default.php(528): Enlight\_Controller\_Action-\>dispatch('ratingAction') #6 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Front.php(228): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp)) #7 /www/htdocs/w00df00001/engine/Shopware/Kernel.php(145): Enlight\_Controller\_Front-\>dispatch() #8 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(471): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #9 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(256): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #10 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(242): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true) #11 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(259): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>pass(Object(Symfony\Component\HttpFoundation\Request), true) #12 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(132): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #13 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(188): Shopware\Components\HttpCache\AppCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #14 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #15 /www/htdocs/w00df00001/shopware.php(109): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request)) #16 {main} Time: 2015-05-19T12:21:10.968950+0200 Channel: core request: { "uri": "/pyramidennieten-zum-aufbuegeln-oder-aufkleben-silber-7-mm?sAction=rating", "method": "POST", "query": { "sAction": "rating", "rewriteUrl": "1", "sViewport": "detail", "sArticle": "56", "controller": "detail", "action": "rating" }, "post": { "sVoteName": "Efebdevout", "sVoteStars": "2", "sVoteSummary": "xTV6lfkf", "sVoteComment": "Thanks alot - your answer solved all my problems after several days stuggrling", "sVoteMail": "vni8vxt0a@gmail.com", "sCaptcha": "4ad2a", "sRand": "dd946cb8898648a3e42a86a01bba905a" } } session: { "sessionId": "aa330e19b8cadf7c89ffed9b7cc26906cd7b232e", "Bot": false, "sOutputNet": false, "sArea": null, "sCountry": null, "sState": null, "sUserId": null } shopId: 1 shopName: Hauptshop Deutsch und massiv davon exception 'PDOException' with message 'SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction' in /www/htdocs/w00df00001/engine/Library/Zend/Db/Statement/Pdo.php:228 Stack trace: #0 /www/htdocs/w00df00001/engine/Library/Zend/Db/Statement/Pdo.php(228): PDOStatement-\>execute(Array) #1 /www/htdocs/w00df00001/engine/Library/Zend/Db/Statement.php(303): Zend\_Db\_Statement\_Pdo-\>\_execute(Array) #2 /www/htdocs/w00df00001/engine/Library/Zend/Db/Adapter/Abstract.php(480): Zend\_Db\_Statement-\>execute(Array) #3 /www/htdocs/w00df00001/engine/Library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend\_Db\_Adapter\_Abstract-\>query('\n DE...', Array) #4 /www/htdocs/w00df00001/engine/Library/Enlight/Components/Db/Adapter/Pdo/Mysql.php(75): Zend\_Db\_Adapter\_Pdo\_Abstract-\>query('\n DE...', Array) #5 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(1387): Enlight\_Components\_Db\_Adapter\_Pdo\_Mysql-\>query('\n DE...') #6 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(1264): Shopware\_Components\_Search\_Adapter\_Default-\>cleanupKeywords() #7 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(374): Shopware\_Components\_Search\_Adapter\_Default-\>buildSearchIndex() #8 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(273): Shopware\_Components\_Search\_Adapter\_Default-\>validateCache(Object(Shopware\_Components\_Config)) #9 /www/htdocs/w00df00001/engine/Shopware/Controllers/Frontend/AjaxSearch.php(77): Shopware\_Components\_Search\_Adapter\_Default-\>\_\_construct(Object(Enlight\_Components\_Db\_Adapter\_Pdo\_Mysql), Object(Zend\_Cache\_Core), Object(Shopware\_Components\_Search\_Result\_Default), Object(Shopware\_Components\_Config)) #10 /www/htdocs/w00df00001/engine/Shopware/Controllers/Frontend/AjaxSearch.php(61): Shopware\_Controllers\_Frontend\_AjaxSearch-\>doSearch('buc') #11 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Frontend\_AjaxSearch-\>indexAction() #12 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Dispatcher/Default.php(528): Enlight\_Controller\_Action-\>dispatch('indexAction') #13 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Front.php(228): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp)) #14 /www/htdocs/w00df00001/engine/Shopware/Kernel.php(145): Enlight\_Controller\_Front-\>dispatch() #15 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(471): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #16 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(256): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #17 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(428): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true) #18 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(328): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>fetch(Object(Symfony\Component\HttpFoundation\Request), true) #19 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(178): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>lookup(Object(Symfony\Component\HttpFoundation\Request), true) #20 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(192): Shopware\Components\HttpCache\AppCache-\>lookup(Object(Symfony\Component\HttpFoundation\Request), true) #21 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #22 /www/htdocs/w00df00001/shopware.php(109): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request)) #23 {main} Next exception 'Zend\_Db\_Statement\_Exception' with message 'SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction' in /www/htdocs/w00df00001/engine/Library/Zend/Db/Statement/Pdo.php:234 Stack trace: #0 /www/htdocs/w00df00001/engine/Library/Zend/Db/Statement.php(303): Zend\_Db\_Statement\_Pdo-\>\_execute(Array) #1 /www/htdocs/w00df00001/engine/Library/Zend/Db/Adapter/Abstract.php(480): Zend\_Db\_Statement-\>execute(Array) #2 /www/htdocs/w00df00001/engine/Library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend\_Db\_Adapter\_Abstract-\>query('\n DE...', Array) #3 /www/htdocs/w00df00001/engine/Library/Enlight/Components/Db/Adapter/Pdo/Mysql.php(75): Zend\_Db\_Adapter\_Pdo\_Abstract-\>query('\n DE...', Array) #4 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(1387): Enlight\_Components\_Db\_Adapter\_Pdo\_Mysql-\>query('\n DE...') #5 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(1264): Shopware\_Components\_Search\_Adapter\_Default-\>cleanupKeywords() #6 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(374): Shopware\_Components\_Search\_Adapter\_Default-\>buildSearchIndex() #7 /www/htdocs/w00df00001/engine/Shopware/Components/Search/Adapter/Default.php(273): Shopware\_Components\_Search\_Adapter\_Default-\>validateCache(Object(Shopware\_Components\_Config)) #8 /www/htdocs/w00df00001/engine/Shopware/Controllers/Frontend/AjaxSearch.php(77): Shopware\_Components\_Search\_Adapter\_Default-\>\_\_construct(Object(Enlight\_Components\_Db\_Adapter\_Pdo\_Mysql), Object(Zend\_Cache\_Core), Object(Shopware\_Components\_Search\_Result\_Default), Object(Shopware\_Components\_Config)) #9 /www/htdocs/w00df00001/engine/Shopware/Controllers/Frontend/AjaxSearch.php(61): Shopware\_Controllers\_Frontend\_AjaxSearch-\>doSearch('buc') #10 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Frontend\_AjaxSearch-\>indexAction() #11 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Dispatcher/Default.php(528): Enlight\_Controller\_Action-\>dispatch('indexAction') #12 /www/htdocs/w00df00001/engine/Library/Enlight/Controller/Front.php(228): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp)) #13 /www/htdocs/w00df00001/engine/Shopware/Kernel.php(145): Enlight\_Controller\_Front-\>dispatch() #14 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(471): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #15 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(256): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #16 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(428): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true) #17 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(328): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>fetch(Object(Symfony\Component\HttpFoundation\Request), true) #18 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(178): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>lookup(Object(Symfony\Component\HttpFoundation\Request), true) #19 /www/htdocs/w00df00001/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(192): Shopware\Components\HttpCache\AppCache-\>lookup(Object(Symfony\Component\HttpFoundation\Request), true) #20 /www/htdocs/w00df00001/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #21 /www/htdocs/w00df00001/shopware.php(109): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request)) #22 {main} Time: 2015-05-19T01:48:43.235873+0200 Channel: core request: { "uri": "/ajax\_search?callback=openAjaxSearchResults&sSearch=buc&\_=1431992911193", "method": "GET", "query": { "callback": "openAjaxSearchResults", "sSearch": "buc", "\_": "1431992911193", "controller": "ajax\_search" }, "post": [] } session: { "sessionId": "9f2f22b954a0b86c421fa366b23be01ab1f9b503", "Bot": false, "sOutputNet": false, "sArea": null, "sCountry": null, "sState": null, "sUserId": null } shopId: 1 shopName: Hauptshop Deutsch Ich habe das Reporting erstmal ausgeschaltet. Aber über eine Ip in den Logs wäre ich trotzdem dankbar, weil es sonst echt mühsam ist die access_log auszuwerten. Kann man die irgendwo einschalten oder einbauen.

Hallo, also die unteren Logs kommen regulär von der Suche. Da sind scheinbar defekte Werte drin, was den Ablauf der Suche stört. Das ist aber grundsätzlich erstmal ein ganz anderes Problem. Die erste Fehlermeldung kommt einfach davon, dass ein Bot es bei dir schafft, Bewertungen abzugeben. Das ist aber auch keinerlei Sicherheits-Bug in dem Sinne. Das kann ab und an schon mal vorkommen, dass verschiedene Bots z.B. den Captcha Schutz überwinden. Eigentlich müsste die Mail aber auch verschickt werden. Mich wundert, dass dort “Unable to send mail” kommt. Kannst du denn korrekt eine Bewertung abegeben und bekommst dann eine eMail? Ansonsten muss du prüfen wie der Bot heißt oder welche IP da durch kommt. Das geht dann leider nur über das Access Log beim Hoster Sebastian

Hi, es könnte natürlich auch sein, dass du so viele Fehler über die Suche erzeugt bekommst, dass die „Mail an Shopbetreiber bei Fehler“-Funktion schon die ganzen Mails verursacht. Du sagst, du hast das Reporting jetzt deaktiviert - sind denn vorher besonders viele Mails bei dir aufgeschlagen? Oder Bewertungen?` Gruß, Daniel

[quote=„Sebastian Klöpper“]Hallo, Eigentlich müsste die Mail aber auch verschickt werden. Mich wundert, dass dort „Unable to send mail“ kommt. Kannst du denn korrekt eine Bewertung abegeben und bekommst dann eine eMail? Ansonsten muss du prüfen wie der Bot heißt oder welche IP da durch kommt. Das geht dann leider nur über das Access Log beim Hoster Sebastian[/quote] Bewertungen Funktionieren tadellos, ich hatte bei den Bewertungen auch Double-Opt-in aktiviert. Die E-Mails sind immer angekommen und haben bis dato auch Funktioniert. Die Masse an Fehlermeldungen habe ich erst seit dem Angriff. Laut Hoster wurde wohl Schadcode über die Bewerten Funktion eingeschleust. Zudem sei der Captcha Schutz sehr simple und für den bot einfach auszulesen. Wie dem auch sei, ich hatte die Nase voll und habe die entsprechenden Länder wovon die Angriffe gestartet wurden jetzt einfach via GeoIPEnable in der .htaccess geblockt. Seitdem ist erstmal Ruhe. Ich bin zwar kein Freund von Ländersperren, aber momentan geht’s wohl erstmal nicht anders.