Langsung ke konten
NewKitApp

Privasi & keamanan

Cara Menghapus Skrip Tersembunyi dari PDF

PDF bisa membawa JavaScript dan file tersemat yang berjalan saat dibuka. Begini cara memeriksa isi file dan membuang bagian berbahayanya.

NewKitApp 9 menit baca

PDF tampak seperti kertas, dan kertas itu tidak aktif. Format filenya tidak. Sebuah PDF bisa memuat program kecil, aksi yang terpicu saat dokumen dibuka, file yang bisa dijalankan dan tersemat, serta lapisan data tersembunyi yang tak pernah tampil di halaman. Hampir semua PDF yang Anda temui tidak membawa hal-hal itu secara berbahaya. Yang membawa itulah alasan tim keamanan memperlakukan lampiran dari orang asing sebagai benda hidup sampai terbukti sebaliknya.

Panduan ini menjelaskan apa yang bisa bersembunyi di dalam PDF, bagian mana yang bisa bertindak di mesin Anda, cara memeriksa sebuah file sebelum memercayainya, dan cara membuang bagian aktifnya sambil menjaga dokumen tampak persis sama. Setiap tool yang disebut di sini berjalan di browser Anda; tidak ada yang diunggah.

Apa yang bisa dibawa sebuah PDF selain konten yang terlihat

JavaScript. Standar PDF menyertakan bahasa skrip, kerabat dari yang dipakai situs web. Kegunaan jujurnya ada: formulir yang menjumlahkan kolom harga, dokumen yang menampilkan atau menyembunyikan bagian saat diklik, stempel dinamis bertanggal. Kegunaan jahatnya mengikuti mekanik yang sama: skrip yang terpicu saat file dibuka, yang menulis ulang dokumen, yang diam-diam mengirim data formulir ke server jauh, yang merangkai kelemahan lain dari perangkat lunak pembaca yang tua.

Aksi otomatis. Sebuah dokumen bisa mendefinisikan OpenAction, instruksi yang dijalankan pembaca begitu file dirender. Biasanya ia hanya melompat ke satu halaman atau mengatur zoom. Ia juga bisa memanggil skrip. Page action dan anotasi action memperluas ide yang sama ke momen-momen lain: saat satu halaman menjadi terlihat, saat satu tautan diklik. Varian jahat yang bersejarah, aksi Launch, memerintahkan pembaca menjalankan program eksternal; pembaca modern memblokirnya secara baku, tetapi instruksinya masih tertinggal di file dari dasawarsa lalu.

File tersemat. PDF adalah wadah, dan wadah membawa lampiran: spreadsheet, gambar, program yang bisa dijalankan. Lampiran dengan sendirinya tidak berbuat apa-apa. Dikombinasikan dengan sebuah aksi atau kalimat rekayasa sosial yang meyakinkan berbunyi "buka lampiran tagihannya", ia menjadi mekanisme pengiriman.

Teks dan metadata tersembunyi. Teks bisa duduk di luar area halaman yang terlihat, putih di atas putih, atau di bawah tutupan buram. Bidang metadata membawa nama penulis, riwayat penyuntingan, versi perangkat lunak. Tidak ada dari semua ini yang dieksekusi. Ia membocorkan informasi, dan penting karena alasan berbeda: menyensor dengan menggambar kotak hitam di atas kata-kata tidak menyembunyikan apa-apa, karena kata-katanya masih ada di dalam file, terseleksi dan tercari. Sensor sejati membuangnya.

Lapisan dan konten opsional. Bagian-bagian yang bisa ditampilkan atau disembunyikan pembaca. Umumnya fitur desain untuk gambar teknik; kadang-kadang trik yang membuat halaman tercetak berbeda dari halaman yang tampil.

Pola dalam daftar itu: separuhnya tentang kode yang berjalan, dan separuhnya tentang data yang tertinggal. Sanitasi menangani separuh pertama. Pembersihan metadata dan penyensoran sungguhan menangani separuh kedua.

Apa yang sebenarnya bisa dilakukan skrip itu

Skrip di dalam PDF berjalan dalam kurungan. Ia bisa memanipulasi dokumen, dialog, kolom formulir, dan membuat permintaan jaringan yang terbatas, bergantung seberapa longgar pembacanya. Ia tidak bisa bebas membaca sistem file Anda sebagaimana program biasa.

