GeckoFlag adalah software yang berjalan di server Anda sendiri. Agar Anda dapat mempercayakan data proyek Anda dengan tenang, pengembang sendiri melakukan pengujian keamanan pada setiap rilis dan mempublikasikan isi serta hasilnya di halaman ini.
Halaman ini adalah catatan pengujian mandiri oleh pengembangIni bukan sertifikasi atau audit oleh pihak ketiga. Kami juga mempublikasikan apa saja yang diuji, sehingga Anda dapat menggunakannya sebagai bahan pertimbangan saat memutuskan untuk menggunakan GeckoFlag.
- Langkah keamanan dalam desain
- Pengujian setiap rilis
- Hasil pengujian versi terbaru
- Cakupan yang tidak diuji
- Melaporkan kerentanan
- Verifikasi file distribusi
- Pengaturan yang disarankan
Langkah Keamanan dalam Desain
GeckoFlag menyertakan langkah-langkah keamanan berikut secara standar. Semuanya aktif tanpa perlu pengaturan apa pun.
Perlindungan kata sandi
Kata sandi tidak disimpan dalam bentuk teks biasa, melainkan di-hash dengan bcrypt sebelum disimpan. Token reset kata sandi juga disimpan dalam bentuk hash, dan jumlah permintaan reset kata sandi dibatasi.
Pembatasan percobaan login
Login yang gagal dihitung per akun dan per alamat IP sumber koneksi, dan login dibatasi sementara jika jumlahnya melebihi batas tertentu. Ini meredam serangan brute force dan serangan yang menargetkan banyak akun.
Perlindungan CSRF
Token diverifikasi pada setiap pengiriman formulir untuk mencegah operasi palsu dari situs eksternal.
Perlindungan XSS
Rich text pada isu, komentar, Wiki, catatan, dan lainnya disimpan dan ditampilkan dengan hanya mempertahankan tag yang diizinkan oleh HTML Purifier. Tautan hanya diizinkan untuk http dan https. Teks yang dihasilkan oleh AI juga selalu melalui proses yang sama sebelum disimpan.
Perlindungan SQL injection
Operasi database menggunakan ORM CakePHP 5 dan prepared statement.
Validasi header Host
Tautan dalam email reset kata sandi, undangan, dan notifikasi dibuat berdasarkan domain yang terdaftar, bukan header Host dari permintaan. Header Host yang tidak sah tidak dapat digunakan untuk mengganti tautan dalam email dengan alamat eksternal.
Penyimpanan file
Gambar isu dan file proyek disimpan di luar folder publik, dan hanya disajikan setelah dipastikan bahwa orang yang melihatnya adalah anggota proyek. File dengan ekstensi yang dapat dijalankan, seperti PHP, tidak diterima.
Enkripsi API key
API key Claude untuk fitur AI dienkripsi sebelum disimpan di database.
Token API integrasi Claude
Integrasi Claude nonaktif secara bawaan dan hanya dapat digunakan jika administrator mengaktifkannya dan mengizinkannya untuk setiap pengguna. Untuk setiap token API hanya hash-nya yang disimpan, dan masa berlaku dapat ditetapkan. Mengubah kata sandi membuat token tidak berlaku. API memeriksa izin yang sama seperti layar, dan token hanya-baca tidak dapat mengubah apa pun.
Pembatasan alamat IP
Administrator dapat membatasi alamat IP yang diizinkan untuk mengakses.
Penutupan installer
Setelah penyiapan selesai, layar installer tidak dapat diakses lagi.
Perlindungan folder non-publik
Akses langsung ke folder konfigurasi, log, kode sumber, dan sejenisnya ditolak secara standar di Apache (untuk Nginx, lihat pengaturan yang disarankan).
Backup otomatis sebelum pembaruan
Backup dibuat secara otomatis sebelum pembaruan software.
Verifikasi tanda tangan file pembaruan
File pembaruan resmi dilengkapi tanda tangan digital pengembang (Ed25519). Sebelum pembaruan, tanda tangan dan isi semua file dicocokkan, dan file yang telah dimodifikasi atau file pembaruan yang tidak resmi tidak akan diterapkan.
Validasi unggahan gambar
Format gambar seperti avatar, thumbnail, dan logo ditentukan dari isi filenya, lalu disimpan dengan nama file acak. Dari folder penyimpanan gambar, hanya file gambar yang disajikan (di Apache). SVG tidak diterima.
Header keamanan
Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, dan Permissions-Policy dikirim untuk mencegah clickjacking dan kebocoran informasi ke situs eksternal. Jika dijalankan melalui HTTPS, Strict-Transport-Security juga dikirim agar browser selalu terhubung melalui HTTPS.
Manajemen sesi
Sesi dibuat ulang setiap kali login. Perubahan izin, penghapusan akun, dan perubahan kata sandi langsung berlaku juga pada sesi yang sedang login. Mengubah alamat email dan kata sandi memerlukan kata sandi saat ini.
Pengujian Keamanan pada Setiap Rilis
Sebelum merilis versi baru, kami melakukan pengujian berikut. Pengujian dilakukan di lingkungan pengujian dengan konfigurasi yang sama seperti lingkungan produksi, dan tidak dilakukan terhadap layanan yang sedang berjalan atau server pelanggan. Pengujian yang dilakukan untuk versi terbaru dicantumkan di “Hasil Pengujian Versi Terbaru”.
| Kategori | Isi pengujian | Alat / standar yang digunakan | Frekuensi |
|---|---|---|---|
| Library dependensi | Memeriksa apakah library yang digunakan memiliki kerentanan yang diketahui, dan membuat daftar library yang digunakan (SBOM) | composer audit, OSV-Scanner, CycloneDX | Setiap rilis |
| Analisis statis | Mendeteksi dari kode sumber jalur di mana nilai input mencapai proses berbahaya (XSS, SQL injection, dll.) | Psalm (analisis taint), PHPStan (level 5), Semgrep | Setiap rilis |
| Kebocoran informasi rahasia | Apakah kata sandi atau API key terdapat dalam kode sumber atau file distribusi | gitleaks | Setiap rilis |
| Pemindaian dinamis | Dalam keadaan login sebagai administrator dan pengguna biasa, mengirim permintaan serangan sungguhan dan memeriksa responsnya | Nuclei | Setiap rilis |
| Pengujian izin | Apakah isu, file, dan catatan dari proyek yang tidak diikuti dapat dilihat atau dioperasikan dengan mengubah ID di URL | Pengujian otomatis (PHPUnit), pemeriksaan manual | Setiap rilis |
| Unggahan file | Apakah file yang dapat dijalankan, file yang menyamar sebagai gambar, ZIP yang memanipulasi path, dan sejenisnya ditolak | Code review, pemeriksaan manual | Setiap rilis |
| XSS | Memasukkan string serangan ke deskripsi isu, komentar, Wiki, dan teks yang dihasilkan AI, lalu memeriksa apakah skrip dijalankan | Code review, pemeriksaan manual | Setiap rilis |
| Pemeriksaan per konfigurasi server | Untuk Apache dan Nginx, serta setiap cara penempatan folder publik, apakah file konfigurasi atau log dapat diakses secara langsung | Pemeriksaan manual | Setiap rilis |
| Ekstensi integrasi Claude | Kerentanan yang diketahui pada library yang digunakan ekstensi, penanganan token API, dan pembatasan tujuan permintaan | npm audit, gitleaks, code review | Setiap rilis ekstensi |
| Pemeriksaan mandiri dengan daftar periksa | Memeriksa autentikasi, sesi, validasi input, penanganan error, dan lainnya per item | Mengacu pada OWASP ASVS 5.0 Level 1, IPA (Jepang): How to Secure Your Website | Setiap versi mayor |
| Situs resmi | Pengaturan HTTPS dan header keamanan geckoflag.com | SSL Labs, Mozilla Observatory | Sebulan sekali |
Jika ditemukan masalah dengan tingkat keparahan “Tinggi” atau “Sedang”, rilis tidak dilakukan sampai masalah tersebut diperbaiki dan diuji ulang. Untuk tingkat “Rendah”, isinya ditinjau, lalu diperbaiki atau dicatat alasan mengapa tidak berdampak.
Kebijakan Pembaruan Library Dependensi
Kerentanan yang diketahui pada library yang digunakan GeckoFlag (seperti CakePHP) diperiksa pada setiap rilis. Jika ditemukan kerentanan yang berdampak pada GeckoFlag, kami akan merilis versi perbaikan dengan target waktu berikut.
- Tingkat keparahan “Kritis” dan “Tinggi”: dalam 14 hari sejak diumumkan
- Tingkat keparahan “Sedang”: dalam 30 hari sejak diumumkan
- Tingkat keparahan “Rendah”: pada rilis berikutnya (paling lambat dalam 90 hari)
Kerentanan yang tidak berdampak pada cara GeckoFlag menggunakan library tersebut pun akan diperbarui ke versi yang sudah diperbaiki pada rilis berikutnya. Library untuk pengembangan tidak disertakan dalam file distribusi.
Hasil Pengujian Versi Terbaru: v1.11.0
Pengujian kali ini mencakup perubahan sejak v1.10.0 (integrasi Claude, warna teks dan latar serta garis pemisah pada teks kaya, dan lainnya), dan sekaligus memperbaiki masalah yang sudah ada di versi sebelumnya. Jika Anda menggunakan v1.10.0 atau versi lebih lama, kami menyarankan pembaruan ke v1.11.0.
| Pengujian | Alat yang digunakan (versi) | Temuan (Tinggi / Sedang / Rendah) | Tindakan |
|---|---|---|---|
| Library dependensi | GitHub Advisory Database, FriendsOfPHP security-advisories (data per 2026-10-28; 89 paket) | 0 / 0 / 0 | Tidak ada kerentanan yang diketahui pada library yang disertakan dalam file distribusi. Kerentanan yang diketahui pada library khusus pengembangan telah diatasi dengan pembaruan di v1.11.0 (library khusus pengembangan tidak disertakan dalam file distribusi) |
| Analisis statis / code review | Psalm 5.26.1 (analisis taint), PHPStan 2.1.17 (level 5), Semgrep 1.182.1, code review manual (perubahan sejak v1.10.0: API dan token integrasi Claude, teks kaya, tetap masuk, pembaruan perangkat lunak; serta keluaran tautan di semua layar) | 1 / 1 / 3 | Masalah “Tinggi” dan “Sedang” serta 2 masalah “Rendah” telah diperbaiki di v1.11.0. Satu masalah “Rendah” yang tersisa hanya terjadi melalui tindakan pengguna itu sendiri, dan dampaknya dipastikan terbatas. Masalah “Tinggi” sudah ada sejak versi sebelumnya |
| Kebocoran informasi rahasia | gitleaks 8.24.2 | 0 / 0 / 0 | Kode sumber dan file distribusi sama-sama diperiksa. Kedua deteksi merupakan positif palsu (seperti string contoh di library eksternal) |
| Konfirmasi perbaikan | Pemeriksaan operasional di lingkungan pengujian (PHP 8.3, MariaDB 10.11, Apache 2.4, Nginx 1.24, Chromium) | — | Untuk setiap temuan, dipastikan bahwa masalah sebelum perbaikan tidak lagi dapat direproduksi |
| Pemindaian dinamis | Nuclei v3.11.1 (templat v10.5.1), tanpa login serta sebagai administrator dan anggota | 0 / 0 / 0 | Tidak ada masalah |
| Pengujian izin | PHPUnit 12.5 (454 pengujian otomatis. Selain pemeriksaan sebelumnya, dipastikan bahwa API integrasi Claude menolak permintaan tanpa token, dengan token hanya-baca, dari pengguna yang tidak diizinkan, dan saat fitur dinonaktifkan, serta tidak pernah menjangkau proyek yang tidak diikuti pengguna) | 0 / 0 / 0 | Tidak ada masalah |
| Pemeriksaan per konfigurasi server | Manual (2 cara penempatan folder publik di Apache 2.4 dan Nginx 1.24; 39 URL termasuk file konfigurasi, log, sesi, dan file tersimpan) | 0 / 0 / 1 | Diperbaiki di v1.11.0: akses langsung ke folder file versi lama (files) kini juga ditolak sepenuhnya di Apache. Tidak ada masalah lain |
| Daftar periksa | OWASP ASVS 5.0 Level 1 (70 item) | Memenuhi 50 dari 56 item yang berlaku | Tidak ditinjau kali ini (hasil v1.10.0 tetap berlaku) |
| Ekstensi integrasi Claude | npm audit, gitleaks 8.24.2, mcpb validate, code review manual (geckoflag-1.0.0.mcpb) | 0 / 0 / 0 | Tidak ada kerentanan yang diketahui yang memengaruhi library dalam file distribusi. Penanganan token API dan pembatasan tujuan permintaan (hanya HTTPS, tidak mengikuti pengalihan) telah diperiksa |
Hasil pengujian semua versi, termasuk versi sebelumnya, tersedia di “Hasil Pengujian Sebelumnya”.
Cakupan yang Tidak Diuji
Pengujian di atas memiliki keterbatasan berikut. Saat mempertimbangkan untuk menggunakan GeckoFlag, harap periksa juga poin-poin ini.
- Belum ada pengujian oleh pihak ketiga.Saat ini, code review atau penetration testing oleh pakar eksternal belum dilakukan.
- Lingkungan server pelanggan berada di luar cakupan pengujian.Keamanan sangat bergantung pada pengaturan dan status pembaruan OS, web server, PHP, dan database.
- Tidak semua lingkungan hosting telah diperiksa.Konfigurasi yang diuji terbatas pada yang tercantum di “Hasil Pengujian Versi Terbaru”.
- Layanan eksternal berada di luar cakupan.Keamanan API Anthropic yang digunakan oleh fitur AI, aplikasi desktop Claude yang digunakan oleh integrasi Claude, server pengiriman email, dan sejenisnya bergantung pada masing-masing penyedia.
- Tentang masalah yang tidak terdeteksi oleh alat otomatis.Jenis masalah yang tidak terdeteksi oleh alat (seperti kekurangan dalam logika bisnis) dilengkapi dengan pengujian manual, tetapi tidak semuanya dapat tercakup.
Melaporkan Kerentanan yang Anda Temukan
Jika Anda menemukan masalah yang diduga merupakan kerentanan GeckoFlag, harap hubungi kami langsung melalui saluran di bawah ini, bukan di forum publik. Pengembang membaca sendiri setiap laporan.
Saluran pelaporan: Hubungi kami melalui formulir kontak dengan memilih jenis pertanyaan “Laporan Kerentanan”
Informasi yang Perlu Disertakan
- Versi yang terdampak, serta layar atau fitur yang bermasalah
- Langkah-langkah untuk mereproduksi (sejauh memungkinkan)
- Dampak yang diperkirakan
- Lingkungan server Anda (PHP, web server, dll.)
Permohonan
- Lakukan verifikasi di lingkungan yang Anda kelola sendiri, dan jangan melakukan tindakan yang bersifat menyerang terhadap GeckoFlag yang dioperasikan oleh orang lain atau terhadap geckoflag.com.
Jika Anda menginginkannya, nama Anda akan dicantumkan sebagai ucapan terima kasih dalam informasi keamanan versi perbaikan.
SHA-256 File Distribusi
Anda dapat memastikan bahwa file yang diunduh identik dengan file resmi dengan mencocokkannya dengan nilai berikut.
| File | SHA-256 |
|---|---|
| GeckoFlag - 1.11.0.zip | 33354ac588c4cb4de2953c3c26a484953c2bb886f38196ba4bcf4fe629648399 |
| geckoflag-1.0.0.mcpb | 44f2c6dfc9f437856d0680920a327820d757a14116064faa6e46ad8a961d0747 |
Cara memeriksa: di Windows, jalankan Get-FileHash NamaFile -Algorithm SHA256 di PowerShell; di macOS dan Linux, jalankan shasum -a 256 NamaFile.
Pengaturan yang Disarankan untuk Penggunaan yang Aman
Keamanan GeckoFlag juga bergantung pada pengaturan server tempat GeckoFlag dipasang. Kami menyarankan pengaturan berikut.
- Selesaikan instalasi segera setelah mengunggah: Selama instalasi belum selesai, siapa pun yang mengetahui URL-nya dapat membuka layar penyiapan. Setelah file ditempatkan, segera selesaikan instalasi.
- Jalankan melalui HTTPS: Informasi login dan isi proyek dienkripsi selama komunikasi. Banyak layanan shared hosting menyediakan sertifikat SSL gratis. Perlu diperhatikan bahwa setelah situs dibuka sekali melalui HTTPS, browser akan terhubung ke alamat tersebut melalui HTTPS selama 1 tahun berikutnya (sejak v1.10.0). Harap berhati-hati jika Anda berencana berhenti menggunakan HTTPS.
- Atur folder publik (document root) ke webroot: File konfigurasi dan log akan berada di lokasi yang tidak dapat dilihat dari Web.
- Jika menggunakan Nginx, tambahkan pengaturan: .htaccess tidak berfungsi di Nginx. Tambahkan pengaturan terpisah untuk menolak akses ke folder non-publik dan agar PHP tidak dijalankan di folder unggahan gambar (webroot/img). Lihat contoh konfigurasi di Panduan (Instalasi).
- Perbarui ke versi terbaru: Perbaikan keamanan disediakan dalam versi terbaru. Dapatkan file pembaruan dari situs resmi dan periksa SHA-256-nya. Sejak v1.10.0, tanda tangan juga diverifikasi secara otomatis sebelum pembaruan.
- Gunakan versi PHP dan database yang masih didukung: PHP yang sudah habis masa dukungannya tidak lagi menerima perbaikan.
- Lindungi akun administrator: Gunakan kata sandi yang panjang dan sulit ditebak, dan berikan hak administrator hanya kepada orang yang membutuhkannya.
- Gunakan pembatasan IP untuk penggunaan internal: Dari “Pengaturan”, Anda dapat membatasi alamat IP yang dapat mengakses.
- Buat backup secara berkala: Simpan database dan file yang diunggah di lokasi yang terpisah dari server.