Proyek 001: Mythic tayang publik.
Hari ini proyek pertama lab berpindah dari repo ke catatan: Mythic — mitigasi bot adaptif, dibangun sebagai pengganti captcha untuk era di mana captcha kalah. AGPL-3.0, sepenuhnya publik, mulai hari ini.
Captcha sudah mati, dan kematiannya terukur
Solving farm menjual seribu jawaban lebih murah dari makan siang. Model vision membaca puzzle gambar seperti teks. Stealth browser berjalan melewati pemeriksaan fingerprint yang seharusnya menangkap mereka. Setiap puzzle statis berbagi satu mode kegagalan: satu solver, sekali ditemukan, membunuhnya selamanya. Ekonominya berpihak pada penyerang di setiap langkah — maka kami berhenti mencoba membangun puzzle yang lebih baik dan mulai menetapkan harga penyalahgunaan.
Tezisnya: jangan pernah percaya klien
Mythic menganggap browser hostile secara default. Setiap byte yang datang dari klien adalah input adversarial — maka SDK klien adalah sensor, bukan hakim. Keputusan terjadi di sisi server, dalam risk engine deterministik yang mengeluarkan alasan yang bernama dan bisa diaudit.
Penetapan harga penyalahgunaan dibuat berlapis: proof-of-work adaptif berbiaya sekitar satu detik bagi manusia di dalam web worker — dan biaya yang sama, per request, selamanya, bagi bot farm. Trafik berisiko mendapat challenge yang lebih keras. Aksi kritis bisa menuntut bukti kriptografis. Dan vonis berjalan sebagai token berumur pendek bertanda tangan Ed25519 yang backend-mu verifikasi secara lokal — tanpa callback.
GBR. 1 — Satu detik tidak berarti apa-apa bagi manusia dan berarti segalanya bagi farm yang menjalankan sejuta request.
Vonis adalah token, bukan callback
Ketika server memutuskan, ia menandatangani keputusan — skor risiko, difficulty, kedaluwarsa — dengan Ed25519. Origin-mu memverifikasinya secara lokal dengan kunci publik dari endpoint JWKS. Tanpa callback per-request ke mythicd, tanpa shared secret yang bisa bocor:
claims, err := xtoken.VerifyToken(pub, token)
if err != nil {
// reject: malformed, bad signature, or expired
}
// claims.Decision and claims.Risk are yours to enforce;
// verification only proves mythicd signed these claims.
Permukaan HTTP-nya dua endpoint. Challenge masuk, bukti keluar:
$ curl -s mythicd:8080/v1/challenge \
-d '{"site_key":"sk_live_..."}'
# → {"id":"ch_01J…","difficulty":18,…}
# solve the SHA-256 PoW, then:
$ curl -s mythicd:8080/v1/verify \
-d '{"challenge_id":"ch_01J…","nonce":"48291033"}'
# → decision token (or a harder challenge)
Kami coba menembusnya duluan
Sebelum peluncuran, kami menjalankan serangannya sendiri. Badai sepuluh ribu mutasi atas format token menangkap bug acceptance nyata: string berbeda yang ter-decode ke byte bertanda tangan yang sama. Sesi chaos langsung menemukan satu header palsu mengalahkan rate limiter per-IP dua puluh dari dua puluh. Keduanya diperbaiki. Keduanya dipin regression test. Sebuah fuzzer kini menggiling jalur verifikasi di CI setiap push. Laporan bypass adalah bagian paling berguna — itulah budaya yang ingin proyek ini beri imbalan.
Yang jujur belum bisa dilakukan
v0 kalah dari operator bermodal dengan stealth browser dan solver native. Kami menuliskannya di threat model, tertulis. Jawabannya roadmap, bukan vibes: behavioral biometrics, step-up kriptografis, learning engine. Publik secara default berarti celahnya juga publik.
Lisensi
Semuanya — engine dan SDK — AGPL-3.0-or-later. Baca, clone, tembus. Kalau berhasil menembus, beri tahu kami duluan, secara privat. Kontribusi diterima dengan CLA di dalam repo.
Proyek 001 tayang. Proyek 002 sudah antre.
— XEY LABS, HARI PELUNCURAN