Close

Nasze podejście do zarządzania lukami w zabezpieczeniach


Postępowanie z lukami w zabezpieczeniach w Atlassian

Atlassian rozumie, że na pewnym poziomie luki w zabezpieczeniach stanowią nieodłączną część każdego procesu tworzenia oprogramowania. Jednak stale staramy się zmniejszać zarówno istotność luk w zabezpieczeniach naszych produktów i usług, jak i częstotliwość ich występowania.

W tym celu wdrożyliśmy wieloaspektowe podejście do zarządzania lukami w zabezpieczeniach oparte na połączeniu ręcznych i zautomatyzowanych procesów. Jesteśmy przekonani, że jest to najskuteczniejszy sposób ograniczenia prawdopodobieństwa „prześlizgnięcia się” luk w zabezpieczeniach tak, że nie zostaną one wykryte przez dłuższy czas.

W niniejszym artykule przedstawiamy ogólny opis sposobu, w jaki podchodzimy do kwestii zarządzania lukami w zabezpieczeniach naszych produktów i infrastruktury oraz stale rozwijamy to podejście poprzez uwzględnianie najnowszych narzędzi, metod i koncepcji, aby zapewnić sobie skuteczność postępowania z takimi lukami w przyszłości.

Przegląd naszego procesu wykrywania i eliminowania luk w zabezpieczeniach

Wdrożyliśmy metodyczny proces rozpoznawania, śledzenia i eliminowania luk w zabezpieczeniach, niezależnie od ich rodzaju.

Ciągłe odnajdowanie i przypisywanie zasobów

Ciągłe wewnętrzne odnajdowanie zasobów — używamy opracowanego wewnętrznie systemu do inwentaryzacji wszystkich naszych zasobów AWS związanych z EC2 i modułem równoważenia obciążenia przy użyciu AWSConfig oraz przypisania ich odpowiedniemu właścicielowi. Przechowujemy zasoby z okresu jednego roku — w sumie 50–60 mln.

Ciągłe odnajdowanie zasobów zewnętrznych — do ciągłego odnajdowania zasobów i analizowania zabezpieczeń w naszym obwodzie zewnętrznym stosujemy narzędzie Assetnote.

Rozpoznawanie luk w zabezpieczeniach

Korzystamy z gamy najlepszych w swojej klasie narzędzi do wykrywania luk w zabezpieczeniach, które są używane regularnie w naszych produktach i infrastrukturze w celu automatycznego skanowania w poszukiwaniu luk i ich rozpoznawania. Dotyczy to produktów Atlassian Cloud i Server, obrazów aplikacji Docker, aplikacji wewnętrznych, mobilnych i podmiotów zewnętrznych, a także naszej infrastruktury, zarówno lokalnej, jak i chmurowej. Te narzędzia służą do automatycznego skanowania pod kątem istniejących luk w zabezpieczeniach oraz ich rozpoznawania i obejmują:

  • Skanowanie sieci — aktualnie wykorzystujemy Nexpose jako nasze podstawowe narzędzie do zarządzania lukami w zabezpieczeniach, które pomaga nam w identyfikowaniu aktywnych usług, otwartych portów oraz aplikacji działających w naszym środowisku, a także wszelkich luk w zabezpieczeniach występujących na poziomie sieci.
  • Skanowanie obrazów kontenera — wiele spośród naszych aplikacji wdrażamy przy użyciu kontenerów Docker, a przy każdym wdrożeniu w naszym środowisku produkcyjnym lub przedprodukcyjnym przeprowadzamy pełne skanowanie zabezpieczeń w celu dogłębnej kontroli zawartości tych kontenerów. Wykorzystujemy do tego narzędzie o nazwie Snyk. Szczegółowe informacje można znaleźć w dalszej części tej strony.
  • Skanowanie zależności od kodu open source — za pomocą narzędzia SourceClear identyfikujemy wszelkie luki w zabezpieczeniach istniejące w kodzie open source lub podmiotów zewnętrznych, z którego mogą korzystać nasi programiści. Szczegółowe informacje można znaleźć w dalszej części tego artykułu.
  • Monitorowanie konfiguracji AWS — korzystając z narzędzia Trend Micro Cloud One — Conformity nieustannie monitorujemy zgodność konfiguracji naszych środowisk AWS z ustalonymi parametrami bazowymi.

