1 poin oleh GN⁺ 2023-09-14 | 1 komentar | Bagikan ke WhatsApp
  • Di beta dan kandidat rilis macOS 14 Sonoma, firewall PF gagal memfilter lalu lintas dengan benar sehingga aplikasi Mullvad VPN tidak dapat berfungsi normal
  • Jika beberapa pengaturan seperti berbagi jaringan lokal diaktifkan, hal ini dapat menyebabkan kebocoran lalu lintas, sehingga Mullvad menilai sulit menjamin fungsi dan keamanan di macOS 14
  • Mullvad menyelidiki masalah ini sejak beta ke-6 dan melaporkannya ke Apple, tetapi bug tersebut tetap ada di beta berikutnya dan kandidat rilis
  • Mereka meninjau apakah masalah ini bisa diakali dengan patch pada aplikasi itu sendiri, tetapi tidak menemukan solusi yang aman, dan pada dasarnya diperlukan perbaikan firewall dari Apple
  • Pengguna yang bergantung pada pemfilteran PF atau aplikasi terkait perlu berhati-hati saat meningkatkan ke macOS 14, dan jika bug ini masih ada maka lebih aman tetap menggunakan macOS 13 Ventura

Masalah firewall PF di macOS 14 Sonoma

  • Selama masa beta macOS 14 Sonoma, Apple memperkenalkan bug pada packet filter (PF), firewall macOS
  • Akibat bug ini, aplikasi Mullvad VPN tidak berfungsi, dan jika pengaturan tertentu diaktifkan dapat terjadi kebocoran lalu lintas
    • Contoh pengaturan yang disebut adalah berbagi jaringan lokal
  • Mullvad menyelidiki masalah ini setelah beta macOS 14 ke-6 dirilis dan melaporkan bug tersebut ke Apple
  • Masalah yang sama tetap bertahan pada beta macOS 14 berikutnya dan kandidat rilis
  • Mereka mengevaluasi cara agar aplikasi VPN saja dipatch untuk tetap menjaga fungsi dan keamanan di macOS 14, tetapi saat ini menilai belum ada solusi yang baik
  • Dampaknya tidak terbatas pada aplikasi Mullvad VPN saja
    • Aturan firewall tidak diterapkan dengan benar pada lalu lintas jaringan
    • Lalu lintas yang seharusnya tidak diizinkan bisa lolos
    • Pengguna yang bergantung pada pemfilteran PF atau aplikasi yang menggunakannya di latar belakang perlu berhati-hati saat meningkatkan ke macOS 14
  • macOS 14 Sonoma dijadwalkan rilis pada 26 September, dan jika bug ini masih ada, pengguna Mullvad disarankan tetap menggunakan macOS 13 Ventura sampai ada perbaikan

Langkah reproduksi dan hasil aktual

  • Masalah ini dapat direproduksi di macOS 14, dan percobaan ini menghapus aturan firewall yang dimuat di PF
  • Di terminal, buat antarmuka logging virtual lalu pantau lalu lintas yang cocok dengan aturan yang akan ditambahkan nanti
sudo ifconfig pflog1 create
sudo tcpdump -nnn -e -ttt -i pflog1
  • Tulis aturan firewall berikut di file pfrules
pass quick log (all, to pflog1) inet from any to 127.0.0.1
block drop quick log (all, to pflog1)
  • Di terminal lain, aktifkan PF dan muat aturannya
sudo pfctl -e
sudo pfctl -f pfrules
ping 45.83.223.209
  • Hasil yang diharapkan adalah ping diblokir karena tidak cocok dengan satu-satunya kondisi aturan pass, dan lalu lintas tercatat di pflog1 sebagai cocok dengan aturan block
  • Namun pada kenyataannya, ping keluar ke internet dan respons kembali, sementara lalu lintas tidak tercatat di pflog1
  • Setelah percobaan selesai, nonaktifkan firewall dan hapus semua aturan
sudo pfctl -d
sudo pfctl -f /etc/pf.conf

