Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

15. September 2009 um 18:34

Merkmale des "SQL Servers 2008 Express with advanced services"

Gestern suchte ich heraus, ob sich an der Liste der Features des "SQL Servers 2008 Express with advanced services" etwas gegenüber der Version 2005 geändert hat. Natürlich kommen alle neuen Features des 2005er Express hinzu, aber mir geht es um die "erweiterten Dienste". Und da bleibt offenbar alles wie es ist.

Die erweiterten Dienste kann man in der Übersicht gut an dem Sternchen in der Spalte "Express" erkennen. Sie bietet als Mehrwert gegenüber der normalen Express-Edition folgende Features:

  • enthält eine abgespeckte Fulltext-Engine: Suche in gespeicherten Texten ist möglich
  • enthält einen abgespeckten Reporting Service: Reports auf lokale Daten sind möglich, Report-Manager und Report-Desiger sind enthalten
  • enthält eine abgespeckte Version des Verwaltungswerkzeuges: "SQL Server Management Studio Express". Hier wurde einige Dinge eingespart die für Entwickler relevant sind, wie bspw. die Projektverwaltung und Berichte

Andere spannende Dinge, wie der Profiler, Integration-Services, SQL Server Agent oder Database Mail sind weiterhin nicht in den kostenlosen Editionen enthalten. Dazu muss man weiterhin eine höhere Edition erwerben.

11. September 2009 um 20:17

Sentrigo veröffentlicht Sicherheitsproblem des SQL-Servers (Update)

Frisch aus dem Urlaub zurück überraschte mich bei Heise die Nachricht, dass eine mir bisher unbekannte Firma ein Sicherheitsproblem am Microsoft SQL-Server entdeckt und veröffentlicht habe. Sie meldeten das Problem Ende 2008 an Microsoft und die signalisierten, dass das aus deren Sicht keine relevante Lücke sei und nicht behoben wird. Sentrigo schrieb daraufhin ein Tool, dass diese Lücke ausnutzt um sie zu beheben. Dazu muss man das Tool aber regelmäßig immer wieder aufrufen. Erst heute kam ich dazu mal die Hintergründe zu recherchieren.

Welche Tragweite hat das Problem?
Hat jemand Windows-Admin-Rechte an dem Computer auf dem der SQL-Server läuft, dann kann der Windows-Admin die Passwörter der angemeldeten Benutzer im Klartext lesen, weil sie in einer internen Tabelle pro Datenbank-Verbindung gespeichert werden. Das betrifft alle aktuellen Systeme: SQL Server 2000, SQL Server 2005 und SQL Server 2008 (die Betas von R2 daher vermutlich auch).

Während in der Login-Tabelle nur der Hash des Passwortes gespeichert ist, werden die Informationen zu angemeldeten Benutzern unverschlüsselt im Hauptspeicher gehalten. Ein Administrator kann nun mit geeigneten Werkzeugen, z.B. OllyDbg, den Hauptspeicher nach den Passwörtern durchsuchen. Sentrigo hat nun das kostenlose Werkzeug Passwordizer gebaut, dass diese Passwörter findet und mit Schrott überschreibt. Hier ein Beispiel:

C:\WINDOWS>E:\temp\Passwordizer\passwordizer\x86\passwordizer.exe 2212
Process is 32bit
DATA section found at 27cf000
Exe name is C:\Programme\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe
MSSQL Server version is 90000 10820000
Scanning for sessions table (Can take up to several minutes)
Session table found at 27e6fe8
Getting user passwords for MSSQL Server 2005
Session id: 51
Username: sa
Password: k******9
Password cleared from memory

Sentrigo Passwordizer process completed successfully
1 passwords removed from memory

Im Output steht eigentlich alles was man wissen muss, insbesondere die Adresse an der die Informationen gefunden werden können. Natürlich ist die bei jedem Start anders, aber damit kann man sich das Problem mal aus der nächsten Nähe ansehen, weil man ja jetzt genau weiß wo man suchen muss.

