Blog 24/7
ARK. B36Parametr monitoringuBezpieczeństwo · lista 87 parametrów

Obce skrypty i ukryte ramki

ważność średniamierzonysposób infection

Skrypt z obcej domeny albo niewidoczny iframe w HTML strony. Sam nie dowodzi infekcji — bywa legalną integracją — więc wymaga przejrzenia.

ARK. 1

WIKI

wiedza ze źródeł zewnętrznych

Artykuł o parametrze „Obce skrypty i ukryte ramki” jest w przygotowaniu. Powstaje po kolei dla wszystkich 87 parametrów, każde twierdzenie z przypisem do źródła.

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.3Ustaleniaod 11.07.2026
Otwarte teraz
0stron: 0
Nowe w ostatnim dniu
121.08.2026
Otwarte od początku
38stron: 34
Zamknięte
38od początku
Mediana trwania
4 dni 19 hod wykrycia do zamknięcia
UstalenieSkutekOtwarte terazŁącznieZamknięte
Obcy skrypt infection_foreign_scriptdo weryfikacji01111
Ukryty iframe infection_hidden_iframedo weryfikacji02727
RYS. 2.2Nowe ustalenia, 30 dni
08.10.202623.10.202606.11.2026
Nowe ustalenia parametru Obce skrypty i ukryte ramki, 30 dni · wysokość słupka = liczba ustaleń dnia, warstwy od dołu: nowe ustalenia · dni bez odczytu: 30
Nowe ustalenia parametru Obce skrypty i ukryte ramki, 30 dni
Dzieńnowe ustalenia
08.10.20260 ustaleń
09.10.20260 ustaleń
10.10.20260 ustaleń
11.10.20260 ustaleń
12.10.20260 ustaleń
13.10.20260 ustaleń
14.10.20260 ustaleń
15.10.20260 ustaleń
16.10.20260 ustaleń
17.10.20260 ustaleń
18.10.20260 ustaleń
19.10.20260 ustaleń
20.10.20260 ustaleń
21.10.20260 ustaleń
22.10.20260 ustaleń
23.10.20260 ustaleń
24.10.20260 ustaleń
25.10.20260 ustaleń
26.10.20260 ustaleń
27.10.20260 ustaleń
28.10.20260 ustaleń
29.10.20260 ustaleń
30.10.20260 ustaleń
31.10.20260 ustaleń
01.11.20260 ustaleń
02.11.20260 ustaleń
03.11.20260 ustaleń
04.11.20260 ustaleń
05.11.20260 ustaleń
06.11.20260 ustaleń
TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
65sposób infection
W 30 dni
0przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
—65 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 01.10.2026

Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.

