Pengantar
Dalam pengembangan software modern, developer jarang membangun aplikasi sepenuhnya dari nol. Library, framework, repository, dan komponen open source sering digunakan untuk mempercepat proses pengembangan.
Salah satu fitur Git yang dapat digunakan untuk mengelola repository eksternal adalah Git Submodule. Fitur ini memungkinkan sebuah repository menyertakan repository lain sebagai bagian dari project utama. Git mendokumentasikan submodule sebagai repository yang memiliki history sendiri dan direferensikan oleh repository utama melalui commit tertentu. (dikutip dari: Dokumentasi Resmi Git – Submodules)
Namun, kemudahan tersebut juga dapat menimbulkan risiko keamanan. Salah satunya adalah Git Submodule Typosquatting, yaitu teknik yang memanfaatkan kesalahan penulisan atau kemiripan nama repository untuk mengelabui developer agar menggunakan repository yang salah.
Apa Itu Git Submodule Typosquatting?
Git Submodule Typosquatting adalah teknik penipuan yang memanfaatkan nama repository yang dibuat sangat mirip dengan repository yang sah.
Konsepnya serupa dengan typosquatting pada package manager. Penyerang membuat repository dengan nama yang hampir sama dengan project populer.
Contohnya:
Repository resmi:
company/security-library
Repository palsu:
company/security-librarry
Perbedaannya hanya satu karakter. Bagi developer yang terburu-buru, nama tersebut dapat terlihat seperti repository yang benar.
Tujuan akhirnya dapat berupa mengarahkan developer ke kode berbahaya, mencuri informasi, atau memasukkan komponen tidak terpercaya ke dalam software supply chain.
OpenSSF mencatat bahwa typosquatting, dependency confusion, dan account takeover merupakan bagian dari berbagai ancaman terhadap ekosistem open source.
baca juga : Return-to-libc Attack: Teknik Eksploitasi yang Memanfaatkan Fungsi Library untuk Membajak Alur Program
Apa Itu Git Submodule?
Sebelum memahami serangannya, kita perlu mengetahui cara kerja Git Submodule.
Submodule memungkinkan sebuah repository ditempatkan di dalam repository lain.
Strukturnya dapat digambarkan seperti ini:
project-utama/
│
├── src/
├── config/
├── README.md
│
└── libraries/
└── security-library/
Repository utama disebut superproject, sedangkan repository di dalamnya disebut submodule.
Git menyimpan informasi submodule melalui file .gitmodules dan sebuah gitlink yang menunjuk pada commit tertentu dari repository submodule. (dikutip dari: Dokumentasi Resmi Git – git-submodule)
Dengan mekanisme ini, project dapat menggunakan repository eksternal tanpa menggabungkan seluruh history repository tersebut ke dalam project utama.
Bagaimana Git Submodule Typosquatting Bekerja?
Serangan dapat dimulai dari pembuatan repository yang memiliki nama sangat mirip dengan project yang populer.
Misalnya:
Project resmi:
example/auth-library
Project palsu:
example/auth-libary
Developer kemudian menemukan repository palsu tersebut dan menggunakannya sebagai submodule.
Secara sederhana:
Developer
|
v
Repository Utama
|
v
.gitmodules
|
v
Repository Palsu
|
v
Kode Berbahaya
Jika repository tersebut dipercaya tanpa pemeriksaan lebih lanjut, kode yang tidak aman dapat masuk ke lingkungan pengembangan.
Yang membuat teknik ini berbahaya adalah kepercayaan terhadap nama dan sumber repository.
Mengapa Developer Bisa Tertipu?
Nama Repository Sangat Mirip
Penyerang dapat menggunakan variasi kecil pada nama.
Contohnya:
secure-library
secure-librarry
atau:
json-parser
json_parsr
Perubahan kecil seperti ini mudah terlewat ketika developer hanya melihat nama repository.
Repository Terlihat Meyakinkan
Repository palsu dapat dibuat dengan tampilan yang menyerupai project asli.
Misalnya dengan:
- README yang terlihat profesional.
- Struktur folder yang mirip.
- Deskripsi project yang meyakinkan.
- Nama maintainer yang menyerupai akun asli.
- Dokumentasi yang meniru project populer.
Karena itu, nama repository saja tidak cukup untuk menentukan apakah sebuah dependency aman.
Proses Pengembangan yang Cepat
Dalam praktiknya, developer dapat menambahkan dependency tanpa melakukan pemeriksaan mendalam.
Jika repository langsung digunakan dalam build atau deployment, risiko supply chain menjadi lebih besar.
baca juga : Raft Consensus Algorithm: Cara Kerja dan Perannya dalam Menjaga Konsistensi Sistem Terdistribusi
Apa Risiko dari Git Submodule Typosquatting?
Dampaknya bergantung pada isi repository dan cara project menggunakannya.
Masuknya Kode Berbahaya
Repository palsu dapat berisi kode yang sengaja dibuat untuk melakukan aktivitas berbahaya.
Kode tersebut dapat ikut terkompilasi atau dijalankan sebagai bagian dari aplikasi.
Pencurian Data
Jika kode berbahaya berjalan dalam lingkungan developer atau CI/CD, informasi sensitif dapat menjadi target.
Contohnya:
- API key
- Access token
- Environment variable
- Credential
- Source code
Supply Chain Attack
Jika submodule digunakan oleh project lain, satu repository yang telah disusupi dapat menjadi jalur masuk menuju sistem yang lebih luas.
Inilah alasan keamanan dependency menjadi bagian penting dari software supply chain security.
GitHub juga menyediakan mekanisme deteksi malware pada dependency. Dependabot dapat memberikan alert ketika dependency dalam repository teridentifikasi sebagai package berbahaya.

