Tag: "sql injection"
SQL Server Row- and Cell-Level Security – Disclosure vulnerability // Schwachstellen in Zeilen-basierter Sicherheit
Jan 16th
(de) |
(en) |
Im Folgenden werden wir ein recht verbreitetes Szenario sehen, wie Sicherheit auf Zeilenebene / Row-Level Security (und auch Zellenebene/Cell-Level Security) implementiert werden kann. Die Architektur ist recht einfach: |
In the following we will see a quite common scenario of how Row-Level Security (and also Cell-Level Security) can be implemented. The architecture is quite simple: Of course there are also more complex designs with intermediate tables and multi-role-memberships/permissions, but it all comes down sharing the same vulnerability which I am about to demonstrate. First of all here's a diagram of the high-level architecture: |
Sehen wir uns das ganze also an. |
So let’s see it in action. |
Die Spalte „Role“ wird von der Sicht verwendet, um die jeweilige Zeile, unter Verwendung der IS_MEMBER()-Funktion nur Mitgliedern der jeweils hinterlegten Datenbankrolle durchzureichen. |
The column “Role” is used by the view to return the respective row by using the IS_MEMBER()-function only to members of the respectively stored database-role. |
Benutzer, Rollen und Berechtigungen: |
User(s), Roles and Permissions: |
Erinnern wir uns, was die Tabelle enthält: |
Now, remember what our table contains: |
In einer heilen Welt, vor dem Sündenfall, wäre dies ausreichend. |
So in an innocent world, before the fall of mankind, this would be sufficient. |
- Natürlich wird die Funktion User_Name() nur für Demo-Zwecke eingesetzt. |
- Of course the function User_Name() is only used for demo-purposes. |
Angriff |
Attack |
Und das Ergebnis ist: |
And the result is: |
Nicht „schön“, aber wir haben, was wir wollten: die „geschützten“ Daten. Der bereits geschulte Leser erkennt diese Form des Angriffs vielleicht aus einem anderen Bereich wieder: SQL Injection. |
Not exactly “pretty”, but we got what we want: the “protected” data. The well-educated reader may remember this kind of attack from a different area as well: SQL Injection. |
Einigen kommt das Bild vielleicht schon bekannt vor :-) Stellt sicher, dass das nicht Euer "Vorgarten" ist! Wo wir davon reden: |
To some, this picture may already look familiar :-) Make sure it’s not your "front-yard"! Speaking of which: |
Schutzmaßnahmen Was kann man gegen solche Angriffe tun? 1) Einsatz von gespeicherten Prozeduren, die alle Fehler abfangen, oder, wenn man unbedingt mit Sichten Arbeiten möchte, der Einsatz einer dazwischengeschalteten Multi-Statement-Tabellenwertfunktion 2) Datenverschlüsselung (Nicht TDE!) 3) Ähnlich wie 1, Aufbau einer Mittelschicht in der Anwendung, die derartiges unterbindet. Und schlussendlich sollte man für kritische Daten auch über eine Überwachungslösung nachdenken. |
Security-measures What can prevent such forms of attack? 1) The use of stored procedures which catch all errors, or, if one really wants to use views for some reason, using of a multi-statement table valued function which will be put between. 2) Data encryption (Not TDE!) 3) Similar to 1, implementation of a mid-tier in the application which prohibits such actions. Finally one should also think about an Auditing solution for critical data. |
Die hier gezeigte Technik der Row-Level Disclosure ist nicht wirklich etwas Neues, wird aber gerne immer mal vergessen. |
The technique of Row-Level Disclosure shown above isn’t really new, but frequently forgotten about. |
Implementing Row- and Cell-Level Security in Classified Databases Using SQL Server 2005
Happy securing,
Andreas
Wer sich ermuntert fühlt, nun einmal richtig in das Thema „Sicherheit mit SQL Server“ einzusteigen, für den habe ich auch 3 erstklassige Trainings im Angebot: |
If you now feel encouraged to really dive into the subject of “Security with SQL Server”, I do have 3 first-class Trainings on offer: |
Für Beginner, die hier einen guten Überblick erhalten und Grundlegende Kenntnisse erlernen: |
For Starters, who gain a good overview and learn essential knowledge in the basics: |
(SES) SQL Server Security Essentials for Developers & Administrators (1 day) |
|
Für Administratoren, die fortgeschrittene Sicherheitskonzepte umsetzen müssen: |
For Administrators that have to implement advanced security concepts: |
(SIA) Securityworkshop for SQL Server Administrators (advanced) (1 day) |
|
Für Entwickler, die fortgeschrittene Sicherheitskonzepte umsetzen müssen: |
For Developers that have to implement advanced security concepts: |
(SID) Securitysworkshop for SQL Server Developers (advanced) (1 day) |
Security-Session: “SQL Server under Attack” this November @ SQL Rally Amsterdam – privilege elevation, DoS-attack via SQL Injection and more.. live action
Oct 11th
Sicherheits-Vortrag “SQL Server under Attack” diesen November @ SQL Rally Amsterdam – Privilegienerweiterung, DoS-Attack via SQL Injection und mehr.. live Action
(de) - Da ich dieses Jahr auf bereits 7 Konferenzen gesprochen habe, inklusive 1,5 Tagen PreCon (www.andreas-wolter.com/sql-conferences/sql-conferences-2013.htm ) + 3 noch aufkommende Konferenzen (PASS Summit Charlotte USA, TechNet Berlin Germany, PASS Camp Darmstadt Germany), sind 11 Konferenzen 2013 wirklich eine Menge. Auch wenn man bedenkt, dass meine Kunden doch hin und wieder ganz froh sind, wenn ich Zeit für sie habe :-). |
(en) - Having spoken at already 7 conference this year, including 1.5 days of PreCon (www.andreas-wolter.com/sql-conferences/sql-conferences-2013.htm ) + 3 more coming up (PASS Summit Charlotte USA, TechNet Berlin Germany, PASS Camp Darmstadt Germany), 11 conferences in 2013 really is a lot. Also considering once in a while my customers are actually happy if I have time for them :-). |
SQL Rally Amsterdam bietet eine Auswahl von 5 (!) hochwertigen PreCons am 6. Nov. und 3 parallelen Vortrags-Tracks am 7.-8. Nov. an: BI Platform Architecture, Development and Administration, Enterprise Database Administration and Deployment, Database and Application Development mit vielen bekannten internationalen Sprechern, MCMs und MVPs.
Ich selber werde “SQL Attack(ed)” – SQL Server Under Attack präsentieren. Ein demo-geladener Sicherheits-Vortrag mit 2 neu-entwickelten Privilegienerweiterung und DoS-Attack Techniken, ausgeführt via SQL-Injection, in den Hauptrollen, die ich persönlich diesen Sommer in Vorbereitung auf den SQLSaturday Germany/Rheinland entwickelt habe und auch schon auf dem SQLSaturday in Istanbul gezeigt habe. Wer also einige Gründe, Sicherheits-Maßnahmen ernst zu nehmen, live und in Aktion sehen möchte: schaut vorbei! |
SQL Rally Amsterdam offers a choice of 5 (!) real high quality PreCons on Nov. 6th and 3 parallel session tracks on Nov. 7th-8th.: BI Platform Architecture, Development and Administration, Enterprise Database Administration and Deployment, Database and Application Development with many well-known international speakers, MCMs and MVPs.
I will be presenting “SQL Attack(ed)” – SQL Server Under Attack. A demo-loaded security session featuring 2 newly developed privilege elevation and DoS-attack techniques, executed via SQL-Injection, that I personally developed this summer in preparation of SQLSaturday Germany/Rheinland and also shown at SQLSaturday in Istanbul. So if you want to see some reasons for taking security measures like permissions serious, live and in action, check it out! |
CU in Amsterdam
Andreas
Security Session „SQL Attack..ed“ – Attack scenarios on SQL Server ("Hacking SQL Server")
Jul 16th
Vortrag SQL Server Sicherheit „SQL Attack..ed“ – Angriffszenarien auf SQL Server („SQL Server Hacken“)
(DE) Auf dem diesjährigen SQLSaturday in Deutschland habe ich wieder einmal einen meiner Sicherheitsvorträge gehalten, in denen ich mich auf „Angriff“ konzentriere. Für mich eine gute Gelegenheit, mich wieder einmal intensiv mit SQL Server Sicherheit und einigen Penetrationstest-Tools auseinanderzusetzen, und SQL Server auf Fallstricke in Sachen Sicherheitskonfiguration zu untersuchen. Am Ende hatte ich eine lange Liste an möglichen Demonstrationen, worunter auch eine von mir frisch entwickelte DoS-Attacke via SQL Injection zählt (zumindest habe ich nirgends einen Hinweis auf eine Beschreibung dieser Art Angriff gefunden oder auf meine Nachfragen erhalten), sowie eine „privilege elevation“(Privilegienerweiterung)-Attacke, die in dieser Form auch noch unbekannt zu sein scheint. – Alles jedoch unter Ausnutzung von angepassten Einstellungen, und keine Schwächen in der Engine(!).
Da es speziell zu SQL Server kaum nennenswerte Sessions in Deutschland zu diesem Thema gibt (selbst auf den Summits in den USA war ich damit meist recht allein unterwegs), und mir das Thema in dieser Tiefe natürlich auch besonders Spaß macht, habe ich mich entschieden, hier meine möglichen Themen zu sammeln. Ich werde sie nicht nur auf weiteren kommenden Konferenzen in Europa oder USA präsentieren, sondern auch den Regionalgruppen der deutschen PASS anzubieten – die sich hier sozusagen im „Menü“ bedienen können :-)
|
(EN) At this year’s SQLSaturday in Germany I have shown one of my sessions again, in which I concentrate on “attack”. For me a great opportunity to dive deep into SQL Server Security and several penetration-test-tool, and to explore SQL Server for pitfalls and security configuration. At the end I had a long list of possible demonstrations. Among them a just recently developed DoS-attack via SQL Injection (at least I did not find any clue on a description for this kind of attack anywhere or got an answer on my inquiries), as well as a “privilege elevation”, which in this form seems to be quite unknown as well. – Everything is just done by exploiting customized settings and not by weaknesses in the engine (!).
Since there are barely any nameable sessions on this topic specifically for SQL Server in Germany (even at the Summits in the US I tended to be quite alone with my sessions on security), and I enjoy this topic in this a lot, I have decided to collect all possible topics here. |
Session Beschreibung: SQL Server kann als "secure by default" gelten, aber da das am häufigsten erfolgreich angegriffene Ziel die Daten, die in der Datenbank liegen, sind, möchte ich in dieser Session für das Thema sensibilisieren. In dieser rein Demo-basierten Session werden verschiedene Angriffsszenarien auf verschiedenen Ebenen gezeigt. Auf speziellen Wunsch auch einige Advanced SQL-Injection Beispiele. Des Weiteren zeige ich, wie eine „privilege elevation“ aufgrund einer nicht unüblichen Einstellung möglich ist und die Ausnutzung von Rechten mit einem Datenbank-Rootkit durch einen "Insider". In dieser Art Vortrag gebe ich natürlich keine Anleitung "wie man hackt", sondern ich beleuchte häufige Schwachstellen - "Was kann unter welchen Umständen passieren". (Fast) keine Folien: Demos Demos Demos |
Session Description: SQL Server is considered "secure by default", but one of the most often successfully attacked targets is the data that resides in a Database Server. In this purely demo-based security session, I am showing several attack scenarios on different layers. Due to special request this includes some special SQL Injection types. Furthermore I show how an evaluation of privileges attack is possible due to a not uncommon configuration as well as an “insider-exploit” with a database root kit. Note that in this kind of session I do not give instructions on “how to hack” but rather I am highlighting common weaknesses - “what can happen and under which circumstances”. (Almost) no slides: just Demos Demos Demos |
Inhalte // Contents
(Web)Application Layer
|
(Web)Application Layer
|
Innerhalb des Netzwerk
|
Inside the Network
|
Network Monitor TDS frame capture
Server & Datenbank-Ebene – Angriffe von Innen, Teil 1: der böse Consultant
|
Server & database-Level – attacks from inside, Part 1: evil Consultant
|
Server & Datenbank-Ebene – Angriffe von Innen, Teil 2: der böse Entwickler
|
Server & database-Level – attacks from inside, Part 2: evil Developer
|
Recent Security Reports:
- Data Breach Investigations Report
- White Hat – Website Security Statistics Report, Mai 2013
PASS Essential "SQL Server 2012 Datenbank-Sicherheit, Best Practices & Fallstricke"
- 25.9.2013, Düsseldorf
www.sqlpass.de/Portals/0/PassEssentials/2013-09-25_PE_AWO_Datenbank-Sicherheit_Datenblatt_web.pdf
Security Workshops, 2014:
- SQL Server Security Essentials für Entwickler & Administratoren (SES) (1 Tag)
3. April 2014 in Düsseldorf - Securityworkshop (SID) für SQL Server Entwickler (1 Tag)
"Die Basis für ein sicheres Backend: Von Ausführungskontext bis zu Verschlüsselung."
24. April 2014 in Düsseldorf - Securityworkshop (SIA) für SQL Server Administratoren (1Tag)
"Systemsicherheit für SQL Server: Von Authentifizierung bis zur Sicherheits-Überwachung."4. April 2014 in Düsseldorf
enjoy
and until soon - in your regional chapter, in your company, at a SQL Server Master-Class or at some conference - just say hello if you see me
Andreas