Bahaya sesungguhnya secara historis datang dari kurungan yang dibangun buruk. Pembaca yang mengurai PDF cacat telah menjadi sumber kerentanan yang andal selama dua dasawarsa, dan file buatan yang membuat parser pembaca tersandung kadang bisa keluar dari kurungan sepenuhnya. Skrip dan struktur cacat bekerja sama: dokumen tampak seperti faktur, parser tersandung pada objek yang dilipat khusus, dan kode berjalan dengan hak istimewa Anda. Vendor antivirus telah mengatalogkan kampanye-kampanye ini bertahun-tahun; yang terkenal dikirim sebagai lampiran surel bernama seperti faktur, resume, dan pemberitahuan pengiriman, persis pola sosial yang masih dipakai sampai sekarang.

Pembaca modern jauh lebih defensif dibanding leluhurnya. Sandbox itu nyata, JavaScript bisa dimatikan total di pembaca desktop, dan keanehan tak bertanda biasanya gagal dibuka. Pelajarannya bukan bahwa PDF aman secara baku. Pelajarannya adalah bahwa file dari sumber yang tidak dipercaya layak diperiksa sebelum diklik di mesin yang penting.

Memeriksa file sebelum Anda memercayainya

Pemeriksa keamanan PDF di situs ini membaca file secara lokal dan melaporkan isinya: apakah ada JavaScript, apakah dokumen mendefinisikan aksi open atau launch, apakah membawa file tersemat, apakah terenkripsi, dan bagaimana strukturnya tampak. Ia menghitung sidik jari file sehingga Anda bisa membandingkannya dengan salinan yang diketahui baik, dan ia mendaftar temuannya dalam bahasa yang jelas.

Membaca laporannya butuh beberapa detik dan menjawab pertanyaan yang penting: apakah dokumen ini memuat sesuatu yang bertindak, atau ia sekadar halaman-halaman?

Beberapa temuan memerlukan konteks. "JavaScript ada" pada formulir instansi yang menghitung total itu normal. "Terenkripsi dengan kata sandi pemilik" pada file dari bank Anda adalah proteksi salinan, bukan serangan. "OpenAction ada" sendirian berarti dokumen mengatur tampilan awalnya, yang dilakukan hampir setiap PDF hasil ekspor. Pemeriksa membedakan bentuk jinak dari masing-masing dengan kombinasi yang mencurigakan: skrip plus pengiriman jaringan, aksi yang memanggil skrip, program tersemat, struktur yang menyerupai pola eksploitasi yang dikenal.

Membuang bagian aktifnya

Sanitizer PDF menghapus apa yang bisa bertindak sambil mempertahankan dokumen yang terlihat. Ia menghapus JavaScript level dokumen dan sisipan, membuang OpenAction dan Launch serta aksi otomatis lain, menghapus lampiran tersemat, dan membuang instruksi pengiriman formulir dan pengumpulan data. Halaman, teks, gambar, dan anotasi biasa bertahan tak tersentuh: file tersanitasi menampilkan konten yang sama dan mencetak hasil yang sama. Bila Anda ingin filenya terkunci setelahnya, jalankan lewat protektor untuk menambah kata sandi.

Alurnya selesai di bawah satu menit. Buka sanitizer, jatuhkan filenya, tinjau temuannya, pilih apa yang dibuang, dan unduh salinan bersihnya. Untuk file yang Anda terima dari luar dan perlu diteruskan, diarsipkan, atau dibuka berulang, mensanitasi lebih dulu adalah asuransi yang murah.

Tiga kebiasaan menutupi sebagian besar situasi nyata:

Anda menerima PDF dari sumber yang tak dikenal. Jalankan pemeriksanya dulu. Bila laporannya bersih dan Anda memang mengharapkan dokumennya, bacalah. Bila ada yang aktif, hapus filenya atau sanitasi satu salinan dan buka salinan itu.

Anda mendistribusikan PDF ke orang lain. Buletin, formulir, laporan untuk klien. Jalankan file Anda sendiri melewati sanitizer sebelum mengirim. Pembaca Anda menerima kontennya tanpa mesinnya, dan pembaca siapa pun tak perlu memutuskan apakah skrip formulir Anda ramah.

Anda mengarsipkan dokumen untuk jangka panjang. Konten aktif lapuk buruk: pembaca memperketat aturannya, skrip berhenti bekerja, lampiran dibuang gateway. Dokumen tersanitasi dan ter-ratakan adalah artefak yang stabil. Arsip di seluruh dunia membakukan persis jenis file senyap ini.

