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

Ekspozycja .env

ważność krytycznamierzonysposób exposure

Czy plik .env jest dostępny publicznie. Zawiera klucze API i hasła do bazy — krytyczny wyciek.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 10

Ekspozycja .env to parametr monitoringu stron internetowych, który sprawdza, czy pod adresem /.env w katalogu głównym witryny serwer oddaje zawartość pliku, zamiast odmówić dostępu albo zgłosić jego brak. Pomiar kończy się jednym z trzech wyników: plik dostępny publicznie, plik niedostępny albo nie udało się uzyskać odpowiedzi. Plik .env jest plikiem tekstowym ze zmiennymi środowiskowymi, które biblioteka dotenv wczytuje do środowiska procesu aplikacji [2].

Jak działa

Metodyka Twelve-Factor App nazywa konfiguracją wszystko, co zmienia się między wdrożeniami aplikacji, w tym dane dostępowe do usług zewnętrznych, i zaleca trzymanie jej w zmiennych środowiskowych [1]. Jej test poprawności brzmi: kod źródłowy dałoby się w każdej chwili upublicznić bez ujawnienia żadnych danych dostępowych [1]. Plik .env przenosi tę zasadę na dysk. Dokumentacja dotenv każe utworzyć go w katalogu głównym projektu i zapisywać w nim wiersze w postaci NAZWA="wartość", na przykład klucz API [2]. Na pytanie, czy plik trafia do repozytorium, odpowiada „nie”, chyba że jest zaszyfrowany [2].

Problem zaczyna się wtedy, gdy katalog główny projektu jest jednocześnie katalogiem, z którego serwer WWW podaje pliki. W nginx ścieżka pliku powstaje przez proste dopisanie adresu z żądania do wartości dyrektywy root [7], więc żądanie /.env wskazuje wprost na plik w tym katalogu. Plik, którego rozszerzenia nie obsługuje żaden interpreter, serwer zwykle zwraca jako tekst, zamiast go wykonać. Przewodnik testowania OWASP pokazuje to na kopii login.asp.old, która oddaje kod źródłowy strony [4].

RYS. 1.1Żądanie pliku .env: trzy odpowiedzi

Domyślny plik konfiguracyjny Apache HTTP Server zawiera blok <Files ".ht*"> z dyrektywą Require all denied, opisany jako ochrona plików .htaccess i .htpasswd przed odczytem przez klientów [6]. Wzorzec obejmuje nazwy zaczynające się od .ht, więc .env do niego nie pasuje. W nginx reguły z wyrażeniem regularnym oznacza się modyfikatorem ~, sprawdza w kolejności wystąpienia w konfiguracji, a pierwsze dopasowanie kończy wyszukiwanie [7]. Blok odmowy dla ścieżek z kropką, np. location ~ /\., działa więc tylko wtedy, gdy stoi przed innymi blokami wyrażeń regularnych, które mogłyby przechwycić to samo żądanie [7].

Sam kod 200 nie przesądza o wycieku. Według OWASP odpowiedź 200 zwykle oznacza, że zasób istnieje, o ile serwer nie podaje własnej strony „nie znaleziono” z kodem 200 [4]. Rozstrzyga treść: plik .env składa się z wierszy zmiennych, a nie z dokumentu HTML.

Standardy i specyfikacje

  • The Twelve-Factor App, rozdział „Config” oddziela konfigurację od kodu i zauważa, że pliki konfiguracyjne trzymane poza repozytorium łatwo przez pomyłkę do niego dodać [1].
  • OWASP Secrets Management Cheat Sheet stwierdza, że wiele organizacji trzyma sekrety otwartym tekstem w kodzie i plikach konfiguracyjnych [3], a zmienne środowiskowe są zwykle dostępne dla wszystkich procesów i mogą trafić do logów [3]. Po wycieku zaleca kolejno: natychmiastowe unieważnienie ujawnionych kluczy, szybkie wygenerowanie nowych, usunięcie sekretów z narażonego systemu oraz dostęp zespołu reagowania do historii sekretu [3].
  • OWASP WSTG-CONF-04 opisuje pliki konfiguracyjne, logi i kopie zapasowe pozostawione w katalogach dostępnych dla serwera WWW jako źródło wycieku, w tym danych dostępowych do bazy [4].
  • CWE-538 („Insertion of Sensitive Information into Externally-Accessible File or Directory”) to słabość polegająca na umieszczeniu informacji wrażliwych w pliku lub katalogu dostępnym dla podmiotów uprawnionych do tego pliku, ale nie do zapisanych w nim informacji [5]. W widoku badawczym MITRE jest potomkiem CWE-200, „Exposure of Sensitive Information to an Unauthorized Actor” [5].

