Pengantar
Sistem operasi berbasis Unix seperti Linux memiliki fitur bernama symbolic link (symlink). Fitur ini memungkinkan sebuah file atau direktori bertindak sebagai “shortcut” yang menunjuk ke lokasi lain di sistem.
Masalah muncul ketika aplikasi dengan hak akses tinggi (misalnya berjalan sebagai root) tidak melakukan validasi yang tepat terhadap file yang diakses. Di sinilah race condition terjadi—sebuah kondisi di mana dua proses berjalan bersamaan dan saling “berlomba” untuk mengakses atau memodifikasi sumber daya yang sama.
Kombinasi antara symbolic link dan race condition inilah yang dikenal sebagai Symlink Race Attack.
Apa Itu Symlink Race?
Symlink Race adalah jenis serangan yang memanfaatkan celah Time-of-Check to Time-of-Use (TOCTOU) dalam pengelolaan file sistem.
Apa Itu TOCTOU?
TOCTOU adalah kondisi di mana sistem:
-
Melakukan pengecekan terhadap suatu file.
-
Namun sebelum file digunakan, penyerang menggantinya dengan symbolic link ke target lain.
Dalam konteks ini, penyerang membuat symbolic link yang menunjuk ke file sensitif seperti:
-
/etc/passwd -
/etc/shadow -
File konfigurasi penting lainnya
Jika program berjalan dengan hak akses tinggi dan tidak melakukan validasi ulang, maka program tersebut bisa secara tidak sadar membaca atau menulis ke file sensitif tersebut.
baca juga : LDAP Injection: Celah Autentikasi yang Bisa Membuka Akses Tanpa Izin
Bagaimana Cara Kerja Symlink Race?
Berikut alur sederhana serangannya:
1. Aplikasi Mengecek File
Program memeriksa apakah file tertentu aman untuk digunakan (misalnya file sementara di /tmp).
2. Penyerang Mengganti File
Sebelum file digunakan, penyerang dengan cepat menggantinya menjadi symbolic link ke file sensitif.
3. Aplikasi Menggunakan File
Karena tidak ada pengecekan ulang, aplikasi menulis atau membaca dari file target yang sebenarnya bukan file asli.
Proses ini terjadi dalam waktu yang sangat cepat, sehingga disebut “race” (perlombaan).
Dampak Serangan Symlink Race
Jika berhasil, Symlink Race dapat menyebabkan:
-
Eskalasi hak akses (Privilege Escalation)
-
Akses tidak sah ke file sensitif
-
Modifikasi file sistem penting
-
Kerusakan integritas sistem
Beberapa kerentanan terkait race condition dan symbolic link telah didokumentasikan dalam database seperti Common Weakness Enumeration (CWE) oleh MITRE, khususnya pada kategori CWE-362 (Race Condition) (dikutip dari MITRE).
baca juga : HTTP Response Splitting: Celah Manipulasi Header yang Bisa Mengubah Respons Server
Cara Mencegah Symlink Race
Pencegahan dapat dilakukan dari sisi pengembang maupun administrator sistem.
1. Gunakan File Descriptor yang Aman
Gunakan fungsi sistem seperti:
-
open()dengan flagO_NOFOLLOW -
O_EXCLuntuk mencegah file yang sudah ada digunakan kembali
2. Hindari Direktori Umum Seperti /tmp Tanpa Proteksi
Gunakan direktori privat dengan permission yang ketat.
3. Terapkan Prinsip Least Privilege
Jangan jalankan aplikasi dengan hak akses root jika tidak diperlukan.
4. Gunakan Mekanisme Secure Temporary File
Gunakan fungsi seperti:
-
mkstemp()di sistem Unix/Linux
Mengapa Symlink Race Masih Relevan?
Walaupun teknik ini tergolong klasik, Symlink Race tetap relevan karena:
-
Banyak aplikasi lama belum diperbarui
-
Developer kurang memahami race condition
-
Sistem multi-user masih banyak digunakan di server
Dalam konteks DevSecOps modern, pemahaman tentang celah seperti ini sangat penting untuk membangun aplikasi yang aman sejak tahap desain.
baca juga : Web Cache Deception: Celah Tersembunyi yang Membocorkan Data Lewat Sistem Cache
Kesimpulan
Symlink Race adalah bentuk serangan yang memanfaatkan kombinasi symbolic link dan race condition (TOCTOU) untuk mengakses atau memodifikasi file sensitif secara tidak sah.
Meskipun terlihat sederhana, dampaknya bisa sangat serius, termasuk eskalasi hak akses hingga root. Oleh karena itu, pengembang harus menerapkan praktik secure coding yang ketat, terutama dalam pengelolaan file dan permission sistem.
Keamanan bukan hanya soal firewall dan antivirus. Terkadang, celah kecil dalam logika program bisa menjadi pintu masuk terbesar bagi penyerang.