1 komentar

 
GN⁺ 2023-09-14
Komentar Hacker News
  • Bug PF yang sama juga merusak salah satu fitur jaringan OrbStack
    Saat berhasil mempersempit penyebabnya sampai sejauh ini, rasanya sulit dipercaya, tetapi sepertinya bukan cuma saya yang mengalaminya. Semoga benar-benar diperbaiki sebelum rilis stabil
    Saya baru bisa melaporkannya ke Apple kemarin; ini tampaknya regresi yang cukup baru, mungkin muncul sekitar beta 6
    PF seharusnya merupakan firewall di mana aturan terakhir yang cocok diterapkan, tetapi macOS tampaknya bertindak hampir seperti aturan pertama yang cocok. Aturan block di bagian depan menimpa aturan pass dari anchor lain bahkan tanpa quick, jadi wajar saja muncul masalah

    • Sekadar “sangat berharap” belum cukup. Ini harus diperbaiki sebelum rilis
      Kalau versi stabil keluar dalam kondisi seperti ini, itu tidak bisa diterima, dan bagi saya pribadi akan menjadi alasan untuk meninggalkan Mac OS. Jika ingin dipakai untuk pekerjaan serius, produk dengan regresi seperti ini tidak boleh dirilis
  • Tulisannya sangat ringkas dan informatif, dan bagus karena juga menyertakan langkah reproduksi bug yang sederhana
    Saya suka Mullvad
    Sedikit menyimpang, tetapi macOS secara umum punya banyak bug firewall aneh dalam beberapa rilis terakhir, dan saya penasaran mengapa bagian firewall sampai perlu dirombak dan dibuat ulang

    • Penulisan ulang itu hampir pasti dipengaruhi oleh pemaksaan migrasi dari ekstensi kernel ke System Extensions di ruang pengguna, khususnya NetworkExtension, saat beralih dari Catalina ke Big Sur: https://developer.apple.com/documentation/networkextension
    • Jika bug seperti ini pada platform sistem operasi lokal membuat Anda khawatir, Anda juga bisa mempertimbangkan cara mengabstraksikan titik akses lokal dengan browser jarak jauh
      Apa pun mesin lokal dan sistem operasinya, browsing bisa dijalankan melalui server khusus. Ini tidak membungkus seluruh koneksi jaringan, hanya browsing, tetapi dalam cakupan itu ia dapat mengganti alamat IP, menyembunyikan lokasi, dan menambahkan perlindungan dari zero-day browser
      BrowserBox terus menambahkan fitur yang menghormati dan melindungi privasi serta meningkatkan keseluruhan pengalaman. Karena open source, Anda juga bisa mengubahnya sesuka hati. Jika AGPL-3.0 tidak cocok, lisensi komersial juga tersedia: https://github.com/dosyago/BrowserBoxPro
      Jika tidak suka open source dan lebih menyukai kenyamanan dari perusahaan besar, Mullvad juga tampaknya punya Mullvad Browser yang melakukan hal serupa
    • Akan lebih bagus lagi kalau turut menyertakan nomor rdar/Feedback
    • macOS selama bertahun-tahun mencoba mengembangkan stack jaringan mereka, tetapi ketika muncul regresi, mereka sering mengembalikannya lagi
      Tulisan lama terkait: https://9to5mac.com/2015/05/26/apple-drops-discoveryd-in-lat...
  • Kode reproduksi ini benar-benar enak dilihat

    • Sederhana itu bagus, tetapi yang terutama bagus adalah adanya tahap pembersihan. Itu elemen yang sering terlewat dalam prosedur reproduksi seperti ini
    • Rasanya ini hanya menetapkan aturan firewall sederhana lalu mencoba kueri yang melanggar aturan tersebut
      Tentu saja memang itulah cakupan bug-nya, tetapi pemeriksaan ini tidak terlihat sangat canggih atau indah bagi saya
  • Entah terkait atau tidak, tetapi setelah dua upgrade macOS terakhir, jaringan tidak berfungsi
    Saya bisa terhubung ke Wi‑Fi, ethernet, dan hotspot, tetapi tidak ada koneksi nyata seperti browser atau ping yang berjalan, bahkan router pun tidak bisa dijangkau
    Dalam kedua kasus, cukup membuka aplikasi Mullvad VPN sekali saja membuat semuanya berfungsi lagi. Saya tidak tahu mengapa hanya membuka aplikasinya bisa memperbaiki masalah

    • Aplikasi VPN mengubah tabel routing, jadi sampai aplikasi VPN dijalankan, sepertinya traffic sedang diarahkan ke antarmuka yang tidak ada
  • Tidak sepenuhnya terkait, tetapi ada juga bug lama lainnya: bug macOS Popen() yang sudah berumur 11 tahun: https://news.ycombinator.com/item?id=37238433

    • Jika itu bug Anda sendiri, sebaiknya kirim Feedback bersama patch. Proyek open source pihak mereka biasanya tidak menerima PR
  • Sebagai catatan, saya mengalami masalah koneksi dengan Mullvad.app, tetapi menjalankan konfigurasi Mullvad WireGuard di Wireguard.app berfungsi dengan baik

  • Saya baru-baru ini memasang Sonoma beta terbaru, dan sekarang masuk akal kenapa saya sama sekali tidak bisa membuat Mullvad berjalan
    Syukurlah Mullvad sedang mengerjakan workaround. Tadi pagi saya bahkan sempat berpikir untuk downgrade ke Ventura, tetapi sekarang rasanya memang masalahnya ada di sini

    • Tidak tertulis bahwa mereka sedang mengerjakan workaround. Yang tertulis adalah pengguna jangan upgrade ke Sonoma sampai Apple memperbaiki bug tersebut
    • Kombinasi tailscale/mullvad sepertinya masih akan berfungsi. Itu mungkin bisa menjadi workaround yang cukup baik sampai Apple memperbaikinya
  • Senang Mullvad meningkatkan tekanan publik atas masalah ini. Bug ini jelas terlihat dan cukup mengkhawatirkan

    • Apakah ini sudah diketahui di tempat lain? Sepertinya Mullvad melaporkannya setelah beta ke-6, dan pada titik itu sudah cukup dekat dengan RC
      Di teks aslinya tertulis “we have investigated this issue after the 6th beta was released and reported the bug to Apple”
  • Dalam kasus saya, solusinya adalah mengunduh konfigurasi WireGuard dan memakai aplikasi Wireguard

    • Tapi bukankah aplikasi Wireguard bisa membuat data bocor dan kurang aman daripada aplikasi Mullvad?
    • Itu hanya solusi jika Anda tidak memasukkan aturan firewall PostUp dan PostDown ke konfigurasi WireGuard. Kalau begitu, sulit disebut solusi
  • Pertanyaan: jika pflog1 tidak dibuat, apakah pf bekerja seperti yang diharapkan?
    Jika tcpdump tidak mencatat apa pun yang keluar ke pflog1, itu tampaknya berarti data tidak dikirim ke pflog1. Maka masalahnya ada di lapisan sebelum itu
    Apakah pflog1 sudah terhubung dan dalam keadaan up? Dulu antarmuka harus dihubungkan dan dinaikkan secara manual. Apakah MacOS melakukannya otomatis?
    Tentu saja memisahkan hal ini bukan tugas pelapor bug. Namun pada suatu titik engineer yang menangani akan menanyakan hal seperti ini, jadi lebih baik jawabannya disiapkan lebih dulu

    • Apakah ada sesuatu yang bisa ditambahkan ke langkah reproduksi sebagai workaround? Misalnya seperti yang disebutkan, menghubungkan dan menaikkan antarmuka setelah pfrules dimuat
    • Setelah itu, untuk menghapus antarmuka tambahan, ini juga perlu dilakukan:
      ifconfig pflog1 destroy