Zagrożenia i skutki

Masowe skanowanie. W sierpniu 2024 roku Unit 42 opisał kampanię wymuszeń, której infrastruktura skanowała ponad 230 milionów unikalnych celów w poszukiwaniu odsłoniętych plików środowiskowych [8]. Funkcja uruchamiana w chmurze przechodziła po liście domen i dla każdej wysyłała żądanie o plik /.env [8]. Atakujący zebrali pliki .env z co najmniej 110 000 domen i ponad 90 000 unikalnych zmiennych, z czego 7 000 należało do usług chmurowych, a 1 500 do kont w mediach społecznościowych [8].

Nadużycie kluczy. Z przejętymi kluczami chmury atakujący kopiowali zawartość magazynów danych, kasowali ją i zostawiali w pustym magazynie żądanie okupu, bez szyfrowania danych [8]. Unit 42 podkreśla, że przyczyną była błędna konfiguracja po stronie ofiar, a nie podatność dostawców chmury [8].

RYS. 1.2Od wycieku klucza do nadużycia

Usunięcie pliku nie kończy incydentu. Klucz, który był choć raz dostępny publicznie, OWASP każe unieważnić i zastąpić nowym [3]. Skasowanie pliku zamyka dostęp do niego, ale nie odbiera kopii temu, kto już ją pobrał.

Fałszywe trafienia. Strona błędu podawana z kodem 200 wygląda w samym kodzie odpowiedzi jak istniejący plik [4]. Pomiar oparty wyłącznie na kodzie statusu myli wtedy zwykłą stronę HTML z wyciekiem.

Przykłady

Klasyczna instalacja WordPressa trzyma dane połączenia z bazą w pliku wp-config.php w katalogu głównym instalacji [10]. Plik .env pojawia się przy nakładkach i szkieletach projektów, takich jak Bedrock, który zarządza ustawieniami przez pliki .env i zmienne środowiskowe, a jako katalog publiczny wskazuje podkatalog web, żeby pliki wrażliwe zostały poza drzewem serwera [9].

