ARK. B23Parametr monitoringuBezpieczeństwo · lista 50 parametrów

Permissions-Policy

ważność niskamierzonysposób security_headers

Nagłówek ograniczający dostęp skryptów do kamery, mikrofonu i geolokalizacji. Brak oznacza, że każdy skrypt na stronie może o nie poprosić.

Stary nagłówek Feature-Policy liczy się jako spełnienie.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 9

Nagłówek Permissions-Policy to parametr monitoringu stron internetowych, który sprawdza, czy odpowiedź serwera zawiera nagłówek Permissions-Policy albo jego poprzednika Feature-Policy. Pomiar kończy się jednym z trzech wyników: nagłówek obecny, brak nagłówka albo nie udało się pobrać odpowiedzi. Permissions Policy to mechanizm, który pozwala twórcom stron selektywnie włączać i wyłączać funkcje oraz interfejsy przeglądarki [1].

Jak działa

Nagłówek ma składnię pól strukturalnych HTTP: kluczem jest nazwa funkcji, a wartością lista dozwolonych pochodzeń, np. geolocation=(self "https://example.com") albo camera=() [1]. Słownik (ang. Dictionary) i lista w nawiasach (ang. Inner List) to typy zdefiniowane w RFC 9651 [7]. Lista może zawierać *, czyli wszystkie pochodzenia, self, czyli dokument i ramki z tego samego pochodzenia, albo wskazane pochodzenia. Pusta lista wyłącza funkcję w dokumencie i we wszystkich ramkach [2]. Wartości * i () występują wyłącznie samodzielnie, a self można łączyć z innymi pochodzeniami [2]. Specyfikacja dopuszcza też pochodzenia z symbolem wieloznacznym dla subdomen, np. https://*.example.com [1].

Poza kamerą, mikrofonem i geolokalizacją polityka obejmuje m.in. tryb pełnoekranowy, interfejs płatności Payment Request i WebUSB [2]. MDN jako zastosowania wymienia też zmianę domyślnego autoodtwarzania wideo i zezwolenie ramkom na tryb pełnoekranowy [3].

Każda funkcja ma domyślną listę, * albo self [1]. Dla kamery, mikrofonu i geolokalizacji jest to self [5] [9] [6]: dostęp mają dokument główny i ramki z tego samego pochodzenia [6]. Ramka z obcego pochodzenia potrzebuje atrybutu allow elementu iframe [4], a przy ustawionym nagłówku funkcję musi dopuszczać zarówno polityka strony, jak i ten atrybut [3]. Ramka nie może włączyć funkcji, którą wyłączył rodzic [1] [3]. Skrypty dziedziczą politykę kontekstu, w którym działają, niezależnie od swojego pochodzenia [3].

Zablokowana funkcja kończy się błędem: getUserMedia() odrzuca obietnicę z wyjątkiem NotAllowedError [5], a geolokalizacja zwraca kod PERMISSION_DENIED [6].

RYS. 1.1Ramka prosi o kamerę

Standardy i specyfikacje

  • Permissions Policy (W3C, szkic roboczy) definiuje funkcje sterowane polityką, listy dozwolonych pochodzeń i dziedziczenie do ramek. Specyfikacja nosiła wcześniej nazwę Feature Policy [1].
  • Feature-Policy w Chrome od wersji 88 działa jako alias nowego nagłówka, a gdy odpowiedź zawiera oba, pierwszeństwo ma Permissions-Policy [4]. Stary nagłówek miał inną składnię: geolocation 'self' https://example.com; camera 'none' zamiast geolocation=(self "https://example.com"), camera=() [4]. Składnia atrybutu allow się nie zmieniła [3].
  • Raportowanie. Dyrektywa może nieść parametr report-to wskazujący odbiorcę zdefiniowanego nagłówkiem Reporting-Endpoints; przy naruszeniu, np. wywołaniu getCurrentPosition(), przeglądarka wysyła raport [2]. Chrome zaznacza też zmianę wobec starego nagłówka: samo dopisanie pochodzenia do listy nie włącza już funkcji w obcej ramce [4].
  • MDN oznacza dyrektywę camera jako eksperymentalną i niedziałającą w części najczęściej używanych przeglądarek [5].
  • OWASP zaleca ustawienie nagłówka i wyłączenie funkcji, których strona nie potrzebuje, np. geolocation=(), camera=(), microphone=() [8].