Stale analizujemy najnowsze dostępne narzędzia i dodajemy je do pakietu, z którego korzystamy, jeśli tylko uważamy, że ułatwią nam one wykrywanie luk w zabezpieczeniach.

Dysponujemy również szeregiem dodatkowych możliwości, z których korzystamy w celu wykrywania luk w zabezpieczeniach, oprócz zautomatyzowanych skanowań. Należą do nich:

Nasz program wykrywania błędów — program wykrywania błędów prowadzimy z wykorzystaniem platformy Bugcrowd. Bugcrowd zapewnia nam dostęp do zaufanej społeczności ekspertów, zrzeszającej dziesiątki tysięcy badaczy cyberbezpieczeństwa, którzy stale testują nasze produkty i zgłaszają wszelkie wykryte luki w zabezpieczeniach. W latach 2018 i 2019 nasz program wykrywania błędów uznano za najlepszy w branży.

Zgłoszenia klientów i użytkowników — użytkownicy naszych produktów mogą w dowolnej chwili zgłaszać wszelkie napotkane błędy za pośrednictwem strony wsparcia Atlassian. We współpracy z nimi Atlassian gromadzi wszystkie dane konieczne do wewnętrznego oznaczenia i usunięcia wykrytej luki w zabezpieczeniach (po uprzednim sprawdzeniu, czy luka faktycznie występuje, a nie jest tylko pozorna). Dotyczy to również personelu Atlassian, który może zgłaszać wszelkie problemy zaobserwowane w naszych produktach (na zewnątrz lub wewnętrznie) bezpośrednio zespołowi ds. bezpieczeństwa poprzez utworzenie zgłoszenia do pomocy technicznej.

Zewnętrzne testy penetracyjne — korzystamy z usług specjalistycznych firm konsultingowych zajmujących się tematyką zabezpieczeń, które poddają produkty i infrastrukturę wysokiego ryzyka testom strukturalnym oraz testom penetracyjnym z użyciem kodu. Szczegółowe informacje można znaleźć na stronie Nasze podejście do zewnętrznych testów zabezpieczeń.

Zespół ds. bezpieczeństwa produktów Atlassian — przeprowadzamy ukierunkowane przeglądy kodu, zarówno ręcznie, jak i przy użyciu narzędzi, i ściśle współpracujemy z naszymi zespołami zajmującymi się tworzeniem produktów, aby zapewnić im większe możliwości samodzielnego wykrywania i usuwania luk w zabezpieczeniach, zanim kod trafi do nas.

Drużyna czerwona w Atlassian — powołaliśmy wewnętrzną drużynę czerwoną odpowiedzialną za symulowanie wrogich ataków mających na celu wykrycie i wykorzystanie luk w zabezpieczeniach naszych systemów, procesów i środowisk, aby umożliwić jak najszybsze ich rozpoznawanie i eliminowanie.

Śledzenie i eliminowanie luk w zabezpieczeniach

Aby zapewnić maksymalną efektywność i skuteczność naszego programu zarządzania lukami w zabezpieczeniach, integrujemy używane przez nas procesy wykrywania luk ze scentralizowanym wewnętrznym systemem zgłoszeń i eskalacji. Bez względu na to, czy dana luka w zabezpieczeniach została wykryta za pomocą jednego z naszych narzędzi do skanowania, czy za pośrednictwem innego spośród omówionych powyżej kanałów, dla każdej luki tworzone jest specjalne zgłoszenie przypisane do odpowiedniego zespołu ds. produktu, który usuwa ją zgodnie z poziomami SLO opublikowanymi w naszych zasadach usuwania błędów w zabezpieczeniach.

Nasz zespół ds. bezpieczeństwa nadzoruje ten proces i współpracuje z zespołami ds. produktów i infrastruktury, zapewniając precyzję wykrywania luk w zabezpieczeniach, odpowiadając na pytania dotyczące działań zaradczych oraz dbając o to, aby wszystkie luki usuwane były w sposób zgodny z naszymi zobowiązaniami wynikającymi z poziomów SLO.