SytuacjaOdpowiedź na GET /.envZnaczenie
.env w katalogu głównym projektu, który jest też katalogiem serwera [2] [7]200 z wierszami zmiennychwyciek: klucze do unieważnienia [3]
Bedrock: katalog publiczny web, konfiguracja poza nim [9]brak pliku pod tym adresemplik poza drzewem serwera
Apache z domyślną regułą dla .ht* [6]zależy od położenia plikureguła nie obejmuje .env
nginx z blokiem odmowy dla ścieżek z kropką przed innymi wyrażeniami [7]odmowa dostępuplik istnieje, ale nie jest podawany
Serwer z własną stroną „nie znaleziono” podawaną z kodem 200 [4]200 z dokumentem HTMLfałszywe trafienie, treść nie jest plikiem .env
Masowy skaner z listą domen [8]jedno żądanie o /.env na domenęodsłonięty plik zostaje zebrany automatycznie
TAB. 1.1Przypisy10
  1. [1] The Twelve-Factor App — III. Config · Adam Wiggins / 12factor.net
  2. [2] dotenv — README · motdotla/dotenv
  3. [3] Secrets Management Cheat Sheet · OWASP
  4. [4] WSTG-CONF-04 — Review Old Backup and Unreferenced Files for Sensitive Information · OWASP Web Security Testing Guide
  5. [5] CWE-538: Insertion of Sensitive Information into Externally-Accessible File or Directory · MITRE
  6. [6] httpd.conf.in — domyślna konfiguracja Apache HTTP Server · Apache Software Foundation
  7. [7] Module ngx_http_core_module — dyrektywy location i root · nginx
  8. [8] Leaked Environment Variables Allow Large-Scale Extortion Operation in Cloud Environments · Palo Alto Networks Unit 42
  9. [9] Bedrock — WordPress boilerplate · Roots
  10. [10] wp-config.php — Advanced Administration Handbook · WordPress.org
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 exposure
W 30 dni
0przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
—33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 22.09.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: Ekspozycja .env
TAB. 3.1Pomiarpliki: 9
Obszar i ważnośćBezpieczeństwo · krytyczna (B05)
Workflow i częstotliwość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 exposure · CREATO_PING/helpers/exposure_check.py
Testy
  1. Tylko przebieg P3; domena bez rekordu A pominięta na wstępie. Na jednej stronie do 4 sond naraz.
  2. Strażnik: GET losowej, nieistniejącej ścieżki .html bez przekierowań. Kod 200 z treścią = zero sond i jedno ustalenie exposure_scan_unreliable.
  3. GET https://domena/.env z własnym UA, bez podążania za przekierowaniami; treść czytana strumieniem do 64 KB, oceniane pierwsze 5000 znaków.
  4. Reguła: kod 200 i niepusta treść. Zawartość nie jest sprawdzana — ani wiersze NAZWA=wartość, ani brak HTML-a.
  5. To jedno z 25 żądań helpera exposure_check na stronę (xmlrpc, enumeracja, kopie wp-config, debug.log, .git, kopie zapasowe, zrzuty SQL, manifesty).
Typ wyniku0 albo 1 ustalenie exposure_env; zamiast wszystkich sond ekspozycji jedno exposure_scan_unreliable, gdy serwer odpowiada 200 na losową ścieżkę
Jednostkabrak — wynik jakościowy; w dowodzie ścieżka, kod HTTP i długość treści. Pliki sekretów (.env, kopie wp-config, debug.log, zrzut bazy, archiwum, phpinfo) mają dowód „tylko skrót”: długość i skrót treści, nigdy fragment.
Próg i regułaTimeout odpowiedzi 15 s, połączenia 5 s. Reguła: kod 200 + niepusta treść = exposure_env. 403, 404, przekierowanie, błąd sieci i timeout = brak ustalenia.
Gdzie leżą pokrętłaCREATO_PING/helpers/exposure_check.py → PROBES (/.env, reguła 200+nonempty), _EXPOSURE_CAP, _PROBE_CONCURRENCY, _soft_200CREATO_PING/helpers/config.py → TIMEOUTS["exposure"], TIMEOUTS["security_connect"]CREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] exposure_env
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. Reguła nie sprawdza, czy to naprawdę plik .env: kod 200 ze stroną HTML daje ustalenie pilne. Strażnik sonduje jedną losową ścieżkę .html, więc serwer zwracający 200 tylko dla wybranych ścieżek go przechodzi.
  2. Pole alert=true w polityce nie jest czytane ani przez kod, ani przez skaner — wyższy status strony nie wysyła sam z siebie powiadomienia — o mailu decyduje osobny zakres w skaner/akcje.toml.
  3. Brak trzeciego stanu: timeout i błąd sieci dają pustą listę; błąd idzie do logu przebiegu.
  4. Przekierowania nie są śledzone: domena przekierowująca wszystko daje 3xx, a wynik wygląda jak „pliku nie ma”.
  5. Brak sygnału zamknięcia: po usunięciu pliku sprawa nie zamyka się przy następnym pomiarze.
  6. Sprawdzana jest tylko ścieżka /.env w katalogu głównym; warianty .env.production, .env.bak i podkatalogi nie są sondowane.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/exposure_check.py · CREATO_PING/helpers/config.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/helpers/security_runner.py · CREATO_PING/skaner/adapter_clickup.py · CREATO_PING/skaner/sprawy.py · CREATO_PING/skaner/klasyfikacja.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026
TAB. 3.2Co oznacza failtypów Findingów: 2