Apa yang tidak dibuang oleh sanitasi

Batas yang jujur menjaga harapan tetap benar.

Sanitasi mempertahankan metadata. Penulis, judul, perangkat lunak pembuat, dan waktu tetap ada, karena membuangnya adalah operasi berbeda dengan maksud berbeda. Bila riwayat dokumen tidak boleh ikut bepergian, bersihkan metadatanya terpisah dengan editor metadata.

Sanitasi tidak menyensor. Menggambar persegi hitam di atas satu paragraf meninggalkan paragraf itu di dalam file. Sensor yang benar membuang teksnya beserta strukturnya, yang dikerjakan tool redact, termasuk jebakan klasik berupa teks yang bersembunyi di bawah persegi penutup.

Sanitasi tidak memverifikasi isi. Dokumen bisa sepenuhnya tidak aktif dan sepenuhnya palsu. Faktur tanpa skrip tetap meminta Anda membayarnya; resume tanpa lampiran tetap berbohong tentang penulisnya. Kode adalah satu risiko; klaim adalah risiko lain.

Dan sanitasi tidak bisa memperbaiki file yang mengeksploitasi parser pembaca dari struktur cacat semata. File yang tampak terbentuk rapi tetapi dirancang membuat parser jatuh adalah kasus langka yang jawabannya adalah tidak membuka file itu sama sekali, di mesin mana pun, dan temuan struktural pemeriksa adalah petunjuk bahwa Anda sedang memegang satu.

Satu contoh nyata

Secara konkret, katakanlah seorang pemasok mengirim surel berisi "pembaruan purchase order" yang tidak Anda antisipasi. Anda membutuhkan angka-angkanya, dan Anda harus membuka sesuatu.

Jalankan filenya melewati pemeriksa lebih dulu. Laporannya datang dalam hitungan detik: 2 halaman, tanpa enkripsi, satu OpenAction yang memanggil skrip dokumen, JavaScript ada, satu file tersemat dengan ekstensi yang bisa dijalankan, dan satu URL pengiriman menuju domain yang terdaftar sebelas hari lalu. Setiap temuan sendirinya punya penjelasan tak bersalah; kombinasinya terbaca seperti kiriman paket.

Anda punya dua langkah. Hapus filenya dan tanyakan pada pemasok lewat kanal yang sudah Anda punyai, yang merupakan keputusan yang tepat hanya untuk si program tersemat itu. Atau, bila Anda sungguh membutuhkan konten yang terlihat, sanitasi satu salinan: skripnya, aksinya, lampirannya, dan instruksi pengirimannya lenyap, dan yang tersisa adalah dokumen dua halaman berisi angka yang Anda butuhkan. Anda tidak pernah menjalankan yang asli di mesin yang penting.

Sekarang balik perannya. Anda adalah pemasok yang mengirim faktur ke ratusan pelanggan. Templat Anda memuat skrip yang memformat totalan, ditambahkan oleh pendahulu yang pergi pada 2021. Setiap gateway keamanan pelanggan Anda memeriksa skrip itu. Mensanitasi file keluaran Anda menghapus pertanyaannya sepenuhnya: pelanggan Anda menerima halaman, bukan program, dan faktur Anda berhenti menyalakan pemindai siapa pun. Kebersihan keluaran ternyata sama pentingnya dengan kehati-hatian masukan.

Dari mana bahaya itu sebenarnya datang

Sedikit sejarah mengalibrasi rasa takut dengan benar.

Sepanjang 2000-an dan 2010-an, PDF buatan adalah vektor serangan kelas atas karena pembaca desktop berjalan dengan hak istimewa longgar dan parser penuh cacat. Eksploit terdokumentasi merangkai font cacat, dekoder gambar, dan mesin skrip; firma keamanan mencatat seluruh toolkit yang menghasilkan PDF berbahaya sesuai pesanan. Respons industri mengubah peta: pembaca pindah ke proses tersandbox, mematikan fitur berisiko secara baku, dan menulis ulang parsernya secara defensif.

Dua konsekuensi penting hari ini. Pertama, pembaca modern yang tertambal mengalahkan mayoritas mutlak serangan historis, sehingga kepanikan yang kadang melekat pada PDF sudah usang. Kedua, penyerang naik tingkat: alih-alih memecahkan kurungannya, mereka kini sebagian besar mengandalkan rekayasa sosial, lampiran yang menipu Anda membuka sesuatu di luar PDF, atau halaman phishing yang ditautkan dokumen. Karena itulah panduan ini menghabiskan kata-kata yang sama banyaknya untuk kebiasaan memeriksa dan untuk pembongkaran teknisnya.