RYS. 3.1Droga parametru przez system: Obce skrypty i ukryte ramki
TAB. 3.1Pomiarpliki: 11
Obszar i ważnośćBezpieczeństwo · średnia (B36)
Workflow i częstotliwośćcreato_ping_security_v2 · P4 działa na LAB247Skaner 2.0, rytm „p4”: co 24 h (tier 1–3), co 48 h (tier 4) · Szybki skan: tylko ewidentne przejęcie widoczne z zewnątrz.creato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu.
Sonda i helpersposób infection · CREATO_PING/helpers/infection_check.py
Testy
  1. Gdzie chodzi: rytm p4 (dostęp i priorytet T1–T3 co 24 h, T4 co 48 h; bez priorytetu co 48 h), rytm p3 (premium co 6 h; dostęp i priorytet T1–T3 co 24 h, T4 co 9 dni; bez priorytetu co 9 dni) i badanie kohort — tura „co_to_za_strona” zestawów premium_pelny, tani_ciezki i tani_lekki, gdy sonda http dała ok.
  2. HTML strony głównej z pobrania dla człowieka (wspólny bufor przebiegu; limit 5 s, do 5 przekierowań, treść do 3 MB). Nieudane pobranie = żadna reguła nie rusza.
  3. Obcy skrypt: znacznik script z src bezwzględnym (http://, https:// albo //); host nie jest domeną strony ani jej subdomeną i nie kończy się żadnym z 67 wpisów SCRIPT_WHITELIST (Google, Cloudflare, jsDelivr, PayU, Przelewy24, tpay, czaty, zgody na cookies…). Adres względny = własny serwer.
  4. Ukryta ramka: znacznik iframe, którego atrybuty zawierają display:none, visibility:hidden albo width lub height równe 0; pomijane są ramka noscript Google Tag Managera (googletagmanager.com/ns.html) i ramka AJAX Gravity Forms (gform_ajax_frame).
Typ wyniku0–2 ustalenia: infection_foreign_script (do 5 adresów w dowodzie) i infection_hidden_iframe (liczba ramek)
Jednostkabrak — wynik jakościowy; liczba obcych skryptów i ukrytych ramek w szczegółach
Próg i regułaReguła: co najmniej jeden obcy skrypt albo jedna ukryta ramka = ustalenie (helper: powaga wysoka; polityka: niska, „do weryfikacji”).
Gdzie leżą pokrętłaCREATO_PING/helpers/infection_check.py → SCRIPT_WHITELIST, _is_whitelisted_script, detect_foreign_scriptsCREATO_PING/helpers/infection_check.py → _IFRAME, _HIDDEN_PATTERN, detect_hidden_iframesCREATO_PING/config/incident_policy.toml → [finding] infection_foreign_script, infection_hidden_iframe
Retencja odczytówSurowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`.
Znane rozbieżności
  1. Lista zaufanych dopasowuje po końcówce nazwy: każda subdomena wpisu (np. dowolny zasobnik na googleapis.com albo projekt na wp.com) przechodzi jako zaufana.
  2. Domena własna to nazwa z listy stron bez zmian: dla strony zapisanej z www. skrypt z domeny bez www albo z jej innej subdomeny liczy się jako obcy.
  3. Ukrycie ramki klasą CSS albo regułą z zewnętrznego arkusza jest niewidoczne — liczą się tylko atrybuty znacznika; wzorzec łapie za to width=0 także w atrybutach typu data-width.
  4. Severity niespójna: helper wysoka, polityka niska.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/infection_check.py · CREATO_PING/helpers/html_fetch.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/helpers/security_testy.py · CREATO_PING/skaner/kohorty.toml · CREATO_PING/skaner/scenariusze/premium_pelny.toml · CREATO_PING/skaner/scenariusze/tani_ciezki.toml · CREATO_PING/skaner/scenariusze/tani_lekki.toml · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 01.10.2026
TAB. 3.2Co oznacza failtypów Findingów: 2

infection_foreign_script: bramka polityki otwarta (gate=true) → sprawa w skanerze → Obcy skrypt spoza listy znanych integracji — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. infection_hidden_iframe: bramka polityki otwarta (gate=true) → sprawa w skanerze → Ukryta ramka w treści strony — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. Waga 3 przy powadze niskiej w polityce ma w katalogu uzasadnienie: to zdarzenie do rozstrzygnięcia, nie dowód infekcji. Sprawy zakłada rytm; w badaniu droga kończy się na usterce przebiegu i wskaźniku badania.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B36.01Obcy skryptinfection_foreign_scriptNiskaNiepewnedo weryfikacjitak / niewaga 3 → ocena 5–6 (żółty)Potwierdź, że skrypt jest znany. Jeśli nie, usuń go.
B36.02Ukryty iframeinfection_hidden_iframeNiskaNiepewnedo weryfikacjitak / niewaga 3 → ocena 5–6 (żółty)Sprawdź źródło iframe'a w kodzie strony.
TAB. 3.3B36.01 · Obcy skryptwersja 2 · 01.10.2026
Kod i kluczB36.01 · infection_foreign_script · w tabeli typów
Co znaczySkrypt spoza białej listy; zwykle legalna integracja (PayU, Klaviyo, chat).
Kiedy powstajeW HTML jest co najmniej jeden <script ... src="..."> z adresem absolutnym (zaczyna się od //, http:// lub https://), którego host nie jest domeną strony ani jej subdomeną i nie jest równy ani subdomeną żadnej pozycji SCRIPT_WHITELIST (m.in. gstatic.com, googleapis.com, google.com, googletagmanager.com, cloudflare.com, jsdelivr.net, unpkg.com, jquery.com, wp.com, facebook.net, hotjar.com, clarity.ms, payu.com, przelewy24.pl, klaviyo.com, elfsight.com, cookiebot.com, cookieyes.com, tawk.to, smartsupp.com, hubspot.com, trustindex.io, inpost.pl, vetineo.com — pełna lista ok. 60 domen).Whitelista: infection_check.py:58–77; porównanie hosta: :143–149. Wejście wspólne dla infection_*: GET {scheme}://{domena}/ (follow_redirects, max 5, cap 3 MB, timeout http 5 s, connect 5 s) z UA „CREATO_PING/1.0 (+monitoring; contact: tomek@creato.pl)”; przy 403/406/415/429/451 jedna powtórka z nagłówkami przeglądarki. Heurystyki działają tylko, gdy ten fetch ma status_code < 400 (html_fetch.py:206). Uruchamiane na poziomie p3 i p4.
Severity · pewnośćNiska · Niepewne
Skutek dla stronydo weryfikacji · zakłada Finding · alarm nie
Waga → ocenawaga 3 → ocena 5–6 (żółty)
KlasyfikacjaCWE: CWE-829 (Inclusion of Functionality from Untrusted Control Sphere)OWASP Top 10:2025: A08:2025 Software or Data Integrity FailuresMITRE ATT&CK 19.2: T1608.004 Stage Capabilities: Drive-by Target (ślad)OCSF 1.9.0: Detection Finding (class_uid 2004)
Rekord OCSFfinding_info.analytic.uid = "B36.01" · analytic.name = "infection_foreign_script" · finding_info.types = ["B36 Obce skrypty i ukryte ramki"]
Co zrobićPotwierdź, że skrypt jest znany. Jeśli nie, usuń go.
Wersje typu
  1. v1 · 01.10.2026 — kod B36.01 nadany; wydzielony z B06 przy rozbiciu parametru (finding-codes.ts)
  2. v2 · 01.10.2026 — polyfill.io zdjęty z listy zaufanych skryptów (68 → 67): skrypt z tej domeny otwiera Finding (doc/stan.md 2026-10-01 (10))
TAB. 3.4B36.02 · Ukryty iframewersja 1 · 01.10.2026
Kod i kluczB36.02 · infection_hidden_iframe · w tabeli typów
Co znaczyIframe 0×0; zwykle Tag Manager lub Pixel.
Kiedy powstajeW HTML jest ≥ 1 tag <iframe ...>, którego atrybuty pasują do display\s*:\s*none|visibility\s*:\s*hidden|width\s*=\s*['"]?0|height\s*=\s*['"]?0 (case-insensitive), z pominięciem iframe'ów zawierających w atrybutach 'googletagmanager.com/ns.html' albo 'gform_ajax_frame'.Wyjątki GTM i Gravity Forms zaszyte w kodzie: infection_check.py:171–174. Regex width/height=0 łapie każdą wartość zaczynającą się od cyfry 0. Wejście wspólne dla infection_*: GET {scheme}://{domena}/ (follow_redirects, max 5, cap 3 MB, timeout http 5 s, connect 5 s) z UA „CREATO_PING/1.0 (+monitoring; contact: tomek@creato.pl)”; przy 403/406/415/429/451 jedna powtórka z nagłówkami przeglądarki. Heurystyki działają tylko, gdy ten fetch ma status_code < 400 (html_fetch.py:206). Uruchamiane na poziomie p3 i p4.
Severity · pewnośćNiska · Niepewne
Skutek dla stronydo weryfikacji · zakłada Finding · alarm nie
Waga → ocenawaga 3 → ocena 5–6 (żółty)
KlasyfikacjaCWE: CWE-829 (Inclusion of Functionality from Untrusted Control Sphere)OWASP Top 10:2025: A08:2025 Software or Data Integrity FailuresMITRE ATT&CK 19.2: T1608.004 Stage Capabilities: Drive-by Target (ślad)OCSF 1.9.0: Detection Finding (class_uid 2004)
Rekord OCSFfinding_info.analytic.uid = "B36.02" · analytic.name = "infection_hidden_iframe" · finding_info.types = ["B36 Obce skrypty i ukryte ramki"]
Co zrobićSprawdź źródło iframe'a w kodzie strony.
Wersje typu
  1. v1 · 01.10.2026 — kod B36.02 nadany; wydzielony z B06 przy rozbiciu parametru (finding-codes.ts)
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
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com