Modify

Opened 8 weeks ago

Closed 7 weeks ago

#1622 closed Bug/Fehler (fixed)

Potentielle Sicherheitslücken in /includes/classes/shopping_cart.php

Reported by: web-looks <info@…> Owned by: somebody
Priority: hoch Milestone: modified-shop-2.0.5.0
Component: Sicherheit Version: 2.0.4.2

Description (last modified by Tomcraft)

Einige Variablen werden ungeprüft in Datenbankabfragen genutzt.

Suchen nach:

WHERE products_id = '".$products_id."'

Ersetzen mit:

WHERE products_id = '".xtc_get_prid($products_id)."'

Suchen nach (mehrfach):

'customers_id' => $_SESSION['customer_id']

Ersetzen mit:

'customers_id' => (int)$_SESSION['customer_id']

Suchen nach (mehrfach):

=> $qty

Ersetzen mit:

=> (int)$qty

Suchen nach:

xtc_db_input($qty)

Ersetzen mit:

(int)$qty

Attachments (0)

Change History (7)

comment:1 Changed 8 weeks ago by Tomcraft

  • Description modified (diff)
  • Milestone set to modified-shop-2.0.5.0

comment:2 Changed 7 weeks ago by anonymous

Sicher, daß die angegebene Datei stimmt ?
Ich finde nichts davon in /includes/classes/shopping_cart.php.

Gruß,
noRiddle

comment:3 Changed 7 weeks ago by Tomcraft

  • Description modified (diff)

comment:4 Changed 7 weeks ago by Tomcraft

Ja die Datei stimmt. Er hatte nur SESSION! anstatt SESSION geschrieben, daher hast du vermutlich zumindest den Teil nicht gefunden. Alle anderen Teile finde ich in besagter Datei in Shopversion 2.0.4.2

comment:5 Changed 7 weeks ago by anonymous

Ich nehme meine Aussage zurück.
web-looks hat aus Versehen $_SESSION['customer_id'] (Zeichen ! nach $_SESSION) geschrieben und ich hatte es kopiert für die Suche im File.

Trotzdem folgende Stellungnahme zu den einzelnen Aussagen:

WHERE products_id = '".$products_id."'"

kommt einmal vor und darf nicht mit

WHERE products_id = '".xtc_get_prid($products_id)."'

ersetzt werden, denn es geht dabei um den Array-Key im Array $_SESSION[cart], welcher definitiv ein INT ist.
Wenn man unbedingt will kann man dort mit (int) casten.

Was folgendes betrifft:

$_SESSION['customer_id']

An zwei Stellen wird nicht mit (int) gecastet.
Dabei handelt es sich allerdings um Array-Element-Zuweisungen und durch das anschließende xtc_db_perform() wird durch genannte Funktion automatisch ein xtc_db_input() ausgeführt. Das ist also keine Sicherheitslücke. Man kann natürlich auch hier sicherheitshalber mit (int) casten.

Was dies betrifft:

=> $qty

kommt genau zweimal vor und es gilt hier dasselbe wie bei dem vorhergehenden Fall.
Auch hier handelt es sich um Array-Element-Zuweisungen und durch das anschließende xtc_db_perform() wird durch genannte Funktion automatisch ein xtc_db_input() ausgeführt. Das ist also keine Sicherheitslücke. Man kann natürlich auch hier sicherheitshalber mit (int) casten.

Gruß,
noRiddle

comment:6 Changed 7 weeks ago by anonymous

Nochmal Korrektur, ich Hirni, :ächz:
Dies

WHERE products_id = '".$products_id."'"

in das zu ändern

WHERE products_id = '".xtc_get_prid($products_id)."'

ist doch in der Tat richtig und ein Bug, nicht wirklich eine Sicherheitslücke, es sei denn die Session wäre maipulierbar.

Sorry, für die Verwirrung.

Gruß,
noRiddle

comment:7 Changed 7 weeks ago by GTB

  • Resolution set to fixed
  • Status changed from new to closed

In 11826:

fix #1622

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.