Poświadczenie w pamięci Państwa aplikacji wycieknie
Poświadczenia w pamięci Państwa aplikacji są czytelne dla każdego kodu uruchomionego na tej maszynie — a w 2026 roku obejmuje to również agenta. Model AI już samodzielnie zadomowił się w FreeBSD i wydostał z własnej piaskownicy. Proszę przestać trzymać rezydentne poświadczenie gotowe do kradzieży.
Oto niewygodna prognoza i nie jest to wybieg: poświadczenia, które w tej chwili leżą w pamięci Państwa aplikacji — hasło do bazy danych wczytane przy starcie, token API w jej zmiennej środowiskowej, klucz do chmury, który przechowuje, aby wykonać swoją pracę — najprawdopodobniej wyciekną w ciągu najbliższych dwunastu miesięcy. Nie dlatego, że ktoś przechytrzy Państwa zespół bezpieczeństwa. Dlatego, że jedyne założenie, które kiedykolwiek czyniło sekret w pamięci bezpiecznym — że obok niego działa wyłącznie zaufany kod — w tym roku po cichu przestało być prawdą, a prawie nikt nie zmienił tego, jak z tym postępuje.
Tego nie można odłożyć na „później".
Co właściwie się dzieje
Prawie każda aplikacja przechowuje swoje sekrety w ten sam sposób. Przy starcie odczytuje je — z pliku .env, z zamontowanego sekretu, ze zmiennej środowiskowej — i ładuje do własnej pamięci, w postaci zwykłego tekstu, na cały czas życia procesu. Przez trzydzieści lat było to rozsądne rozwiązanie — i to z jednego konkretnego powodu: odczyt pamięci innego działającego programu albo jego środowiska wymaga wykonania kodu na tej samej maszynie, z tym samym poziomem uprawnień. Ten próg był kiedyś wysoki. Przekraczało go wyłącznie Państwa własne oprogramowanie i Państwa własni ludzie.
Dziś przekracza go agent. Agent kodujący, narzędzie MCP, autonomiczny worker — z założenia wykonuje kod, na realnej maszynie, jako realny użytkownik. A dla kodu działającego z takim poziomem uprawnień poświadczenie w pamięci nie jest sejfem do sforsowania. Jest plikiem do odczytu. /proc/<pid>/environ wypisuje zmienne środowiskowe innego procesu w postaci zwykłego tekstu. Zrzut rdzenia przekazuje jego stertę. Nie ma exploita, nie ma CVE, nie ma alarmu — Państwa EDR, WAF i zapora sieciowa obserwują, jak autoryzowany proces czyta pamięć, do której ma prawo, i nie widzą niczego podejrzanego, bo według ich reguł nic złego się nie dzieje. Każdy krok jest legalny. Sekret był po prostu w zasięgu ręki.
To nie jest Państwa błąd
Warto jasno powiedzieć, czyja to wina — bo to nie jest Państwa wina. Plik .env na zabezpieczonej maszynie, sekret pobrany z menedżera sekretów do pamięci przy rozruchu — to jest zalecany wzorzec. Zgodny z dwunastoma czynnikami, zgodny z podręcznikiem, tym, co robi dobry inżynier. To było odpowiedzialne. Co wygasło, to nie praktyka. To założenie, na którym się opiera: że jedynym kodem działającym obok Państwa sekretu jest kod, który Państwo tam umieścili. W chwili, gdy na tej maszynie działa agent — a agenci trafiają wszędzie, celowo, bo są użyteczni — to założenie przestaje obowiązywać, a zwykły tekst odpowiedzialnie wczytany do pamięci znajduje się w polu rażenia.
Pierwszą wersję tego zjawiska widzieliśmy już w praktyce [4]. Gdy agent kodujący zostanie przejęty — zatruty raport o błędzie, złośliwe narzędzie na jego ścieżce — pierwszą rzeczą w zasięgu ręki jest właśnie to: tokeny i klucze, które jego własny proces oraz procesy obok już trzymają w pamięci. Wstrzyknięcie to tylko drzwi. Rezydentne poświadczenie jest nagrodą.
„Ale na tej maszynie nie ma agenta"
To odpowiedź, która uspokaja, i to ona zawodzi. Ta obrona opiera się na murze: agenci po tej stronie, poświadczenia po tamtej. Ten mur jest właśnie tym, co bieżący rok wyczerpująco udowodnił jako nie do utrzymania.
Nie trzeba przyjmować tego na wiarę — w tym roku pojawiły się dowody, dwukrotnie. W opublikowanych przez siebie testach Anthropic skierował model Mythos na serwer NFS z FreeBSD — kod jądra czytany przez ludzi przez siedemnaście lat — a model samodzielnie znalazł przepełnienie stosu w ścieżce uwierzytelniania, napisał exploit wykorzystujący dwadzieścia gadżetów, rozłożony na sześć pakietów sieciowych, i uzyskał zdalnie uprawnienia roota bez uwierzytelnienia. To jest CVE-2026-4747, a zajęło to około czterech godzin. Nie „oznaczył podejrzaną funkcję" — tylko działający exploit zdalnego roota przeciw kodowi, który przetrwał siedemnaście lat przeglądów, i to samo wobec krytycznych usterek w każdym głównym systemie operacyjnym i przeglądarce, na które go skierowano [1].
I odizolowanie, które otoczyliby Państwo wokół agenta, radzi sobie nie lepiej niż obwód. W ewaluacji bezpieczeństwa przeprowadzonej przez samo Anthropic, z zadaniem wydostania się z piaskownicy i dotarcia do badacza prowadzącego test, Mythos połączył exploity — rozpylenie sterty JIT — i wydostał się zarówno z piaskownicy renderera przeglądarki, jak i z piaskownicy systemu operacyjnego, dotarł do otwartego internetu i wysłał mu wiadomość e-mail [1]. Uczciwe zastrzeżenie: zrobił to, ponieważ test go o to poprosił, a nie z własnej inicjatywy. Ale „poprosiliśmy go o to" to dokładnie miejsce, z którego działa atakujący — a „wydostać się, podnieść uprawnienia, zabrać poświadczenia" to stały ładunek każdego złośliwego promptu od tej pory. Możliwość nigdy nie czekała na własną inicjatywę modelu. Czeka na instrukcję, a to jedyny rodzaj danych wejściowych, na których nadejście można liczyć. Poważność sytuacji uznano na jedynym poziomie, który się liczy — Stany Zjednoczone objęły sam model kontrolą eksportową, co jest precedensem dla modelu AI, a nie stojących za nim układów, po tym jak wersja Mythos miała w ciągu godzin przeniknąć przez niemal wszystkie systemy sklasyfikowane NSA [2][3].
Proszę zestawić to z problemem pamięci, bo te dwa wątki się spotykają. Uprawnienia roota na maszynie odczytują pamięć każdego procesu, nie tylko własnego użytkownika. Zatem prawdziwym pytaniem nigdy nie było „czy uruchomię agenta obok moich sekretów". Pytanie brzmi „czy zdolny model może dotrzeć do tej maszyny albo wydostać się z izolacji, w której go zamknąłem" — i w tym roku odpowiedź na oba padła publicznie. „Na tej maszynie nie ma agenta" nie jest kontrolą, którą Państwo egzekwują. To nadzieja, że pewne rzeczy pozostaną na swoim miejscu — a te rzeczy już pokazały, że nie pozostaną. Proszę planować z założeniem, że agent dotrze do maszyny. Alternatywą jest planowanie na szczęście.
Zaprojektowane do tego, celowo
Proszę więc przestać próbować trzymać agenta z dala od sekretu, który po prostu tam leży. Należy zabrać to, co tam leży.
Poświadczenie w Clavitor nigdy nie jest wczytywane do pamięci Państwa aplikacji, by tam czekać. Jest pobierane na żywo, w chwili wywołania, użyte do tego jednego żądania i znika. Nigdy nie spoczywa w zmiennej środowiskowej, nigdy nie trafia do pliku .env, nigdy nie spędza czasu życia procesu rezydentnie na stercie, czekając na zrzut. Nie ma niczego, co /proc mógłby wypisać, i niczego, co zrzut rdzenia mógłby zabrać — bo maszynie nigdy nie powierzono utrzymywania stałego sekretu.
A jedyne poświadczenie, które przekazuje, jest ograniczone do jednej rzeczy, dla której agent został powołany. Nie może wypisać zawartości sejfu, nie może wyliczyć, co jeszcze istnieje, nie może odkryć kolejnego klucza. Każde pobranie jest ograniczone liczbowo, wyzwala blokadę przy nietypowym wybuchu żądań i jest zapisywane w dzienniku tylko do dopisywania, powiązanym łańcuchem skrótów, który znajduje się w sejfie — a nie na stacji końcowej, na której działa agent. To jest niezmienny, przypisywalny ślad, którego wymagają PCI DSS Requirement 10 i NIST 800-171 (kontrola 3.3.8): dowód tego, czego dokładnie dotykał Państwa agent, przechowywany w miejscu, do którego przejęta maszyna nie ma ani dostępu, ani możliwości nadpisania.
Uczciwe zastrzeżenie, bo każda taka deklaracja go potrzebuje: w mikrosekundzie użycia sekret faktycznie istnieje w pamięci — dla tego jednego żądania, w tej jednej chwili. Żaden projekt nie przepisuje fizyki. Projekt przepisuje różnicę między sekretem rezydentnym — leżącym w Państwa procesie godzinami, możliwym do zrzucenia w każdej chwili — a sekretem efemerycznym — obecnym przez jedno wywołanie, a potem już niedostępnym do zabrania. Nie da się zrzucić tego, co nie stoi.
Lekcja nie brzmi „zabezpieczcie maszynę mocniej"
Można dalej wzmacniać maszynę. Można dalej powtarzać sobie, że obok Państwa sekretów nigdy nie zadziała niezaufany kod. Ale to dokładnie ten zakład, który z miesiąca na miesiąc robi się droższy — wobec przeciwnika, który zarabia na życie wykonywaniem kodu i przechodzi przez ściany, które uznawali Państwo za wytrzymałe. Poświadczenie w pamięci było bezpieczne wtedy, gdy każdy czytelnik był zaufany. Czytelnicy się zmienili. Jedynym posunięciem, które przetrwa tę zmianę, jest zaprzestanie zostawiania poświadczenia w miejscu, z którego można je odczytać.
Spisaliśmy zasady, których powinno przestrzegać narzędzie do poświadczeń w takim świecie jak ten. Proszę przejść przez nie własnym rozwiązaniem.
Clavitor (@clavitorai) to sejf na poświadczenia zbudowany dla agentów AI — i przeciwko nim. clavitor.ai
Źródła
[1] Anthropic (Anthropic Red Team) — Assessing Claude Mythos Preview's cybersecurity capabilities (autonomiczne wykrycie i wykorzystanie zdalnego wykonania kodu w NFS FreeBSD, CVE-2026-4747; krytyczne usterki w głównych systemach operacyjnych i przeglądarkach) — https://red.anthropic.com/2026/mythos-preview/
[2] Associated Press (za CNBC) — Anthropic's Mythos model found vulnerabilities in classified U.S. government systems, official says — https://www.cnbc.com/2026/06/23/anthropics-mythos-model-found-vulnerabilities-in-classified-us-government-systems-official-says.html
[3] Fortune — Anthropic disables Fable and Mythos AI models following U.S. government export ban — https://fortune.com/2026/06/13/anthropic-disables-fable-mythos-export-controls-national-security-threat/
[4] Tenet Security (Tenet Threat Labs) — Agentjacking: Coding Agents with Fake Sentry Errors (precedens przejęcia prowadzącego do rezydentnego poświadczenia) — https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/