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.
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 Data Center, 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 oparte na hostach — obecnie używamy platformy Assetnote do ciągłego skanowania naszego zewnętrznego obwodu zabezpieczeń oraz rozwiązania Tenable.io w celu ciągłego skanowania zarówno wewnętrznego, jak i zewnętrznego. Te narzędzia służą do identyfikowania otwartych portów, usług i aplikacji działających w całym środowisku, a także luk w zabezpieczeniach hostów sieciowych.
- Skanowanie obrazów kontenerów — wiele spośród naszych aplikacji wdrażamy przy użyciu kontenerów Docker. Przeprowadzamy skanowanie zabezpieczeń obrazów kontenerów podczas ich wdrażania w naszym środowisku produkcyjnym lub przedprodukcyjnym. 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 Snyk identyfikujemy luki w zabezpieczeniach istniejące w zależnościach kodu open source lub podmiotów zewnętrznych. Szczegółowe informacje można znaleźć w dalszej części tego artykułu.
- Monitorowanie konfiguracji AWS — wdrażamy i integrujemy Lacework w środowisku Atlassian AWS Cloud, aby zapewnić ciągłe monitorowanie konfiguracji względem ustalonych wartości bazowych dla naszych środowisk AWS.
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
Używamy wewnętrznego systemu zgłoszeń i eskalacji, aby śledzić wszystkie wykryte przez nas luki w zabezpieczeniach, które chcemy naprawić. 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 ją usuwa. W przypadku każdej luki w zabezpieczeniach są monitorowane docelowe poziomy świadczenia usług (SLO) związane z usuwaniem błędów, które zostały opublikowane w naszych zasadach usuwania błędów zabezpieczeń.
Nasz zespół ds. bezpieczeństwa nadzoruje ten proces i współpracuje z zespołami ds. produktów i infrastruktury, aby zapewnić dokładność danych dotyczących luk w zabezpieczeniach i odpowiadać na pytania dotyczące ich usunięcia.
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 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 podczas kolejnego skanowania. Zgłoszenia dotyczące luk utworzone ręcznie są zamykane przez członków zespołu ds. produktu, infrastruktury lub bezpieczeństwa, gdy poprawka zostanie udostępniona klientom.
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 wprowadziła sterowany zdarzeniami proces skanowania zabezpieczeń kontenerów, który umożliwia monitorowanie wszystkich kontenerów, które są wdrażane w naszych środowiskach produkcyjnych za pośrednictwem naszej platformy wdrożeniowej Micros. Dodatkowo programiści są w stanie zintegrować proces skanowania z naszym pipeline'em CI/CD w przypadku wszelkich kontenerów, które są wdrażane w naszych środowiskach programistycznych. Wykorzystujemy do tego silnik Snyk Container. Snyk zapewnia zestaw narzędzi umożliwiających przeprowadzenie dogłębnej kontroli dowolnych obrazów kontenerów 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 i określenia, które z nich mają znane luki w zabezpieczeniach.
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 podmiotów zewnętrznych. 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 Snyk. Snyk 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 zidentyfikowanej luki 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.
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ę zautomatyzowanych narzędzi do skanowania, 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ę?
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.
- Centrum zaufania Atlassian
- Zasady usuwania błędów zabezpieczeń Atlassian
- Podejście do zewnętrznych testów zabezpieczeń
- Ciągłe dostarczanie
- Ostrzeżenia dotyczące bezpieczeństwa
- Programy wykrywania błędów Atlassian
- Wykrywanie błędów w aplikacjach ze sklepu Marketplace opracowanych przez Atlassian
- Wykrywanie błędów w aplikacjach ze sklepu Marketplace opracowanych przez dostawców zewnętrznych
- Wykrywanie błędów w Opsgenie
- Wykrywanie błędów w Statuspage
- Wykrywanie błędów w Trello
- Wykrywanie błędów we wszystkich innych produktach Atlassian (Jira, Confluence, Bitbucket itp.)
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ń”.