Langsung ke konten

Arsip

Keamanan

9 artikel
Rekayasa Perangkat Lunak 19 Sep 2026 5 min read

seccomp User Notification Memindahkan Keputusan Syscall Terpilih ke Broker

Filter seccomp dapat melakukan lebih dari sekadar langsung mengizinkan atau menolak system call. Dengan user notification, call yang cocok dapat ditahan sementara proses lain menerima request terstruktur melalui listener file descriptor dan menentukan hasil yang diterima thread yang diblokir. Mekanisme ini mengubah keputusan syscall terpilih menjadi interface berbasis broker tanpa memindahkan seluruh implementasi syscall ke user space. Batasnya presisi, tetapi lebih sempit daripada lapisan interposition umum. Kernel tetap memiliki syscall dispatch, task state, descriptor table, dan validasi yang dilakukan kode kernel. Broker menerima metadata dan dapat mengembalikan nilai, error, atau pada kasus yang didukung meminta eksekusi syscall asli dilanjutkan. Desain yang benar memperhitungkan memory target yang mutable, lifetime notification, serta fakta bahwa keputusan policy tidak otomatis menjadi transaksi atas state proses.

Linux 19 Sep 2026 4 min read

Seal memfd Membatasi Mutasi Shared Memory Setelah Handoff

Descriptor dari memfd_create() merujuk ke file anonim dengan penyimpanan pada infrastruktur filesystem berbasis memori. Handoff descriptor saja tidak membekukan objek tersebut: proses yang masih memiliki akses yang sesuai dapat menulis byte, melakukan truncate, atau memperbesar file. File seal Linux menambahkan pembatasan yang ditegakkan kernel sehingga mutasi tertentu gagal setelah producer menyatakan objek selesai dibuat. Mekanisme ini mengubah handoff shared memory dari sekadar konvensi menjadi transisi state yang ditegakkan pada objek file.

Go 19 Sep 2026 7 min read

OTP Email di Go: Kode Sekali Pakai, Kedaluwarsa, dan Perlindungan Replay

OTP Email di Go: Kode Sekali Pakai, Kedaluwarsa, dan Perlindungan Replay OTP email terlihat sederhana: buat enam digit, kirimkan, lalu bandingkan dengan input pengguna. Namun, batas keamanannya bukan berada pada API email. Bagian pentingnya adalah lifecycle challenge di sisi server. Implementasi yang benar harus membuat kode sulit ditebak, membatasi masa berlakunya, membatasi tebakan, menonaktifkan challenge lama ketika diperlukan, dan memastikan kode yang sudah berhasil dipakai tidak dapat dikonsumsi untuk kedua kalinya. Properti ini berbeda dari TOTP, meskipun keduanya sering disebut OTP.

Linux 19 Sep 2026 6 min read

openat2 Membatasi Resolusi Path pada Boundary Kernel

Sebuah pathname yang dimulai di dalam directory tepercaya dapat berakhir pada objek di luar directory tersebut sebelum open() selesai. Parent component, symbolic link, magic link, mount point, dan perubahan namespace secara concurrent semuanya ikut menentukan pathname lookup Linux. Memeriksa string sebelum membukanya karena itu tidak menetapkan lokasi akhir resolusi yang dilakukan kernel. Linux openat2() menempatkan pembatasan di dalam operasi lookup itu sendiri. Pemanggil memberikan directory file descriptor, open flag biasa, dan kebijakan resolve melalui struct open_how. Kernel kemudian menerapkan batas tersebut saat menelusuri setiap path component yang relevan. Security boundary berpindah dari validasi awal atas teks pathname ke operasi yang benar-benar melakukan resolusi.

Linux 19 Sep 2026 4 min read

openat2 Membatasi Resolusi Path Linux pada Operasi Open