Aber auch remote kann man die Passwörter lesen, wenn man am SQL-Server SysAdmin-Rechte hat. Das geht aber nur am SQL-Server 2000 und 2005, ab 2008er wurde laut Heise.de der dazu nötige DBCC-Befehl aus anderen Gründen entfernt. Im Securosis Blog verrät ein Sentrigo-Mitarbeiter, dass man "DBCC BYTES" dazu verwenden kann. Das ist aber kein großes Geheimnis, denn nur DBCC Bytes ist im SQL Server 2008 nicht mehr vorhanden, alle anderen gibt es dort weiterhin.

Meine Einschätzung: Ich sehe keine realistische Gefahr für die SQL-Server-Kunden, aber Microsoft hat einen peinlichen PR-Gau erlebt.

Warum? Die Sicherheitslücke ist schon sehr exotisch. Man muss schon zuerst mal Windows-Admin oder wenigstens SQL-Server-SysAdmin sein, um die Lücke ausnutzen zu können. Und dann sieht man nur die Passwörter derjenigen die sich aktuell über SQL-Authentifizierung angemeldet haben. Wenn man die von Microsoft empfohlene Windows-Authentifizierung verwendet, sieht man gar nichts. Was kann der Windows-Admin, der immer auch zugleich SysAdmin ist, mit den SQL-Server-Passwörtern anfangen? Gute Frage. Er darf alles tun, was er ohnehin schon als SysAdmin darf: sich als dieser Benutzer ausgeben und am SQL-Server Dinge in dessen Namen tun.

Die Gefahr besteht also lediglich darin, dass der Anwender SQL-Authentifizierung nutzt und das gleiche Passwort auch für sein Online-Banking, E-Bay oder dergleichen verwendet. Das könnte ein krimineller Windows-Admininistrator mal ausprobieren und ggf. dann tun was er möchte. Die Lücke ist in meinen Augen eher eine Kleinigkeit, da Administratoren auch auf viel einfachere Weise die Passwörter Ihrer Kollegen ausspähen könnten. Dennoch ist es natürlich eine Lücke und eine peinliche noch dazu.

Aber für die bisher weitgehend unbekannte Firma Sentrigo war das der PR-Boost schlechthin. Sie haben Microsoft so richtig vorgeführt, weil Microsoft danach schrie. Natürlich hätte Microsoft das ernst nehmen müssen. Man speichert einfach keine Passwörter im Klartext. Warum auch? Ich habe keine Ahnung wie aufwändig die Behebung gewesen wäre, aber da nun mal alle Mitarbeiter mit dem R2 beschäftigt waren, blieb für solche Dinge wohl keine Zeit mehr. Und damit hat sich Microsoft so richtig blamiert.

Vermutlich werden sie es nun doch beheben müssen, sonst müssen sie sich immer vorwerfen lassen, dass sie eine nicht behobene Sicherheitslücke haben. Und diese Diskussionen mag doch keine Firma gerne… 😉

Update 16.9.2009:

  • Ja, es geht mittels DBCC BYTES, das wurde schon im Frühjahr im Vortrag "SQL SERVER Anti-Forensics" von Cesar Cerrudo (Folie 18) veröffentlicht.
  • Heute bekam ich eine Mail von Firma Sentrigo, die sich für den Download des Tools "Passwordizer" bedankte und fragte an welchen Lösungen von ihnen ich denn Interesse hätte. Hallo? Am Passwordizer natürlich. Ich bereue bei der Angabe der persönlichen Daten ehrlich gewesen zu sein…
9. September 2009 um 23:15

5 Jahr SQL-Pass: Jubelfeier in Nürnberg mit Infos zum SQL Server 2008 R2

SQL-PASS
Alle Interessierten sind zu unserem Jubiläumstreffen "5 Jahre PASS Deutschland" zur Regionalgruppe Franken am Dienstag, den 15.09.2009 um 18:30 Uhr, eingeladen.

Der PASS Deutschland e.V. wurde am 31.08.2004 gegründet und feiert deshalb im August/September 2009 in allen Regionen das fünfjährige Bestehen. Zu diesem Jubiläum sind in allen Regionen Treffen der Regionalgruppen mit besonderem Inhalt geplant:

SQL Server 2008 R2: Self Service BI, SQL Server Data Warehouse Scale Out und weitere Neuheiten. Referent ist Oliver Goletz, Microsoft. Hier die offizielle Info zu dem Vortrag:

In der ersten Hälfte 2010 wird Microsoft basierend auf der SQL Server Technologie die Basis für eine Scale-out SQL Server Lösung für sehr große DWH liefern. Das derzeit unter dem Codenamen Madison bekannte Produkt basiert auf der MPP-Technologie (Massively Parallel Processing), die von DATAllegro entwickelt und von Microsoft erworben wurde. Mit dieser Technologie, die sich schon im Praxiseinsatz bewährt hat, werden DWH im Bereich von mehreren 100 TB möglich sein.

Im Bereich Business Intelligence wird mit dem Produkt Gemini ein In-Memory Online Analytic Processing (OLAP) Client integriert, der "Self Service BI" durch Datenanalyse in großem Umfang und die Datenmodellierung in Excel auf Basis verschiedenster Datenquellen in der Office Plattform ermöglicht.

Oliver Goletz hat nach seinem Studium der Wirtschaftsinformatik in Köln sechs Jahre bei einem Microsoft Gold Partner SQL- und BI-Projekte durchgeführt. Danach arbeitete er anderthalb Jahre als Projektmanager für die Siemens AG in Schanghai und Beijing. Seit zwei Jahren ist er als Technologieberater für Großkunden im Bereich SQL und BI bei Microsoft Deutschland tätig. In dieser Rolle führt er regelmäßig Kundenveranstaltungen und EBCs sowie Deep-Dive SQL-Partnertrainings durch.

Wir treffen uns diesmal in einem größeren Rahmen, in den Konferenzräumen des Eurocom Centers, Lina-Ammon-Str. 19 (Erdgeschoss) in Nürnberg. Das liegt verkehrsgünstig direkt an der U-Bahn-Station Scharfreiterring.

Und wie jedes Mal so ist auch diesmal der Eintritt frei, auch Nicht-Mitglieder sind herzlich eingeladen. Bitte dennoch bei Klaus Oberdalhoff unter kob(ät)sqlpass.de anmelden, damit er weiß, wie viele Stühle ungefähr benötigt werden.

1. September 2009 um 18:14

SQL-Injection für Fortgeschrittene

In dem Artikel "Advanced SQL Injection In SQL Server Applications" beschreibt Chris Anley (NGSSoftware) sehr ausführlich wie SQL-Injection am SQL-Server funktioniert. Darin findet man problemlos die Anleitung wie man vorgehen muss, um einen SQL-Server mit dieser Lücke zu übernehmen. Natürlich geht er vom schlimmsten Fall aus, dass nämlich die Anwendung Admin-Rechte am SQL-Server hat, aber das ist ja auch nicht ganz unrealistisch.

Das ist eine Pflichtlektüre für jeden, der Software mit Zugriffen aus dem Microsoft SQL Server schreibt. Danach weiß man, was man besser absichern sollte und warum… 😉

19. August 2009 um 17:30

Mehr als 7 Errorlogs

Bei jedem Start des SQL-Servers wird eine neue Errorlog-Datei angelegt. Die alten werden aber nicht sofort überschrieben. Stattdessen werden die letzten 6 beibehalten. Das gleiche kann man auch dediziert auslösen:

EXEC sp_cycle_errorlog

Dabei passiert Folgendes:

  • Datei "errorlog.6" wird gelöscht
  • Datei "errorlog.5" wird in "errorlog.6" umbenannt
  • Datei "errorlog.4" wird in "errorlog.5" umbenannt
  • Datei "errorlog.3" wird in "errorlog.4" umbenannt
  • Datei "errorlog.2" wird in "errorlog.3" umbenannt
  • Datei "errorlog.1" wird in "errorlog.2" umbenannt
  • Datei "errorlog" wird in "errorlog.1" umbenannt
  • Das neue "Errorlog" wird angelegt.

Man kann sich vom SQL-Server die Liste der aktuell verwalteten Errorlogs anzeigen lassen:
EXEC sp_enumerrorlogs

Beispiel:

Archiv-Nr. Datum Protokolldateigröße (Bytes)
0 08/24/2009 17:45 1468
1 08/24/2009 17:40 15956
2 08/23/2009 20:39 30462
3 08/23/2009 19:50 83076
4 08/23/2009 18:35 17160
5 08/23/2009 18:19 32608
6 08/22/2009 17:37 50104

