Tag: "_hacking_"
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