Door karma4: Door Anoniem: ... En waar men niet genoeg weet om prepared statements en stored procedures toe te passen, zou men daar wel genoeg weten om SELinux toe te passen als het daarmee te regelen was?
Je geeft exact aan waar het gat in de informatiebeveiliging zo vaak ontstaat.
De gangbare driehoek:
[samengevat: I van Infrastructuur, A van Applicatiebouwers, C van Tools(???)]Een driehoek waar je niet alles tegelijkertijd goed kan doen. De CIA zal geen invulling krijgen.
Ik heb een alternatieve invulling van de 3 letters gegeven, het komt zo te zien goed uit.
Hackers krijgen de kans omdat de C ontbreekt.
Wat daar ontbreekt is de M van Management dat zorgt dat alle verantwoordelijkheden belegd zijn en in de gaten houdt dat alle noodzakelijke taken ook werkelijk uitgevoerd worden. Dat los je niet op met SELinux. Daar heb je trouwens nog een S van Security administrators voor nodig met grondige kennis van zaken, en die moeten onafhankelijk van applicatiebouwers en infrastructuurmensen zijn. Een goede DBA is ook niet te versmaden trouwens als je je zaken goed dicht wilt timmeren. Je driehoek groeit uit tot minimaal een zeshoek.
Over SELinux schreef je:
Door karma4: Ik nog nooit SQL door selinux afgehandeld zien worden, toch is dat de topper in code injection.
Ik antwoordde:
Door Anoniem: SELinux is een implementatie van Linux Security Modules, een framework om acces-control van kernel-objecten te regelen. SQL-queries zijn communicatie tussen twee userland-programma's, het DMBS en de client die er verbinding mee maakt. Ik ben zeker geen SELinux-expert, maar ik vind het op basis hiervan niet direct logisch dat SQL-queries inhoudelijk beoordelen binnen de scope van dat framework zou moeten vallen.
Ik heb inmiddels in de PostgreSQL-documentatie[1] gelezen dat SELinux een interface voor applicaties heeft, zodat die er ook van gebruik kunnen maken. Als het gebruikte DBMS het ondersteunt kunnen database-objecten dus inderdaad met SELinux beveiligd worden.
Ik zie in de referentie-pagina[2] overigens niets staan dat code injection afvangt. Wat ik daar ook niet uit haal is hoe toegang tot data op basis van inhoud kan worden beveiligd. Hoe regel je dat de klant van de webwinkel alleen haar eigen bestellingen kan opvragen? Hoe regel je dat de bankrekeninghouder alleen zijn eigen rekeningen kan inzien?
In SEPostgreSQL zal je dus nog steeds met stored procedures, prepared statements en de applicatiecode van waaruit de database wordt benaderd zelf moeten werken om dat te voorkomen. SELinux is daar in ieder geval bij SEPostgreSQL geen alternatief voor.
Wist jij dat SELinux een interface voor applicaties heeft? Waarom meldde je dat dan niet even toen je merkte dat ik dat niet wist?
En nog een vraag: ken jij een DBMS dat wél via SELinux code injection kan voorkomen? Of klopt mijn sterke vermoeden dat stored procedures en prepared statements hoe dan ook nodig blijven om het goed dicht te timmeren?
[1]
https://wiki.postgresql.org/wiki/SEPostgreSQL_Introduction[2]
https://wiki.postgresql.org/wiki/SEPostgreSQL_References