View Full Version : FLASH - Sicherheitslücke in IBM i DB2 - schnell mal PTF laden
holgerscherer
13-03-24, 22:48
es ist mal wieder Zeit für eine kritische (und peinliche) Sicherheitslücke.
Dringend V7R2 - V7R5 mit PTF versorgen!
https://www.ibm.com/support/pages/node/7140499?myns=swgother&mynp=OCSS9QQS&mync=E&cm_sp=swgother-_-OCSS9QQS-_-E
Andreas_Prouza
14-03-24, 04:57
Danke für den Hinweis Holger!
Und was wird mit diesem PTF dann behoben?
Z.B. wird eine Prozedur/Funktion entwickelt, die mit OWNER-Privileg in eine Lib erstellt wird, die durch die System-LIBL an den Anfang eines Jobs gestellt wird.
Da nun die wenigsten im RPG mit Naming=*SQL (unqualifizierte Zugriffe mit Lib "USERNAME") sondern mit NAMING=*SYS (unqualifizierte Zugriffe per LIBL) arbeiten, kann diese Prozedur von jedem User aufgerufen werden und sie tut was sie soll.
Wenn dies nun mit dem PTF nicht mehr möglich ist, stehen viele Anwendungen plötzlich vor einem Problem.
Aus der Beschreibung zum PTF werde ich nicht schlau, was a) das Problem ist und b) was behoben wird.
Vielleicht ist bisher ein Mittelsmannangriff möglich!?
Jedes Programm kann, wenn man die Berechtigung dazu hat, ausgetauscht werden um was anderes zu tun, als man ursprünglich geplant hat.
Dies macht man auch z.B. bei sog. Wrapperprogrammen, die in einem ERP ohne Quellen aufgerufen werden um vorher und/oder hinterher Zusatzfunktionen durchzuführen.
Wenn man die Quellen hätte, bräuchte man dies nicht, da man dort die passenden Änderungen durchführt.
Dies geht i.Ü. auch so mit Triggern, die man einfach einsetzt um Daten zu manipulieren oder zusätzliche Aktionen durchzuführen.
Dabei ist es auch legitim, Programme unter OWNER laufen zu lassen.
Manche propagierten Sicherheitslücken treten ja nur auf, wenn jemand mit hoher Berechtigung die Möglichkeit bekommt, ins System eingreifen zu können.
Deshalb möchte ich halt wissen, was mit dem PTF verhindert werden soll.
Vielleicht kann man ein eigenes Programm ins System reinschmuggeln (durch CHGSYSLIBL) und dieses wird wenn es passend heißt mit Systemrechten aufgerufen!?
holgerscherer
15-03-24, 01:51
Und was wird mit diesem PTF dann behoben?
es geht um SQL-Functions, die (warum auch immer) teilweise eine API via CL aufrufen. Normalerweise qualifiziert in einer QSYS-Bibliothek. Was man wohl vergessen hat...
holgerscherer
15-03-24, 01:53
Jedes Programm kann, wenn man die Berechtigung dazu hat, ausgetauscht werden um was anderes zu tun, als man ursprünglich geplant hat.
Deshalb möchte ich halt wissen, was mit dem PTF verhindert werden soll.
man könnte ja auch in die Tiefen der einzelnen PTF gehen und selbst nachsehen.
Wenn Du natürlich im System rumfummelst, um dem ERP auf die Beine zu helfen, ist das Dein Problem.
Oder wenn jeder User *ALLOBJ hat, oder seclvl 40 oder niedriger im Einsatz ist.
Falsch machen kann man viel. Aber in dem Fall hat die IBM einen Bock eingebaut, den jeder *USER ausnutzen könnte.
Alles halb so wild!? Der Befehl CHGSYSLIBL wird mit öffentlicher Berechtigung *EXCLUDE ausgeliefert. Nur ein Benutzer mit der Sonderberechtigung *ALLOBJ und *SECADM kann den Systemwert QSYSLIBL ändern. Nur auf diese beiden Arten können eigene Programme vor Systemprogramme in QSYS gestellt und zuerst gefunden werden solange ein Systemprogramm eh nicht direkt über Adresse im SEPT aufgerufen wird.
Aber aus der PTF-Beschreibung werde ich halt nicht schlau, was denn genau verhindert werden soll.
Dass jeder User mit Sonderberechtigung *ALLOBJ eingerichtet ist, ist leider zu häufig die Regel.
Solange jedoch die User via ERP über Menü o.ä. keine Kommandozeile bekommen, und zumindest limmited User im Profil eingestellt ist, kann ich eben auch WRKSPLF aufrufen und mit der kurzen CMD-Line kann man keine Kommandos aufrufen.
Und was die SEPT angeht, so ist das eine Liste von fest eingestellten Programmadressen, die nicht geändert werden können. In Release 2.1 hatte ich das mal probiert und eine Adresse ausgetauscht. In der Folge mussten wir das System komplett neu installieren, da die SEPT nicht reparabel ist.
Wenn ich also QCMDEXC ersetzen will (wenn ich es könnte), also das Programm lösche und austausche, verbleibt in der SEPT entweder ein Pointer auf das Ursprungsobjekt oder auf einen verwaisten Pointer, was zum MCH-Fehler führt.
Was den CHGSYSLIBL angeht, so wird dieser auch gerne mit höherer Berechtigung aufgerufen um z.B. die entsprechende System-Sprachbibliothek je User individuell vorzuschalten.
Wenn ich das PTF lese, heißt dies nun, dass ich den SQL-CALL unqualifiziert nicht auf höher privelegierte Programme ausführen kann?