Po opracowaniu poprawki usuwającej lukę w zabezpieczeniach jest ona dokładnie testowana, a następnie, w przypadku naszych produktów Cloud, włączana do naszego pipeline'u CI/CD w celu wdrożenia. W przypadku produktów Server i Data Center poprawki są włączane do nowego wydania i wdrażane regularnie wraz z innymi poprawkami zgodnie z naszą standardową częstotliwością wydawania. Zgłoszenia dotyczące luk utworzone przez narzędzia skanujące są automatycznie zamykane, gdy luka nie zostanie znaleziona w drodze kolejnego skanowania. Zgłoszenia dotyczące luk utworzone ręcznie zamykane są przez członków zespołu ds. produktu, infrastruktury lub bezpieczeństwa, gdy poprawka zostanie wdrożona w środowisku produkcyjnym.

Zapobieganie powstawaniu luk w zabezpieczeniach na etapie prac programistycznych

Skanowanie obrazów kontenera

Atlassian wdraża wiele spośród swoich aplikacji przy użyciu obrazów kontenera Docker. Kontenery Docker zapewniają spakowane, niezależne środowisko, w skład którego wchodzą odpowiednie biblioteki systemowe, narzędzia, ustawienia konfiguracji oraz wszelkie inne zależności wymagane do uruchomienia naszych produktów, niezależnie od parametrów konfiguracji konkretnego komputera. Kontener skutecznie tworzy warstwę abstrakcji, oddzielając kod oprogramowania od infrastruktury podstawowej, dzięki czemu nasze produkty mogą działać bez problemu na różnych komputerach.

Choć kontenery przynoszą ogromne korzyści naszym programistom oraz klientom pod względem możliwości wdrażania kodu w formie umożliwiającej jego wykorzystanie w różnych środowiskach, mogą one również stanowić źródło luk w zabezpieczeniach, jeśli obrazy będą zawierały nieaktualne lub w inny sposób niedostatecznie zabezpieczone biblioteki lub składniki.

W tym celu firma Atlassian włączyła do pipeline'u CI/CD proces pełnego skanowania zabezpieczeń każdego kontenera wdrażanego w naszych środowiskach programistycznych, przejściowych lub produkcyjnych. Wykorzystujemy do tego silnik open source Snyk. Snyk zapewnia zestaw narzędzi umożliwiających przeprowadzenie dogłębnej kontroli dowolnych obrazów kontenera wdrażanych przez naszych programistów. Obejmuje ona szczegółową analizę tych obrazów w celu identyfikacji różnych zawartych w nich składników (w tym pakietów systemu operacyjnego i aplikacji, bibliotek zewnętrznych oraz plików konfiguracyjnych).

Zależności od kodu open source

Choć wyszukiwanie i usuwanie luk w zabezpieczeniach naszego własnego kodu jest ważne, nasze produkty i usługi korzystają także z licznych bibliotek open source. W związku z tym równie krytyczne znaczenie ma znajomość używanych przez nas bibliotek i dbałość o ich aktualizację o najnowsze poprawki błędów zabezpieczeń. Pomaga nam w tym narzędzie o nazwie SourceClear. SourceClear zawiera skaner, który umożliwia wykrywanie zależności w dowolnych kompilacjach naszego oprogramowania, a następnie porównanie tych bibliotek z bazą danych znanych luk w zabezpieczeniach.

W przypadku każdej luki wykrytej przy użyciu narzędzia Snyk lub SourceClear jest automatycznie tworzone formalne zgłoszenie Jira kierowane do zespołu odpowiadającego za dany produkt zgodnie z procesem zarządzania lukami w zabezpieczeniach, który został opisany wcześniej na tej stronie.

Inne inicjatywy wspomagające walkę z lukami w zabezpieczeniach

Dotychczas w niniejszym artykule opisywaliśmy w dużej mierze kroki, jakie podejmujemy w celu zarządzania lukami w zabezpieczeniach po stronie „backendu”, czyli to, co robimy, aby usunąć luki wykryte w naszych produktach lub platformach. Jednak równocześnie staramy się przede wszystkim ograniczyć częstotliwość występowania takich luk. W tym celu wdrożyliśmy unikatowe inicjatywy na poziomie „frontendu” w naszym procesie tworzenia kodu, aby mieć pewność, że nasze produkty są od podstaw budowane z myślą o bezpieczeństwie.

Program Security Champions