Will man sich ein Errorlog ansehen, dann geht das mittels sp_readerrorlog:
EXEC sp_readerrorlog 0

Oder mit xp_readerrorlog: Hier gibt es mehr Parameter.
EXEC master.dbo.xp_readerrorlog 6, 1, 'Version', NULL, NULL, NULL, N'asc'

  • Nummer des Errorlogs
  • optional: Typ des Errorlogs: 1=SQL Server (Default), 2=SQL Agent
  • optional: Suchstring 1
  • optional: Suchstring 2
  • optional: Suchstring 3
  • optional: Sortierung "asc" (Default) oder "desc"

Mein Kollege Vladimir zeigte mir einen guten, aber undokumentierten Trick, wie die Anzahl der historischen Errorlogs erhöht werden kann. Dazu muss man unter [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer] den Key "NumErrorLogs" (REG_DWORD) z.B. auf "99" setzen. Wobei "MSSQL.1" für die Instanznummer steht. Die Liste der Instanzen und deren Numemrn steht unter [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL].

Hinweis: Wird der Wert von "99" dann wieder auf einen niedrigeren gesetzt, dann muss man selber dafür sorgen, dass die "alten" Errorlogs über der neuen Maximalzahl gelöscht werden.

Leider fand ich dazu so gut wie keine Infos, lediglich auf MS-Connect ist das mal offiziell erwähnt… 😉

11. August 2009 um 22:11

Microsoft SQL Server 2008 R2 CTP zum Download

Ich habe lange überlegt, ob ich zu dem CTP etwas schreiben soll: Einerseits dürften sich morgen alle Newsletter mit Infos zu der Vorabversion überschlagen, andererseits habe ich mich in den letzten Wochen viel intensiver damit beschäftigen müssen als mir lieb war… 😉

Also ab morgen ist die erste öffentliche CTP-Version (Community Technology Preview) des "Microsoft SQL Server 2008 R2" bei Microsoft verfügbar. Experten bekamen bereits Ende letzten Jahres eine allererste Fassung und dann noch mal im März. Bis vor kurzen firmierte die Version noch unter dem Codenamen "Kilimanjaro" und war als "SQL Server 2010" angekündigt.

Neu ist vor allem, dass es nun eine echte Zwischenversion "R2" für den SQL-Server gibt, für Windows-Server gibt es das ja schon länger. Erfahrungsgemäß hat die R2-Version dort den gleichen Produktlebenzyklus wie die Hauptversion. Der Upgrade des Server-Systems kostete in der Regel Geld, aber für die CALs war kein Upgrade nötig. Wie das mit dem SQL-Server wird, erfahren wir wohl erst im kommenden Jahr, wenn die Version kurz vor der Freigabe steht.

Die Änderungen der R2-Version liegen vor allem im Bereich der BI. Wer kein BI einsetzt, für den ist die Version R2 vermutlich nicht interessant. Es sei denn jemand betreibt sehr große Server-Farmen. Gespannt bin ich auf den "Report Builder 3.0", der deutliche Verbesserungen enthalten soll. Wer sich über die Neuerungen informieren will, der sollte zu den SQL-PASS-Treffen zu dem Thema in diesem bzw. nächsten Monat gehen. Die genauen Termine stehen im letzten PASS-Newsletter auf Seite 3.

Bereits in diesem Monat will Microsoft weitere Vorabversionen herausgeben, darunter die CTPs für StreamInsight und die SQL Azure Datenbank. Mal abwarten.

10. August 2009 um 21:57

LINQ-to-SQL oder ADO.NET Entity Framework

Wer sich gerade mit der Frage beschäftigt, ob er lieber LINQ-to-SQL oder ADO.NET Entity Framework einsetzen will, dem kommt sicher der Artikel bei Heise-Developer ganz recht: "Verwirrung um objekt-relationale Mapper: LINQ-to-SQL oder ADO.NET Entity Framework?". Darin beschriebt Holger Schwichtenberg recht vollständig die Unterschiede und Schwerpunkte der beiden "neuen" Datenbank-Zugriffsschichten von Microsoft. Gut gefallen mir auch die Seitenhiebe auf die Luftblasen "Object Spaces" und "WinFS", die Beide von Microsoft ewig angekündigt und der Fachwelt sehnlichst erwartet wurden, aber dann plötzlich von Microsoft eingestampft wurden. Er beschreibt auch warum zwei ähnliche Produkte konkurrierend entstanden und wo deren Stärken liegen.

