March 5, 20197 yr Der Cron Daemon hat mir eine eMail mit folgender Meldung geschickt: PHP Fatal error: Uncaught exception 'Exception' with message 'Invalid ticket id' in /var/www/froxlor/lib/classes/ticket/class.ticket.php:137 Stack trace: #0 /var/www/froxlor/lib/classes/ticket/class.ticket.php(70): ticket->readData() #1 /var/www/froxlor/lib/classes/ticket/class.ticket.php(84): ticket->__construct(NULL, 1) #2 /var/www/froxlor/scripts/jobs/cron_ticketarchive.php(39): ticket::getInstanceOf(NULL, 1) #3 /var/www/froxlor/scripts/froxlor_master_cronjob.php(80): require_once('/var/www/froxlo...') #4 {main} thrown in /var/www/froxlor/lib/classes/ticket/class.ticket.php on line 137 Bei solch einer Meldung läuten bei mir sofort die Alarmglocken. So wie es aussieht ist die Sache bereits bekannt als "CVE-2018-12642" und ist auch schon die lösung für das Problem fertig. (https://www.openwall.com/lists/oss-security/2018/09/19/7) Höchste Zeit das sie im Update veröffentlicht wird, da nun wohl bots aktiv Froxlor-Seiten danach abklappern.
March 5, 20197 yr Ehm...das Problem was du im.cron hast ist ein ganz anderes als in dem CVE, es gibt ja schon 0.9.40.1 . Das jetzt ist ein reines Problem beim archivieren von Tickets via cronjob, wurde im git schon vor längerem gefixed
March 5, 20197 yr Author OK, habe jetzt auch diesen Thread gefunden: https://github.com/Froxlor/Froxlor/issues/656 Scheint also etwas anderes los zu sein. Was mich allerdings wundert: Wieso kommt diese Fehlermeldung plötzlich? Das Ticketsystem hat bei mir noch keiner Verwendet. Vor einiger Zeit habe ich dort mal ein kurzes Selbstgespräch geführt, um zu testen ob und wie das funktioniert. Seit dem ist dort nichts mehr passiert. Von aussen kann der Cronjob nicht aufgerufen werden, oder?
March 5, 20197 yr Author Ooh, sorry für die Fehlinformation, habe jetzt gesehen das die mail schon öfters kam, immer am ersten des Monats. Dann ists wohl harmlos.
March 5, 20197 yr Also falls du es für dich fixen willst (denn für 0.10.0 wird es das nicht mehr geben): Das Problem: https://github.com/Froxlor/Froxlor/blob/0.9.x/scripts/jobs/cron_ticketarchive.php#L39 Lösung: diff --git a/scripts/jobs/cron_ticketarchive.php b/scripts/jobs/cron_ticketarchive.php index 8febe3ad..f5a32cb8 100644 --- a/scripts/jobs/cron_ticketarchive.php +++ b/scripts/jobs/cron_ticketarchive.php @@ -27,6 +27,13 @@ $result_tickets_stmt = Database::query(" ); $archiving_count = 0; +// get admin user data to use as userinfo for ticket::getInstanceOf() +$admin_sel_stmt = Database::prepare(" + SELECT * FROM `" . TABLE_PANEL_ADMINS . "` + WHERE `adminid` = '1' +"); +$admin_userdata = Database::pexecute_first($admin_sel_stmt); + while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) { $lastchange = $row_ticket['lastchange']; @@ -36,7 +43,7 @@ while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) { if ($days >= Settings::Get('ticket.archiving_days')) { $cronlog->logAction(CRON_ACTION, LOG_INFO, 'archiving ticket "' . $row_ticket['subject'] . '" (ID #' . $row_ticket['id'] . ')'); - $mainticket = ticket::getInstanceOf(null, (int)$row_ticket['id']); + $mainticket = ticket::getInstanceOf($admin_userdata, (int)$row_ticket['id']); $mainticket->Set('lastchange', $now, true, true); $mainticket->Set('lastreplier', '1', true, true); $mainticket->Set('status', '3', true, true); @@ -46,6 +53,8 @@ while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) { } } +unset($admin_userdata); + $cronlog->logAction(CRON_ACTION, LOG_INFO, 'Archived ' . $archiving_count . ' tickets'); Database::query(" UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = UNIX_TIMESTAMP()
Archived
This topic is now archived and is closed to further replies.