DFFVB schrieb:
Im NAS - wer dort auf externe Speicheranbieter sichert, der hat da auch Auth Tokens, wenn so nen NAS geklaut wird, kann ein Angreifer auch alle diese Accounts löschen oder lesen
Alles was unverschlüsselt vorliegt. Aber im Falle von Diebstahl, brauchst du kein Session Hijacking betreiben. Auch alles was "automatisch" geht ist potentiell unsicher. Von "sicher" kannst du nur ausgehen, wenn ein externer Faktor hinzugezogen werden muss, wie bspw. eine manuelle Passworteingabe, ein FIDO Key, ... Die Implementierung mal außen vor gelassen.
DFFVB schrieb:
Weiß jemand wie Outlook / Thunderbrid das handhaben? Gleiche Kiste? Kann das einfahc ausgelesen werden?
https://www.nirsoft.net/utils/mailpv.html
OAuth ist ein anderes Thema, aber es werden auch nur Tokens vergeben. Falls JWTs für die Legitimität ausgegeben werden, kämpfen diese allerdings mit fehlenden Revocation Mechanismen (= Invalidierung der Sessions). Revocations klappen aber bereits bei TLS-Zertifikaten im Browser nicht (
CRL,
OCSP,
CT).
BeBur schrieb:
Die IP ändert sich auch bei Privatanbietern regelmäßig, das wäre sehr schlechte User Experience wenn man die Session bei jedem IP wechsel invalidiert.
Aber ggf. das einzig probate Mittel, die Session gegen irgendwas zu härten. Bspw. wenn der User "oberschlau" ist und "anonym" sein will und seinen User Agent deaktiviert. Tja Pech, dann frisst du eben die restriktivere Pille. Auch sollte es bspw. ein PayPal oder eine Bank eher mehr interessieren, ob sich die IP oder der User Agent innerhalb der Sessionlaufzeit ändert. Aus sicherheitstechnischen Gründen wird die Session invalidiert, bevor Schabernack getrieben wird. Ob eine Bank überhaupt lang laufende Sessions erlauben sollte?
Auch ist die IP ein probates Mittel um bspw. die Session an einem Arbeitsplatz zu forcieren. Wir reden hier bei den "Handlungsempfehlungen" nicht um das, was immer gültig ist (bspw. hier das CB Tippspiel zur WM), sondern auch bspw. von Zugängen an industriellen Maschinen, wo die IP bspw. ein vollkommen probates Mittel ist, weil diese sich im typischen Aktionszeitraum sowieso nicht ändert. Auch kann eine Session nach fünf Minuten auslaufen. Vollkommen legitim, je nach Einsatzzweck.
Natürlich ist die IP für Youtube eher weniger ein Kriterium. Aber spätestens beim User Agent reicht die Verknüpfung der Session ID zum User Agent (+ Version, + 1 für evtl. Upgrades?) mindestens dazu. Welcher legitime Fall hätte eintreten sollen, dass die exakt gleiche Session ID an mehrere Browser ausgegeben werden sollte? Dass überhaupt erstmal eine Session ID doppelt vergeben werden sollte...
BeBur schrieb:
Alles andere kannst du faken und die notwendigen Infos auch direkt mitkopieren wenn du das Session Token kopierst.
Genau
dieser Fall wird damit
aktiv auf Serverseite unterbunden. Damit du eben
nicht irgendwas einfach "kopieren" kannst und uneingeschränkten Zugriff erhälst. Wenn du mit jedem Request deine Daten erneut fakest, bekommst du halt keine Session. Schluss aus. Ich geh auch nicht in den Club und wechsel alle drei Minuten mein komplettes Outfit um dann dem Türsteher ein "ich war vor drei Minuten schon drin" an den Latz zu knallen.
Heute passiert das LTT, morgen ist es der Admin von Youtube. Gestern war es
Atlassian, vorgestern
Lastpass. Wer ist morgen dran? 2FA sollte bei sowas auch verpflichtend sein. Gerade Google, wo man für jeden Mist auf "ja, das war ich" klicken muss. Also hätten wir Session Hijacking und Credential Diebstahl abgedeckt. Bleibt mehr oder weniger nur noch eine Sicherheitslücke beim Anbieter als relevanter Angriffsvektor. Ich schließe hier die
5 $ Schraubenschlüssel-Attacke aus. Diebstahl ist ne andere Baustelle, aber hierfür muss der User selbst aktiv werden und gültige Passwörter wechseln und registrierte Tokens zurückziehen.
Jede halbwegs auf Sicherheit bedachte Firma erstellt dir einen Account und fordert dich ggf. in Anwesenheit eines Admins auf 2FA zu aktivieren.
Piktogramm schrieb:
Jain, Google hat ein paar Ecken wo sie ansetzen können, aber allein bekommen die da wenig gelöst.
Mittel gegen Session Hijacking hat
einzig Google in der Hand und auch für die Sicherheit ihrer Konten ist
einzig Google verantwortlich. Weil sie diejenigen sind, die die Sessions verwalten und vergeben. Gegen Account-Sharing u.ä. kann Google natürlich nicht aktiv vorgehen (außer auch die IPs und User Agents loggen), aber das ist per se auch kein gültiger "Angriffsvektor". Sehr wohl können sie aber Sessions invalidieren, wenn sich unterschiedliche Geräte von unterschiedlichen Standorten anmelden. Ggf. gar über nen längeren Zeitraum gleichzeitig.
Der letzte Request kam aus Timbuktu mit "Samsung Browser" und der jetzige Request kommt aus der Antarktis mit "curl"? Hm ja, klingt legitim.
¯\_(ツ)_/¯
Oder zumindest vor der nächsten Aktion (gerade sowas wie "Account löschen", "tausende Videos löschen" u.ä.) erneut nach dem Passwort fragen. Das hat Linus ja auch im Video erwähnt, dass es schöne tolle Rate Limits für die API gibt, aber will man tausende Videos auf einmal löschen, kann man ohne Probleme gewähren.
Piktogramm schrieb:
Fingerprinting ist komplett sinnlos, wenn der Angreifer einmal im Userspace bzw. Browser ist, kann nahezu beliebig modifiziert und ausgeleitet werden.
Genau dafür ist doch genanntes Szenario gedacht? Damit bei einem unterschiedlichen Browsern/User Agents eben
nicht einfach die Session ID rüber kopiert werden kann. Genau dafür hat doch die Gegenseite sicherzustellen, dass sie nicht einfach beliebige Requests frisst und ausführt, sondern die Daten halbwegs auf Plausibilität prüft. Man fixiert sich heute extrem auf TLS und "ob der Server auch wirklich der Server ist", will MITM unterbinden und stellt Schranken noch und nöcher auf, aber bei der Richtung Client -> Server wird geschlampt wie eh und je in den 90ern?
Ja, wenn die Antwort "geht nicht" ist, dann ist Session Hijacking angesagt. Mit eben genau den Problemen, die LTT jetzt hatte. Kann man nichts machen.
¯\_(ツ)_/¯ Dabei ist eine Gegenmaßnahme so extrem billig...
Mit "geht nicht" sagt man doch nur aus, dass man den Zugang zur
eigenen Infrastruktur nicht unter Kontrolle hat oder haben will, wenn man sich aktiv dagegen entscheidet. Selbst ein steinaltes os/xtCommerce oder Gambio von 2010 hatte solche erweiterten und auch deaktivierbaren Prüfungen standardmäßig drin, damit Session Hijacking aktiv unterbunden werden kann.
Mit dem gleichen Argument könnte man sagen, dass CSRF Blödsinn ist. Bis irgendwann jemand ein "Bild" (
<img>) mit der URL "
http://meine-bank.de/uberweisung-ausfuehren/?an=angreifer&wert=1000000" einbindet. Und jeder, der dort aktuell angemeldet ist, wundert sich, warum einem plötzlich Geld auf dem Konto fehlt. Mal abgesehen von der nächsten Lücke, dass Aktionen keinem GET-Request entsprechen sollten.
Piktogramm schrieb:
Es ist extrem häufig so, dass es keine gescheite Trennung zwischen verschiedenen Rollen gibt.
Und auch die Trennung ist egal, denn prinzipiell kann das
jeder einzelnen Rolle passieren. Mit den Rollen hast du die
Authorisierung (wer darf was?) im Griff, nicht aber die
Authentifizierung (wer bin ich?).