exposure_env: bramka polityki otwarta (gate=true) → sprawa w skanerze → Plik .env z hasłami dostępny publicznie — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. exposure_scan_unreliable: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Serwer oddaje 200 na każdy adres — sondy nierozstrzygające” (waga 3) nie wchodzi do wskaźnika strony. Helper nie wysyła sygnału zamknięcia: sprawę zamyka człowiek albo audyt z werdyktem, nie kolejny czysty pomiar.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B05.01Publiczny plik .envexposure_envKrytycznaEwidentneotwarta podatnośćtak / takwaga 3 → ocena 5–6 (żółty)Zablokuj dostęp i zmień wszystkie ujawnione sekrety.
B05.02Nie dało się sprawdzić ekspozycjiexposure_scan_unreliableNiskaPrawdopodobnie fałszywebez wpływunie / niewaga 3 — monitoring, oceny nie obniżaNic po stronie strony; liczone osobno.
TAB. 3.3B05.01 · Publiczny plik .envwersja 1 · 01.10.2026
Kod i kluczB05.01 · exposure_env · w tabeli typów
Co znaczyPlik .env z hasłami do bazy i kluczami API jest dostępny publicznie.
Kiedy powstajeGET /.env: status == 200 i niepusta treść po strip() (pierwsze 5000 znaków, check "200+nonempty"). Nie sprawdza formatu KEY=VALUE, więc strona HTML z kodem 200 też go zapala.Ocena :211-212. Dowód tylko skrót (DOWOD_TYLKO_SKROT :124-127).
Severity · pewnośćKrytyczna · Ewidentne
Skutek dla stronyotwarta podatność · zakłada Finding · alarm tak
Waga → ocenawaga 3 → ocena 5–6 (żółty)
KlasyfikacjaCWE: CWE-538 (Insertion of Sensitive Information into Externally-Accessible File or Directory)OWASP Top 10:2025: A01:2025 Broken Access ControlMITRE ATT&CK 19.2: T1552.001 Unsecured Credentials: Credentials In Files (warunek)OWASP ASVS 5.0.0: 13.4.7OCSF 1.9.0: Vulnerability Finding (class_uid 2002)
Rekord OCSFfinding_info.analytic.uid = "B05.01" · analytic.name = "exposure_env" · finding_info.types = ["B05 Ekspozycja .env"]
Co zrobićZablokuj dostęp i zmień wszystkie ujawnione sekrety.
Wersje typu
  1. v1 · 01.10.2026 — kod B05.01 nadany (finding-codes.ts)
TAB. 3.4B05.02 · Nie dało się sprawdzić ekspozycjiwersja 1 · 01.10.2026
Kod i kluczB05.02 · exposure_scan_unreliable · w tabeli typów
Co znaczySerwer odpowiada 200 na losową ścieżkę, więc Checks ekspozycji zostały pominięte — pusta lista nie znaczy „czysto”.
Kiedy powstajeStrażnik przed Checkami: GET /creato-ping-<8 znaków hex>.html bez przekierowań. Jeśli status == 200, a pierwsze 4096 bajtów po strip() są niepuste, zwraca wyłącznie ten finding (low, scan_complete=false) i nie uruchamia żadnego z 25 Checków.Emisja :392-402. Wyjątek sieci w strażniku daje None, więc Checks idą normalnie. gate=false, więc security_runner.py:289 go odrzuca; skaner/importuj.py:36 mapuje go na stan nie_dalo_sie.
Severity · pewnośćNiska · Prawdopodobnie fałszywe
Skutek dla stronybez wpływu · tylko statystyka (gate=false) · alarm nie
Waga → ocenawaga 3 — monitoring, oceny nie obniża
KlasyfikacjaOCSF 1.9.0: poza klasami Findingu
Rekord OCSFfinding_info.analytic.uid = "B05.02" · analytic.name = "exposure_scan_unreliable" · finding_info.types = ["B05 Ekspozycja .env"]
Co zrobićNic po stronie strony; liczone osobno.
Wersje typu
  1. v1 · 01.10.2026 — kod B05.02 nadany (finding-codes.ts)