RYS. 1.2Decyzja przeglądarki

Zagrożenia i skutki

Polityka a zgoda użytkownika. Permissions Policy decyduje, czy funkcja jest w dokumencie w ogóle dostępna; interfejs uprawnień (Permissions API) obsługuje zgodę, której udziela użytkownik [3]. Gdy polityka blokuje funkcję, użytkownik zwykle nie widzi pytania [3]. Gdy polityka funkcję dopuszcza, o dostępie do funkcji wrażliwych nadal ostatecznie decyduje użytkownik w oknie z pytaniem [4]. Brak nagłówka nie daje więc nikomu kamery bez wiedzy użytkownika.

Skrypty zewnętrzne. Skrypt osadzony bezpośrednio na stronie dziedziczy jej politykę, niezależnie od pochodzenia [3]. Przy domyślnej liście self dokument główny ma dostęp do geolokalizacji [6], więc skrypt reklamowy lub analityczny wczytany do strony może poprosić o lokalizację w jej imieniu, a użytkownik zobaczy pytanie od tej strony. Pusta lista w nagłówku blokuje takie wywołanie [2].

Ramki. Obce ramki domyślnie nie dostają funkcji z listą self [1]. Ryzyko rośnie przy liście *, która dopuszcza funkcję we wszystkich ramkach bez względu na pochodzenie [2].

Nadmierna blokada. Pusta lista wyłącza funkcję także w dokumencie głównym [2], więc polityka przepisana bez przeglądu może zablokować funkcje, z których strona korzysta: wywołania zakończą się błędem [5] [6].

Przykłady

Nagłówek albo sytuacjaSkutek w przeglądarce
brak nagłówkakamera, mikrofon, geolokalizacja dla dokumentu i ramek własnych [5] [6] [9]
camera=(), microphone=(), geolocation=()funkcje wyłączone w dokumencie i ramkach [2] [8]
geolocation=(self "https://example.com") i ramka z allow="geolocation"lokalizacja dla strony i tej jednej obcej ramki [6]
geolocation=*funkcja dozwolona we wszystkich ramkach [2]
sam Feature-Policy: camera 'none'Chrome od wersji 88 traktuje go jak alias [4]
oba nagłówki narazwygrywa Permissions-Policy [4]
funkcja zablokowana politykąbłąd bez okna z pytaniem [3]
TAB. 1.1Przypisy9
  1. [1] Permissions Policy · W3C
  2. [2] Permissions-Policy header · MDN Web Docs
  3. [3] Permissions Policy · MDN Web Docs
  4. [4] Control browser features with Permissions Policy · Chrome for Developers
  5. [5] Permissions-Policy: camera directive · MDN Web Docs
  6. [6] Permissions-Policy: geolocation directive · MDN Web Docs
  7. [7] RFC 9651 — Structured Field Values for HTTP · IETF
  8. [8] HTTP Security Response Headers Cheat Sheet · OWASP
  9. [9] Permissions-Policy: microphone directive · MDN Web Docs
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per strona

Ten parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.

TAB. 2.3Ustalenia

Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.

TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
33sposób security_headers
W 30 dni
33przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 16.09.2026
RYS. 3.1Droga parametru przez system: Permissions-Policy
TAB. 3.1Pomiarpliki: 4
Obszar i ważnośćBezpieczeństwo · niska (B23)
Workflow i częstotliwośćcreato_ping_security_v2 · P3 działa na LAB247cron co 24 h, T1–T3; T4 raz po anomalii · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu.
Sonda i helpersposób security_headers · CREATO_PING/helpers/security_headers.py
Testy
  1. Tylko przebieg P3; domena bez rekordu A pominięta na wstępie; strony w przebiegu sprawdzane po kolei.
  2. HEAD https://domena (wyłącznie strona główna) z podążaniem za przekierowaniami — nagłówki czytane tylko z odpowiedzi końcowej; kod 405 = druga próba GET.
  3. Sprawdzana tylko obecność Permissions-Policy albo starego Feature-Policy (alias); wartość nie jest czytana.
  4. Jedno żądanie obsługuje sześć nagłówków bezpieczeństwa.