Sebuah pathname dapat berubah makna ketika proses sedang me-resolve-nya. Rename direktori, symbolic link, mount point, dan komponen .. dapat mengarahkan lookup keluar dari direktori yang dimaksud program sebagai batas. Linux openat2() menempelkan kebijakan resolusi langsung pada proses lookup. struct open_how memiliki bit mask resolve, sehingga kernel dapat menolak path ketika resolusinya melanggar batas yang dipilih caller, bukan hanya mengandalkan pemeriksaan yang dilakukan sebelum open(). Directory file descriptor menetapkan titik awal Seperti openat(), openat2() dapat me-resolve pathname relatif dari directory file descriptor:

Linux 18 Sep 2026 5 min read

Ruleset Landlock Menambahkan Kontrol Akses Lokal pada Proses

Sebuah proses Linux dapat secara sukarela mengurangi akses yang sebenarnya masih diizinkan oleh UID, capability, mount namespace, dan lapisan keamanan lain. Landlock menerapkan mekanisme ini sebagai Linux Security Module yang dapat ditumpuk: proses membuat ruleset, menambahkan objek yang diizinkan, lalu menempatkan dirinya ke dalam domain Landlock. Policy yang dihasilkan merupakan pembatasan tambahan. Landlock tidak memberikan akses yang sudah ditolak oleh DAC, ACL, SELinux, AppArmor, permission mount, atau kontrol aktif lainnya. Setelah diterapkan, lapisan Landlock tidak dapat dilepas dari thread tersebut; domain Landlock berikutnya hanya dapat menambah pembatasan.

Linux 18 Sep 2026 5 min read

Flag Resolve openat2 Membatasi Traversal Path per Operasi Open

Sebuah pathname yang diberikan ke openat2() dapat ditolak walaupun pathname yang sama berhasil diresolusikan melalui openat(). Perbedaannya berasal dari open_how.resolve: Linux dapat menerapkan batas traversal ketika setiap komponen path diresolusikan untuk satu operasi open. Batas penanganan path pun berubah. File descriptor direktori dapat berfungsi lebih dari sekadar titik awal; flag resolve dapat membatasi escape, traversal symbolic link, perpindahan mount, dan lookup yang membutuhkan pekerjaan di luar state cache. Kebijakan resolusi melekat pada satu operasi openat2() memperluas model openat() dengan struct open_how yang dapat diperluas:

Rekayasa Perangkat Lunak 17 Sep 2026 5 min read

openat2 Membatasi Resolusi Path pada Batas Lookup

Sebuah pathname dapat dimulai di bawah direktori tepercaya tetapi tetap keluar dari subtree tersebut selama resolusi. Komponen .., symbolic link, magic link, atau perpindahan mount dapat mengubah objek yang akhirnya dicapai meskipun directory file descriptor awal berasal dari lokasi tepercaya. Linux openat2() menempatkan constraint langsung di dalam resolusi pathname, sehingga kernel dapat menolak lookup yang melanggar batas yang dipilih. Perilaku ini berbeda dari memeriksa string pathname sebelum memanggil open(). Resolusi path bekerja terhadap objek filesystem dan state namespace, bukan hanya teks. openat2() memperluas model openat() dengan struct open_how yang memiliki field resolve untuk mengendalikan traversal komponen pathname.

Rekayasa Perangkat Lunak 17 Sep 2026 8 min read

Linux openat2 Membuat Batas Resolusi Path Menjadi Atomik

Sebuah pathname dapat menunjuk ke objek yang berbeda ketika lookup kedua dilakukan. Di Linux, openat2() menangani batas ini dengan menempelkan aturan resolusi pada operasi kernel yang sama dengan operasi yang menelusuri pathname dan membuka objek hasilnya. Kebijakan dievaluasi selama lookup berlangsung, bukan disimpulkan dari pathname yang diperiksa sebelum atau sesudah file dibuka. Perbedaan ini penting ketika proses menerima komponen path dari sumber yang kurang tepercaya tetapi ingin memastikan resolusi tetap berada di dalam direktori tertentu, menolak symbolic link, mencegah perpindahan mount, atau mewajibkan lookup yang hanya memakai cache. Objek yang penting bukan hanya string input, melainkan hasil resolusi string tersebut terhadap namespace aktif yang isi direktori, link, dan mount-nya dapat berubah secara bersamaan.