Der Artikel ist angenehm zu lesen und gleichermaßen unterhaltsam und informativ. Schön finde ich auch die Gegenüberstellung ganz am Ende.

4. August 2009 um 18:15

Welche Version hat welcher SP bzw. CU?

Auf der Seite "SQL Server Version" pflegt SQLTeam.com eine sehr vollständige Liste aller SQL-Server-Versionen mit allen SPs und CUs. Das finde ich extrem nützlich. Meinen Dank an die Kollegen…

20. Juli 2009 um 21:03

verschiedene Timeouts bei der Abfrageausführung

Anlässlich einer aktuellen Frage fand ich dern Artikel "DBAs quick guide to timeouts – Watch your timeouts". Hier werden die verschiedenen Time-Outs beschrieben, die bei der Ausführung einer SQL-Abfrage am SQL-Server auftreten können:

  • ASP Script Timeout
  • COM+ Transaction Timeout
  • ADO Connection Timeout
  • ADO Command Timeout
  • SQL – Query Governor cost limit reached
  • SQL – Lock Timeout
  • SQL – Query Wait

Das fand ich richtig nützlich.

15. Juli 2009 um 20:54

Vortrag: SQL Server 2008 – ein Überblick für Entwickler

Neben der SQL-Pass, gibt es in Nürnberg auch eine recht rege .net-User-Group: dodned

Am 21.7. veranstalten sie um 20 Uhr den Vortrag "SQL Server 2008 – ein Überblick für Entwickler" :

Ähnlich wie es beim SQL Server 2005 der Fall war, bringt auch der SQL Server 2008 wieder eine ganze Vielfalt an Neuerungen und zusätzlichen Features mit sich. Insbesondere werden neben den traditionell von einer Datenbank unterstützten Datentypen mit dem SQL Server 2008 auch neue Datentypen für das Handling von unstrukturierten Daten und von Geodaten eingeführt. Dieser Vortrag gibt einen Überblick über die Neuerungen und Ideen für Anwendungs- und Einsatzmöglichkeiten. Der Schwerpunkt liegt dabei auf dem Thema "Beyond Relational".

Nähere Informationen finden sich hier. Das Thema ist gut, der Referent ist gut, kein Eintritt: Interessenten also besser mal hingehen!

9. Juli 2009 um 18:25

SQL Azure: Aus Raider wird Twix

Wer sich fragt, was denn nun SQL Azure ist, der kann sich beruhigt zurück lehnen. Da hieß bis gestern noch "Microsoft SQL Services". Aus "SQL Database Services" wurde in dem Zuge dann auch gleich "SQL Azure Database". Ehrlich gesagt fand ich das schon lange überfällig. Langsam blickte ja doch keiner mehr durch. Jetzt erkennt man wenigstens gleich am Namen in welche Ecke das gehört…

Details findet man hier.

Eigentlich könnte Microsoft auch gleich die unsäglichen Namen anderer Neuerungen im Datenbankbereich ändern: Master Data Services oder Self Service Analysis.

8. Juli 2009 um 20:41

Gute Artikel zum Thema Service Broker bei Rusanu.com

Meine Kollege Matthias machte mich auf den Blog rusanu.com aufmerksam. Hier findet man recht tiefgehende Informationen zum Thema "Microsoft SQL Server". Remus Rusanu schreibt über sich selber:

I’ve been working professionally with databases since 1994. For more than 6 years I’ve been a developer with Microsoft, member of the SQL Server team in Redmond, WA.

I have hands-on real-life experience in troubleshooting some of the most difficult problems database deployments encounters. My troubleshooting approach is a methodological one rooted in experience and a deep understanding of how SQL Server works.

Nach der Lektüre einiger seiner Artikel glaube ich ihm. Er hat wirklich Ahnung von dem was er schreibt. Sein Steckenpferd scheint der SQL Service Broker zu sein…