Silesian SolutionsPorozmawiajmy o projekcie
Wszystkie usługi

Oferta

Cyberbezpieczeństwo i zgodność

Bezpieczeństwo aplikacji i zgodność: przegląd kodu i architektury, modelowanie zagrożeń, higiena zależności, nagłówki ochronne, RODO i WCAG jako automatyczne bramki w CI/CD.

Kod źródłowy z komentarzem dokumentacyjnym na ekranie edytora
Dla kogo
Zespoły wydające oprogramowanie
Zakres
Kod, architektura i CI/CD
Efekt
Wymóg jako bramka w CI
Standardy
OWASP Top 10, WCAG, RODO itp.

Co wchodzi w zakres

  • Przegląd bezpieczeństwa kodu i architektury

    OWASP Top 10 i ASVS jako lista kontrolna, nie jako raport ze skanera.

  • Modelowanie zagrożeń

    Na konkretnym przepływie danych, nie na diagramie ogólnym.

  • Higiena zależności

    Automatyczne aktualizacje z okresem karencji, alerty o podatnościach w CI.

  • Nagłówki ochronne i polityka treści

    CSP sprawdzana asercją na zbudowanej stronie, nie w konfiguracji.

  • Obsługa sekretów

    Część warstwy widocznej z zewnątrz, sprawdzanej asercją na zbudowanej stronie.

  • Bramki w CI/CD

    Wymagania prawne, dostępnościowe i SEO jako asercje na wygenerowanej stronie.

  • Zgody i retencja danych

    Zgodnie z RODO oraz Prawem komunikacji elektronicznej.

  • Dostępność według WCAG

    Sprawdzana w buildzie, nie w arkuszu.

Od czego zaczyna się przegląd

Bezpieczeństwo aplikacji sprawdza się tam, gdzie powstaje: w kodzie, w architekturze i w CI/CD. Zaczynamy od granic systemu: kto się uwierzytelnia, kto co może zobaczyć, którędy wchodzą dane z zewnątrz. Wynikiem jest lista znalezisk uszeregowana według tego, co da się z niej realnie wykorzystać.

Modelowanie zagrożeń robimy na konkretnym przepływie, nie na diagramie ogólnym. Formularz przyjmujący plik, integracja pobierająca dane z cudzego API, panel z rolami użytkowników. Każde z tych miejsc ma własny zestaw pytań o to, co się stanie, gdy dane przyjdą w postaci, której nikt nie przewidział.

Zależności i to, co widać z zewnątrz

Zależności to dziś najczęstsza droga wejścia. Aktualizacje idą automatycznie, z okresem karencji, żeby świeżo opublikowana i przejęta wersja pakietu nie weszła do builda tego samego dnia. Alerty o podatnościach trafiają do tego samego miejsca co reszta pracy, zamiast czekać w osobnym panelu.

Nagłówki ochronne, polityka treści, obsługa sekretów i konfiguracja zgód to warstwa, którą widać z zewnątrz i którą najłatwiej zepsuć przy okazji innej zmiany. Dlatego jej stan sprawdza asercja na zbudowanej stronie, a nie pamięć osoby, która ją kiedyś ustawiała.

Dlaczego zgodność zapisujemy w CI/CD, a nie w dokumencie

Wymóg zapisany w dokumencie ktoś przeczyta raz, zapamięta na tydzień i zapomni. Wymóg zapisany w pipeline przerywa build za każdym razem, gdy przestaje być spełniony. Wymagania prawne, dostępnościowe i SEO zamieniamy w asercje sprawdzające wygenerowaną stronę, a nie intencję zapisaną w polityce. Asercja przechodzi albo nie przechodzi.

Przykładowe technologie

  • TypeScript
  • Node.js
  • GitHub Actions
  • OWASP Top 10
  • WCAG
  • Content Security Policy
  • Dependabot
  • OWASP ASVS
  • search-quality-kit

Dowód: search-quality-kit

Tę metodę stosujemy najpierw na sobie. Pakiet jest publiczny na npm.

Dystrybucja
Publiczny pakiet npm
Język
TypeScript
Gdzie pracuje
CI każdego serwisu, który prowadzimy

Pakiet audytuje techniczne fundamenty strony: crawlability, metadane, dane strukturalne i podstawową dostępność. Jednym z serwisów, które go używają, jest CyberKatalog.pl.

check-build-output.mjs

Wymóg zgody na osadzenia z art. 399 Prawa komunikacji elektronicznej to jedna asercja: sprawdza, że strona kontaktu nie zawiera adresu osadzenia Google Maps, zanim odwiedzający wyrazi zgodę. Jeśli ktoś kiedyś przywróci mapę bez zgody, ten sam build, który dziś przechodzi, przestanie przechodzić.

Co się zmienia po wdrożeniu

  • Znaleziska uszeregowane według tego, co da się wykorzystać, nie według wyniku skanera
  • Wymóg raz zapisany w kodzie obowiązuje przy każdym wdrożeniu, nie tylko w dniu audytu
  • Przejęty pakiet nie wchodzi do builda tego samego dnia, bo aktualizacje mają okres karencji
  • Regresja zatrzymuje build, zanim trafi na produkcję, zamiast czekać, aż ktoś ją zauważy

Typowe zastosowania

  • Przegląd bezpieczeństwa aplikacji webowej przed wdrożeniem u klienta końcowego
  • Modelowanie zagrożeń dla panelu z rolami i integracją pobierającą dane z zewnętrznego API
  • Bramka pilnująca zgody na osadzenia (mapy, wideo, piksele reklamowe), zanim odwiedzający ją wyrazi
  • Bramka sprawdzająca podstawowe progi dostępności w zbudowanej wersji strony

Pytania, które padają najczęściej

Czym bramka w CI różni się od jednorazowego audytu?

Wymóg zapisany w dokumencie ktoś przeczyta raz, zapamięta na tydzień i zapomni. Bramka przerywa build za każdym razem, gdy wymóg przestaje być spełniony. Wymagania prawne, dostępnościowe i SEO zamieniamy w asercje sprawdzające wygenerowaną stronę, a nie intencję zapisaną w polityce.

Na czym opieracie przegląd bezpieczeństwa?

Na granicach systemu: kto się uwierzytelnia, kto co może zobaczyć, którędy wchodzą dane z zewnątrz. OWASP Top 10 i ASVS służą jako lista kontrolna. Wynikiem jest lista znalezisk uszeregowana według tego, co da się realnie wykorzystać.

Jak wygląda pilnowanie zależności?

Aktualizacje idą automatycznie, z okresem karencji, żeby świeżo opublikowana i przejęta wersja pakietu nie weszła do builda tego samego dnia. Alerty o podatnościach trafiają do tego samego miejsca co reszta pracy, zamiast czekać w osobnym panelu.

Co sprawdzacie w warstwie widocznej z zewnątrz?

Nagłówki ochronne, politykę treści, obsługę sekretów i konfigurację zgód. Tę warstwę najłatwiej zepsuć przy okazji innej zmiany, dlatego jej stan sprawdza asercja na zbudowanej stronie, a nie pamięć osoby, która ją kiedyś ustawiała.

Czym jest search-quality-kit?

To nasz własny pakiet, publiczny na npm, napisany w TypeScript i pokryty testami. Audytuje techniczne fundamenty strony i pracuje w CI każdego serwisu, który prowadzimy.

Pozostałe filary