heygrc
SOC 2 CC6.6 w kodzie

Trzymać zewnątrz na zewnątrz.

CC6.6 to kryterium SOC 2 dotyczące ochrony przed zagrożeniami pochodzącymi spoza granic systemu: perymetru. Wymaga umieszczenia kontroli dostępu między światem zewnętrznym a systemami, aby to, co powinno być dostępne tylko z wewnątrz, nie było otwarte na internet. Większość tego perymetru to obecnie infrastruktura jako kod: grupa zabezpieczeń, reguła zapory sieciowej, polityka sieciowa, co oznacza, że jest decydowana w pull request i może zostać poszerzona w jednym z nich.

How it shows up in a diff

The shapes the same control failure takes.

CC6.6 słabnie, gdy zmiana otwiera granicę, zwykle aby szybko udostępnić coś z zewnątrz. Powtarzające się wzorce:

  • Zapora sieciowa lub grupa zabezpieczeń otwarta na świat

    Źródło reguły przychodzącej jest poszerzone do 0.0.0.0/0 (lub ::/0), więc port, który był dostępny tylko z wewnątrz, teraz jest dostępny z całego internetu.

  • Zarządzany zasób staje się publicznie dostępny

    Baza danych, pamięć podręczna lub bucket zmienia status z prywatnego na publiczny (flaga publicznie dostępny, publiczna podsieć), więc może być osiągany bezpośrednio z zewnątrz, a nie tylko przez aplikację.

  • Port administracyjny lub zarządczy jest wystawiony

    SSH, RDP, port bazy danych lub konsola administracyjna jest otwarta na internet zamiast być dostępna przez bastion lub VPN.

  • Lista dozwolonych adresów jest poszerzona

    Ograniczone źródło jest rozszerzone, pojedynczy adres staje się całym zakresem, lub lista dozwolonych adresów zyskuje symbol wieloznaczny, więc więcej z zewnątrz może dostać się do środka.

  • Kontrola granicy jest omijana

    Nowa ścieżka pomija load balancer, bramę lub WAF, który stoi przed systemem, więc ruch zewnętrzny dociera bezpośrednio do wewnętrznej usługi.

Worked example

Grupa zabezpieczeń, która otwiera bazę danych na internet.

Zarządzana baza Postgres, znajdująca się na publicznie routowalnym punkcie końcowym, musi być dostępna z laptopu inżyniera na potrzeby jednorazowej migracji, więc źródło reguły przychodzącej jest poszerzone, aby to działało. Szybka zmiana pozostaje, a teraz grupa zabezpieczeń akceptuje połączenia z dowolnego adresu, nie tylko z podsieci aplikacji, na bazie danych, która ma ścieżkę z internetu.

infra/security_groups.tf+1 -1
resource "aws_security_group_rule" "db_ingress" {  from_port   = 5432-  cidr_blocks = [var.app_subnet_cidr]+  cidr_blocks = ["0.0.0.0/0"]}
heygrcSOC 2 CC6.6

Usunięto ograniczenie źródłowe na porcie bazy danych, więc grupa zabezpieczeń teraz zezwala na ruch przychodzący z dowolnego adresu; w przypadku bazy danych, która ma ścieżkę z internetu, oznacza to cały internet. CC6.6 dotyczy ochrony przed zagrożeniami pochodzącymi spoza granic systemu, a baza danych dostępna z dowolnego miejsca to dokładnie narażenie, na które jest ukierunkowane to kryterium. Ograniczyć źródło do podsieci lub grupy zabezpieczeń aplikacji albo korzystać z bastionu w celu jednorazowego dostępu, zamiast 0.0.0.0/0.

What an auditor does with this

Perymetr jest sprawdzany pod kątem tego, co jest rzeczywiście dostępne.

Auditor nie przyjmuje za pewnik stwierdzenia 'mamy zaporę sieciową'; sprawdza rzeczywistą granicę: które porty są otwarte, dla jakich źródeł i czy cokolwiek, co powinno być wewnętrzne, jest dostępne z zewnątrz. Grupa zabezpieczeń otwarta na 0.0.0.0/0, baza danych zmieniona na publicznie dostępną lub port administracyjny wystawiony na internet to rodzaj wyjątków, które stają się ustaleniami, i zwykle przybywają w jednej zmianie infrastruktury. Wychwycenie ich na etapie diff zapobiega narażeniu w środowisku, które jest próbkowane podczas oceny.

What this is, and is not

Przegląd, a nie skan sieci.

heygrc sygnalizuje zmiany, które dotyczą CC6.6, i cytuje kryterium, aby naprawa nastąpiła w pull request. Nie skanuje perymetru ani nie uruchamia narzędzi do oceny postawy chmurowej. Wychwytuje moment, w którym zmiana otwiera granicę, na etapie diff.