ARK. 4

LOOP

pętli: 2
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ętle2 · zmian: 3 · wpływających na cały system: 3
Strażnik losowej ścieżki i dłuższy limit czasu dla sond ekspozycjizamknięta historyczna 2026-09-05

Sygnał: Tarcze antybotowe hostingu, strony parkingowe i serwery catch-all odpowiadają 200 na każdą ścieżkę, więc sondy oparte na kodzie 200 dawały „wystawiony” wszędzie. Równocześnie sondy na wolnych hostingach odpowiadały po około 15 s, a limit 5 s ucinał je bez śladu. · dotyczy też: Kopie wp-config.php, Ekspozycja .htaccess.bak, Dostępność xmlrpc.php, REST API: enumeracja użytkowników, Ekspozycja .git/HEAD, Dostępność readme.html, Dostępność wp-cron.php, Ekspozycja kopii zapasowych, Ekspozycja zrzutu bazy, Ekspozycja manifestów dev, Ekspozycja .DS_Store

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieprzegląd skanera: 200 na wszystko i ciche timeouty to fałszywe wyniki
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionestrażnik ścieżki, 15 s, logowanie błędów
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-09-05Przed sondami GET losowej, nieistniejącej ścieżki; odpowiedź 200 z treścią = zero sond i jedno ustalenie exposure_scan_unreliable (niska powaga, bez subtaska).helpers/exposure_check.py · config/incident_policy.tomlOdpowiedź 200 na losową ścieżkę dowodzi, że kod 200 na tym serwerze nic nie znaczy; dalsze sondowanie tarczy grozi banem IP monitoringu.cały system Obejmuje wszystkie sondy ekspozycji naraz i wprowadza typ „nie dało się sprawdzić”; tę samą konwencję dostało wykrywanie wtyczek. Ustalenie ma niską powagę, więc filtr przebiegu je odrzuca i w produkcji nie zostawia śladu.b0fc77cbez replayubez zapisu zatwierdzenia
2026-09-05Limit odpowiedzi z 5 s na 15 s i połączenia z 2 s na 5 s, przeniesione do config.py; błąd sieci sondy logowany zamiast cichego pustego wyniku; do 4 sond naraz na stronę.helpers/config.py · helpers/exposure_check.py · helpers/html_fetch.py · helpers/wp_fingerprint.pyWolne hostingi odpowiadały po około 15 s, a pusty wynik po timeoucie był nieodróżnialny od „sprawdzone, czysto”.cały system Limit połączenia 5 s przejęło wspólne pobieranie HTML całego skanu bezpieczeństwa i wykrywanie wersji — strony z wolnym TLS przestały wypadać z całego skanu.b0fc77cbez replayubez zapisu zatwierdzenia
Limit 64 KB czytanej odpowiedzi po awarii pamięcizamknięta historyczna 2026-07-19

Sygnał: Brak pamięci podczas skanu: publiczny debug.log jednej ze stron był bardzo duży, a klient HTTP buforował całą odpowiedź. · dotyczy też: Sitemap.xml, Kopie wp-config.php, Ekspozycja .htaccess.bak, Dostępność xmlrpc.php, REST API: enumeracja użytkowników, Ekspozycja .git/HEAD, Dostępność readme.html, Dostępność wp-cron.php, Ekspozycja kopii zapasowych, Ekspozycja zrzutu bazy, Ekspozycja manifestów dev, Ekspozycja .DS_Store

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieawaria procesu przypisana ścieżce debug.log
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionestrumień z limitem 64 KB
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-07-19Odpowiedź sondy czytana strumieniem do 64 KB; do oceny idzie pierwsze 5000 znaków.helpers/exposure_check.py · helpers/html_fetch.py · helpers/sitemap_check.pyDo rozpoznania ekspozycji wystarcza początek pliku; zmiana dotyczy sposobu czytania, nie werdyktu.cały system Brak pamięci w helperze zatrzymywał cały proces skanu bezpieczeństwa partii stron; ten sam limit dostało sprawdzenie sitemap.343b699bez replayubez zapisu zatwierdzenia
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