Git Submodule Tidak Selalu Berarti Aman
Salah satu kesalahpahaman adalah menganggap repository yang digunakan sebagai submodule otomatis aman karena sudah direferensikan oleh Git.
Padahal, Git Submodule pada dasarnya hanya menyediakan mekanisme untuk menghubungkan repository.
Git mendokumentasikan bahwa submodule menyimpan URL repository dan referensi commit yang digunakan oleh superproject. Artinya, keamanan isi repository tetap bergantung pada sumber dan kode yang digunakan. (dikutip dari: Dokumentasi Git – git-submodule)
Cara Mendeteksi Git Submodule Typosquatting
Ada beberapa hal yang dapat diperiksa sebelum menambahkan submodule.
Periksa Nama Repository
Bandingkan nama repository dengan sumber resmi.
Perhatikan:
- Ejaan.
- Tanda
-dan_. - Karakter yang berulang.
- Nama organisasi.
- Username pemilik repository.
Kesalahan satu karakter dapat menjadi indikator penting.
Periksa URL Repository
Jangan hanya melihat nama repository.
Periksa URL lengkapnya:
https://github.com/official-org/security-lib
Pastikan organisasi dan pemilik repository sesuai dengan project resmi.
Periksa Riwayat Commit
Repository yang sudah lama aktif biasanya memiliki history yang dapat diperiksa.
Perhatikan:
- Umur repository.
- Aktivitas commit.
- Kontributor.
- Release.
- Perubahan yang mencurigakan.
Repository baru yang tiba-tiba menyerupai project populer layak diperiksa lebih lanjut.
Periksa .gitmodules
File .gitmodules dapat memberikan informasi penting tentang sumber submodule.
Contohnya:
[submodule "security-lib"]
path = libraries/security-lib
url = https://github.com/example/security-lib.git
Developer dapat memeriksa apakah URL tersebut benar-benar berasal dari project yang dipercaya.
Cara Mencegah Git Submodule Typosquatting
Gunakan Sumber Resmi
Ambil repository dari website resmi project atau organisasi.
Jangan hanya mengandalkan hasil pencarian atau nama repository yang terlihat familiar.
Gunakan Commit yang Terverifikasi
Git Submodule menggunakan referensi commit tertentu. Pendekatan ini membantu project tetap menggunakan versi yang telah ditentukan.
Namun, commit yang dikunci bukan berarti kodenya otomatis aman. Developer tetap perlu memastikan commit tersebut berasal dari repository yang benar.
Lakukan Code Review
Sebelum dependency baru digunakan, lakukan pemeriksaan terhadap perubahan kode.
Terutama jika dependency memiliki akses terhadap:
- File system.
- Network.
- Credential.
- Environment variable.
- Build process.
Batasi Dependency
Semakin banyak dependency yang digunakan, semakin besar pula area supply chain yang harus dipercaya.
Gunakan dependency hanya ketika memang dibutuhkan.
Gunakan Security Scanning
Tool security scanning dapat membantu mendeteksi dependency yang diketahui bermasalah.
Untuk ekosistem open source, OpenSSF juga menyediakan database malicious packages yang mencakup laporan package berbahaya, termasuk kasus yang berkaitan dengan typosquatting.
Jangan Mengabaikan Risiko Git Submodule
Git Submodule sendiri bukanlah teknik serangan. Submodule merupakan fitur resmi Git yang berguna untuk mengelola repository terpisah.
Masalah muncul ketika fitur tersebut digunakan untuk memasukkan repository yang tidak dipercaya.
Bahkan, Git pernah memiliki kerentanan keamanan yang berkaitan dengan repository dan submodule. Pada 2024, Git memperbaiki kerentanan pada kondisi tertentu ketika melakukan recursive clone pada filesystem yang mendukung symlink. Kerentanan tersebut dapat menyebabkan file ditulis ke lokasi yang tidak semestinya dan berpotensi menyebabkan eksekusi kode.
Hal tersebut menunjukkan bahwa keamanan repository tidak hanya bergantung pada kode di dalamnya, tetapi juga pada cara Git menangani struktur repository dan proses clone.
Checklist Sebelum Menambahkan Submodule
Sebelum menjalankan atau memasukkan submodule ke project, developer dapat melakukan pemeriksaan sederhana:
- Pastikan nama repository benar.
- Pastikan organisasi atau pemilik repository sesuai.
- Periksa URL pada
.gitmodules. - Periksa history dan aktivitas repository.
- Periksa source code sebelum digunakan.
- Hindari repository yang tidak memiliki sumber resmi.
- Gunakan versi Git yang terbaru dan telah mendapatkan patch keamanan.
- Gunakan security scanning jika tersedia.
- Batasi akses credential pada environment development dan CI/CD.
Langkah sederhana tersebut dapat mengurangi risiko dependency masuk melalui repository palsu.
baca juga : JSON Web Token (JWT) None Algorithm Attack: Bahaya Token Tanpa Signature dan Cara Mencegahnya
Kesimpulan
Git Submodule Typosquatting merupakan ancaman terhadap software supply chain yang memanfaatkan kemiripan nama repository untuk menipu developer.
Serangan dapat terjadi ketika developer salah memilih repository dan memasukkannya sebagai submodule. Jika repository tersebut mengandung kode berbahaya, risiko dapat meluas ke lingkungan development, CI/CD, hingga aplikasi yang diproduksi.
Git Submodule sendiri bukan fitur berbahaya. Risiko muncul dari repository yang dipercaya tanpa verifikasi.
Karena itu, developer perlu memeriksa nama, URL, pemilik, commit, history, dan isi repository sebelum menambahkan submodule. Penggunaan security scanning dan pembaruan Git juga penting sebagai bagian dari strategi defense-in-depth.
Pada akhirnya, keamanan software supply chain tidak hanya bergantung pada tools. Memastikan bahwa dependency berasal dari sumber yang benar adalah salah satu langkah keamanan paling dasar dan penting.