Format filenya juga dewasa. Standar PDF kini memisahkan profil pengarsipan yang dipakai perpustakaan dan lembaga, yang mewajibkan dokumen senyap dan mandiri tanpa konten aktif. Saat Anda mensanitasi sebuah file, Anda menggerakkannya tepat menuju profil itu: jenis PDF yang membosankan dan stabil, yang selamat dari dasawarsa dan jaringan yang bermusuhan.

Pertanyaan yang sering diajukan

Apakah semua pembaca PDF menjalankan JavaScript? Pembaca desktop dari vendor besar mendukungnya, biasanya dengan pengaturan untuk mematikannya. Pembaca bawaan browser kebanyakan mengabaikan skrip dokumen, dan tool di browser di situs ini tidak pernah mengeksekusi skrip PDF sama sekali: mesinnya merender halaman dan melewati mesinnya seluruhnya.

Bisakah PDF menginfeksi komputer saya hanya dari dipratinjau? Permukaan pratinjau modern diperkeras, dan pembobolan hanya dari pratinjau kini langka. Pola historisnya memerlukan pembaca yang rentan ditambah file buatan ditambah biasanya sedikit interaksi. Langka bukan berarti tidak pernah, karena itulah memeriksa sebelum membuka adalah kebiasaannya.

Apakah PDF dari perusahaan besar otomatis aman? Pengirim bereputasi menghasilkan file bersih, dan meniru mereka besar itu gratis. Nilai filenya, bukan logonya, setiap kali dokumen datang tanpa Anda minta.

Apa bedanya sanitasi dengan proteksi kata sandi? Proteksi mengatur siapa yang membuka file. Sanitasi mengatur apa yang dikandung file. Keduanya berpasangan baik: sanitasi, lalu proteksi, untuk dokumen yang bersih sekaligus terkunci.

Apakah sanitasi mengubah tampilan dokumen? Halaman yang terlihat dipertahankan. Fitur interaktif yang bergantung pada skrip, seperti formulir yang menjumlahkan dirinya sendiri, berhenti menjumlahkan; kolom-kolomnya beserta isinya tetap ada.

Berapa lama waktu yang dibutuhkan? Detik untuk dokumen biasa. Seluruh proses berjalan di tab Anda sendiri, jadi tidak ada antrean unggah, tidak ada menunggu server, dan tidak ada jejak file yang tertinggal di tempat lain. Dokumen ratusan halaman tetap selesai dalam waktu yang tidak Anda perhatakan, karena yang diperiksa dan dibongkar adalah struktur filenya, bukan setiap pikselnya.

Apakah hasil sanitasi bisa dibuka di pembaca lama? Bisa, dan biasanya lebih lancar daripada aslinya. Pembaca tua justru paling sering tersandung pada konten aktif dan struktur tak lazim; dokumen bersih tanpa skrip dan lampiran adalah jenis file yang paling ramah terhadap perangkat lunak berapa pun usianya.

Bagaimana dengan PDF yang saya buat sendiri dari Word atau Google Docs? Ekspor standar dari aplikasi kantor umumnya bersih: ada OpenAction pengatur tampilan awal, tanpa skrip, tanpa lampiran. Memeriksanya tetap satu kebiasaan yang benar sebelum didistribusikan, karena sebagian templat kantor lama menyisipkan makro yang ikut terbawa ke bentuk PDF dengan cara yang tidak selalu disadari pembuatnya.

Versi singkatnya

Perlakukan PDF yang datang sebagai klaim, bukan fakta. Periksa: pemeriksa keamanan membaca file secara lokal dan memberi tahu apakah ia membawa skrip, aksi, atau lampiran. Bersihkan bila perlu: sanitizer membuang semua yang bisa bertindak dan menyimpan semua yang Anda baca. Pisahkan kebiasaannya: kebocoran metadata adalah pekerjaan editor, kata tersembunyi adalah pekerjaan redaksi, dan penipuan adalah pekerjaan pertimbangan Anda. Metafora kertas membuat Anda mengira file itu tidak aktif; kini Anda tahu bagian mana yang tidak, dan apa yang harus dilakukan tentangnya.

Tools yang dipakai di panduan ini

Baca juga