Typ wyniku0 albo 1 ustalenie missing_permissions_policy
Jednostkabrak — wynik jakościowy (obecność nagłówka)
Próg i regułaTimeout 6,0 s, połączenie 2,0 s (stała w helperze). Reguła: brak obu nagłówków = missing_permissions_policy; którykolwiek z dowolną wartością = ok.
Gdzie leżą pokrętłaCREATO_PING/helpers/security_headers.py → _CHECKS, _TIMEOUT, _ALIASESCREATO_PING/helpers/security_runner.py → _TASK_SEVERITIES (dalej idą tylko urgent i high)CREATO_PING/config/incident_policy.toml → [finding] missing_permissions_policy
Retencja odczytówŻadna: ustalenie odpada w filtrze przebiegu, a przebieg z --no-stats nie zapisuje licznika. Z tego kanału nic nie trafia do bazy LAB247.
Znane rozbieżności
  1. Sprawdzana sama obecność: camera=* albo polityka bez kamery, mikrofonu i geolokalizacji przechodzi jako ok.
  2. Brak nagłówka nie daje nieograniczonego dostępu: obce ramki domyślnie nie dostają tych funkcji, a kamera i lokalizacja nadal wymagają zgody użytkownika — opis w katalogu ustaleń przesadza.
  3. Ustalenie nie zostawia śladu: filtr przebiegu odrzuca je przed polityką, a --no-stats wyłącza licznik — wpis w polityce jest martwy.
  4. Błąd sieci albo timeout zwraca pustą listę — nieodróżnialne od „nagłówek jest”; odpowiedź 403 z WAF-a albo 5xx oceniana jak zwykła strona.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/security_headers.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/workflows/_prod/creato_ping_security_v2.json · odczyt 16.09.2026
TAB. 3.2Co oznacza failtypów ustaleń: 1

Helper zgłasza powagę niską, a filtr przebiegu przepuszcza tylko pilną i wysoką — ustalenie odpada, zanim zostanie odczytana polityka incydentów. Przebieg produkcyjny idzie z --no-stats, więc nie zostaje nawet licznik. Wpis w polityce (gate=false) nie jest osiągany; nawet po przejściu filtra nie powstałby subtask. Utwardzenie, nie incydent.

UstaleniePowagaPewnośćSkutekSubtask / alarmCo zrobić
Brak Permissions-Policymissing_permissions_policyNiskieEwidentnebez wpływunie / nieDodaj Permissions-Policy z pustą listą dla nieużywanych uprawnień.
ARK. 4

LOOP

bez pętli
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.

TAB. 4.2Pętle

Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.

Blog 24/7
20.09Zastrzeżony PESEL: zmiana raz na 30 minut, blokada przy wypłaciedobreprogramy.pl20.09Fałszywe SMS-y od GITD o mandacie za autostradę wyłudzają dane kartyinstalki.pl20.09Pakiet npm indexed-btree omija blokadę skryptów instalacyjnychbleepingcomputer.com19.09SolarWinds łata CVE-2026-28326 w Access Rights Manager, zdalny kod bez logowaniathehackernews.com19.09Orkes Conductor: luka CVE-2026-58138 atakowana w sieci, poprawka w wersji 3.30.2thehackernews.com19.09Trzy luki jądra Linux w katalogu CISA KEV, Red Hat potwierdza aktywne atakithehackernews.com18.09Publiczne exploity na cztery luki jądra Linux dają lokalnie uprawnienia rootthehackernews.com18.09Brevo: skradziony klucz API Cloudflare i skrypty ClickFix na stronach klientówbleepingcomputer.com18.09WaterPlum z Korei Północnej zainfekowała 30 000 urządzeń w 100 krajachtherecord.media18.09Jedna zgoda OAuth daje napastnikowi dostęp do poczty i plików mimo MFAdarkreading.com