{"id":4389,"date":"2023-07-19T09:33:27","date_gmt":"2023-07-19T08:33:27","guid":{"rendered":"https:\/\/soc.dag.pl\/?p=4389"},"modified":"2023-07-19T09:34:00","modified_gmt":"2023-07-19T08:34:00","slug":"lastpass-lider-z-kiepska-polityka-informacyjna","status":"publish","type":"post","link":"https:\/\/soc.dag.pl\/lastpass-lider-z-kiepska-polityka-informacyjna\/","title":{"rendered":"Lastpass \u2013 lider z kiepsk\u0105 polityk\u0105 informacyjn\u0105"},"content":{"rendered":"

Lastpass jako firma zajmuj\u0105ca si\u0119 bezpiecze\u0144stwem powinna dawa\u0107 przyk\u0142ad, jak zachowywa\u0107 si\u0119 w sytuacjach kryzysowych. Niestety na przyk\u0142adzie ostatnich zdarze\u0144, daje ona materia\u0142 do negatywnej analizy polityki informacyjnej w zakresie narusze\u0144\u2026<\/p>\n

 <\/p>\n

Kilka tygodni temu opublikowano szczeg\u00f3\u0142ow\u0105 analiz\u0119 tego,\u00a0jak naruszenie Lastpass wp\u0142yn\u0119\u0142o na wdro\u017cenie SSO przez Lastpass<\/a>. Dzisiaj Lastpass po cichu przemyci\u0142 aktualizacj\u0119 do ich “Zalecanych dzia\u0142a\u0144 dla administrator\u00f3w biznesowych Lastpass”, kt\u00f3ra ca\u0142kowicie wypiera zar\u00f3wno informacje, kt\u00f3re Lastpass dostarczy\u0142 klientom, jak i porady z poprzedniego postu. Sprawd\u017amy, o co chodzi.<\/p>\n

 <\/p>\n

Background<\/strong><\/p>\n

 <\/p>\n

Lastpass udost\u0119pnia\u00a0techniczny dokument wdro\u017ceniowy<\/a>, kt\u00f3ry opisuje spos\u00f3b generowania hase\u0142 do skarbca Lastpass (kt\u00f3ry jest taki sam dla wszystkich integracji SSO)<\/p>\n

 <\/p>\n

Ukryte has\u0142o g\u0142\u00f3wne = base64(SHA256(K1 XOR K2))<\/p>\n

 <\/p>\n

To r\u00f3wnanie definiuje\u00a0K1 jako sekret ca\u0142ej firmy i K2 jako sekret wygenerowany przez u\u017cytkownika. K2 jest przechowywany w Lastpass i pobierany przez API przy u\u017cyciu id_tokena podpisanego przez Twojego dostawc\u0119 SSO.<\/p>\n

 <\/p>\n

W\u00a0ostatniej aktualizacji Lastpass<\/a>\u00a0wskaza\u0142o m.in.:<\/p>\n

 <\/p>\n

Komponent K2 zosta\u0142 eksfiltrowany przez aktora zagro\u017ce\u0144, poniewa\u017c by\u0142 przechowywany w zaszyfrowanych kopiach zapasowych bazy danych LastPass MFA\/Federation Database, do kt\u00f3rej aktor zagro\u017ce\u0144 posiada\u0142 klucze deszyfruj\u0105ce.<\/p>\n

 <\/p>\n

 <\/p>\n

Nast\u0119pnie stara si\u0119 wycofa\u0107 to stwierdzenie, m\u00f3wi\u0105c:<\/p>\n

 <\/p>\n

Model referencyjny bezpiecze\u0144stwa, kt\u00f3ry zaimplementowali\u015bmy dla wiedzy dzielonej, zosta\u0142 wybrany w celu obrony przed t\u0105 specyficzn\u0105 sytuacj\u0105, w kt\u00f3rej znajomo\u015b\u0107 tylko jednego z komponent\u00f3w wiedzy dzielonej zdradzi\u0142aby cokolwiek na temat klucza.<\/p>\n

 <\/p>\n

Problem<\/strong><\/p>\n

 <\/p>\n

Nie dajmy si\u0119 zwie\u015b\u0107. Spos\u00f3b, w jaki zosta\u0142 skonfigurowany ten “dzielony” klucz, sprawia, \u017ce K1 jest nie “tajemnic\u0105”, a bardziej przeszkod\u0105 spowalniaj\u0105c\u0105. Dlaczego tak jest?\u00a0K1 nie zmienia si\u0119, jest taki sam dla ca\u0142ej organizacji i jest dost\u0119pny dla ka\u017cdego pracownika, kt\u00f3ry kiedykolwiek za\u0142o\u017cy\u0142\/u\u017cywa\u0142 Lastpass w danym przedsi\u0119biorstwie.<\/p>\n

\"this<\/p>\n

 <\/p>\n

Jak to mo\u017cliwe? Ot\u00f3\u017c Lastpass K1 jest (dla wi\u0119kszo\u015bci\u00a0IDP<\/a>) ustawiony jako grant Access Token.<\/p>\n

 <\/p>\n

\"lastpass\"<\/p>\n

 <\/p>\n

Oznacza to, \u017ce ka\u017cdy u\u017cytkownik, kt\u00f3ry patrzy na swoj\u0105 konsol\u0119 przegl\u0105darki internetowej lub u\u017cywa proxy, mo\u017ce uzyska\u0107 dost\u0119p do K1 poprzez proste dekodowanie base64\u00a0JWT Access Token<\/a>, gdy leci ono przez sie\u0107.<\/p>\n

 <\/p>\n

\"lastpass2\"<\/p>\n

 <\/p>\n

Oczywi\u015bcie oznacza to r\u00f3wnie\u017c, \u017ce\u00a0ka\u017cdy atakuj\u0105cy, kt\u00f3ry ma K2, mo\u017ce namierzy\u0107 ka\u017cdego indywidualnego u\u017cytkownika w firmie z dost\u0119pem do Lastpass i wykorzysta\u0107 jego dost\u0119p do uzyskania K1 dla ca\u0142ej firmy\u00a0(Bonus: Wiemy ju\u017c, \u017ce\u00a0naruszenie ujawni\u0142o nazw\u0119 firmy w skarbcu, w postaci plaintext<\/a>).<\/p>\n

 <\/p>\n

Kryptograficznie oznacza to r\u00f3wnie\u017c, \u017ce wszystkie has\u0142a g\u0142\u00f3wne s\u0105 po\u0142\u0105czone.\u00a0Je\u015bli atakuj\u0105cy z\u0142amie jedno K1 dla organizacji, uzyskuje dost\u0119p do wszystkich skarbc\u00f3w organizacji (au\u0107!).<\/p>\n

Ca\u0142y ten proces pot\u0119guje to, \u017ce informacje wci\u0105\u017c wyp\u0142ywaj\u0105, co sprawia, \u017ce jest prawie niemo\u017cliwe, aby zainteresowane strony mog\u0142y na nie odpowiedzie\u0107. Na przyk\u0142ad,\u00a0nieco ponad miesi\u0105c temu, wsparcie Lastpass wyra\u017anie wskaza\u0142o (dla wielu \u017ar\u00f3de\u0142<\/a>), \u017ce K2 nie zosta\u0142o dotkni\u0119te.<\/p>\n

 <\/p>\n

Rozwi\u0105zanie<\/strong><\/p>\n

 <\/p>\n

Sugerowanym rozwi\u0105zaniem od Lastpass jest rotacja K1 (oh, to brzmi prosto… prawda?). Aby zrobi\u0107 to z powodzeniem,\u00a0musisz de-federowa\u0107 i ponownie sfederowa\u0107 ka\u017cdego ze swoich u\u017cytkownik\u00f3w<\/a>. Na szcz\u0119\u015bcie, ponowne sfederowanie u\u017cytkownik\u00f3w wydaje si\u0119 rotowa\u0107 K2 u\u017cytkownik\u00f3w (niepotwierdzone). W tym momencie o wiele lepszym rozwi\u0105zaniem wydaje si\u0119 by\u0107 za\u0142o\u017cenie nowego konta. Przynajmniej dostaniemy \u0142adne e-maile onboardingowe.<\/p>\n

 <\/p>\n

Nale\u017cy pami\u0119ta\u0107, \u017ce rotacja hase\u0142 nie rozwi\u0105\u017ce w pe\u0142ni problemu zagro\u017cenia K2. Jak wspomniano, dop\u00f3ki u\u017cytkownicy nie zostan\u0105 ponownie sfederowani, has\u0142a K1 i K2 pozostan\u0105 takie same. Kolejne naruszenie lokalnie lub w Lastpass spowoduje, \u017ce wszystkie przysz\u0142e has\u0142a b\u0119d\u0105 zagro\u017cone.<\/p>\n

 <\/p>\n

Yhy, wszystko jest w porz\u0105dku, nic si\u0119 nie dzieje.<\/p>\n

 <\/p>\n

Je\u015bli chcesz unikn\u0105\u0107 podobnego ryzyka, skontaktuj si\u0119 z naszymi ekspertami i ju\u017c dzi\u015b zaplanuj dzia\u0142ania prewencyjne!<\/p>\n","protected":false},"excerpt":{"rendered":"

Lastpass jako firma zajmuj\u0105ca si\u0119 bezpiecze\u0144stwem powinna dawa\u0107 przyk\u0142ad, jak zachowywa\u0107 si\u0119 w sytuacjach kryzysowych. Niestety na przyk\u0142adzie ostatnich zdarze\u0144, daje ona materia\u0142 do negatywnej analizy polityki informacyjnej w zakresie narusze\u0144\u2026   Kilka tygodni temu opublikowano szczeg\u00f3\u0142ow\u0105 analiz\u0119 tego,\u00a0jak naruszenie Lastpass wp\u0142yn\u0119\u0142o na wdro\u017cenie SSO przez Lastpass. Dzisiaj Lastpass po cichu przemyci\u0142 aktualizacj\u0119 do ich […]<\/p>\n","protected":false},"author":4,"featured_media":4390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"class_list":["post-4389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyber-security"],"_links":{"self":[{"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/posts\/4389"}],"collection":[{"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/comments?post=4389"}],"version-history":[{"count":1,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/posts\/4389\/revisions"}],"predecessor-version":[{"id":4391,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/posts\/4389\/revisions\/4391"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/media\/4390"}],"wp:attachment":[{"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/media?parent=4389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/categories?post=4389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soc.dag.pl\/wp-json\/wp\/v2\/tags?post=4389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}