W 2017 roku zainicjowaliśmy w Atlassian program Security Champions, który ma na celu włączenie liderów w dziedzinie zabezpieczeń do każdego z naszych zespołów ds. produktów i usług. Nasi liderzy przechodzą również specjalne szkolenie, aby ułatwić im zrozumienie i identyfikowanie luk w zabezpieczeniach aplikacji, a także poznanie procesów tworzenia bezpiecznego kodu. Celem tego programu jest włączenie do każdego zespołu dedykowanego lidera, którego obowiązkiem będzie upowszechnianie najważniejszych informacji dotyczących bezpieczeństwa wśród członków zespołu oraz zgłaszanie wszelkich problemów z bezpieczeństwem naszemu centralnemu zespołowi ds. bezpieczeństwa, aby zapewnić lepszą komunikację.

Liderzy biorący udział w programie Security Champions firmy Atlassian spotykają się co miesiąc, aby podzielić się narzędziami oraz wiedzą na temat najnowszych problemów związanych z bezpieczeństwem oraz wyzwań, jakim stawiają czoła. Dzięki temu wszystkie nasze zespoły mogą skorzystać z tych informacji. Ostatecznym celem jest wykorzystanie programu Champions jako punktu wyjścia do tego, aby bezpieczeństwo stało się jeszcze bardziej integralną częścią naszej kultury. Jesteśmy przekonani, że tego rodzaju podejście stanowi kluczowy filar naszej strategii mającej na celu ograniczenie luk w zabezpieczeniach do minimum.

Inżynierowie ds. zabezpieczeń produktów

Mówiąc o zarządzaniu lukami w zabezpieczeniach, trudno nie wspomnieć o kluczowej roli, jaką inżynierowie ds. zabezpieczeń naszych produktów odgrywają zarówno w usuwaniu błędów, jak i tworzeniu coraz lepszych narzędzi umożliwiających ich eliminowanie.

Nasi inżynierowie ds. bezpieczeństwa produktów przeprowadzają wstępną selekcję nowo zgłoszonych luk i współpracują z zespołami inżynierów produktowych w celu zidentyfikowania najlepszego rozwiązania dla danego problemu. Nasi inżynierowie bezpieczeństwa produktu są ekspertami w dziedzinie bezpieczeństwa aplikacji i są rozmieszczeni na całym świecie, aby mogli jak najefektywniej współpracować z naszymi inżynierami produktu.

Nasi inżynierowie ds. zabezpieczeń pełnią zarówno proaktywne jak i reaktywne role w obszarze zabezpieczeń produktu, do którego są przypisani, a w szczególności:

  • sprawdzają i analizują aktualne modele zagrożeń dla nowych i pojawiających się obszarów ryzyka;
  • sprawdzają i analizują zabezpieczenia nowych funkcji;
  • przeprowadzają ręczne przeglądy kodu;
  • przeprowadzają testy penetracyjne;
  • przeprowadzają przegląd platformy i architektury;
  • monitorują główne działania związane z projektami i w razie potrzeby udzielają porad;
  • klasyfikują i dokumentują problemy zgłoszone za pośrednictwem programu wykrywania błędów, przydzielają nagrody za wykrycie błędów i dbają o ich sprawne usuwanie;
  • tworzą nowe i utrzymują dotychczasowe funkcje automatyzacji i narzędzia, aby maksymalizować zakres i skuteczność.

Karty wyników dotyczące bezpieczeństwa

W oparciu o dane zebrane z systemów opisanych w niniejszym artykule możemy porównywać ze sobą zespoły oraz produkty, aby proaktywnie wskazywać obszary poprawy.

Podsumowanie

Atlassian stosuje wielopłaszczyznowe podejście do zarządzania lukami w zabezpieczeniach swoich produktów i platform, wykorzystując kombinację najlepszych w swojej klasie narzędzi do skanowania, własny program wykrywania błędów, a także szereg innych, stale rozwijanych mechanizmów mających na celu jak najszybsze wykrywanie i usuwanie luk w zabezpieczeniach oraz ograniczenie do minimum częstotliwości ich występowania.

Chcesz pogłębić swoją wiedzę?

W niniejszym artykule odnosimy się do wielu innych zasobów, z którymi również można się zapoznać, aby uzyskać więcej informacji na temat naszego podejścia do zarządzania lukami w zabezpieczeniach i do bezpieczeństwa w ogóle.

Na tej stronie pojęcie luk w zabezpieczeniach może być używane zamiennie z pojęciem „błędy”, którego z kolei używamy w osobnym artykule „Nasze podejście do zewnętrznych testów zabezpieczeń”.