Detektor Jenis MIME

Berikutnya

Ekstensi file sering kali menyesatkan, siapa saja dapat mengubah nama file malware.exe menjadi photo.jpg. Cara paling andal untuk mengetahui jenis sebenarnya dari sebuah file adalah dengan membaca beberapa byte pertamanya, di mana kebanyakan format menyertakan tanda tangan (“nomor magis”) yang mengidentifikasi format tersebut terlepas dari namanya. Alat deteksi ini membaca tanda tangan pada setiap file yang diunggah dan mengembalikan tipe MIME kanonik beserta pemetaan ekstensi yang paling umum, sehingga Anda dapat memverifikasi bahwa file yang diunggah sesuai dengan apa yang diklaim oleh klien.

Bagaimana cara deteksi MIME bekerja

  1. 1

    Letakkan file

    Dalam ukuran apa pun, hanya bagian pertama sepanjang 4–16 KB yang dibaca.

  2. 2

    Baca bait-bait magis

    Sebagian besar format dimulai dengan tanda tangan yang telah diketahui.

  3. 3

    Lakukan pencocokan dengan basis data tanda tangan

    Detektor ini menggunakan aturan yang sama dengan `file(1)`/libmagic.

  4. 4

    Kembalikan MIME + ekstensi

    Menampilkan tipe media RFC 6838, ekstensi kanonik, dan label manusia.

Contoh tanda tangan

Format Byte pertama (hex) MIME
JPEG FF D8 FF image/jpeg
PNG 89 50 4E 47 0D 0A 1A 0A image/png
GIF87a 47 49 46 38 37 61 image/gif
GIF89a 47 49 46 38 39 61 image/gif
WebP 52 49 46 46 ... 57 45 42 50 image/webp
PDF 25 50 44 46 (%PDF) application/pdf
ZIP / JAR / ODT / DOCX 50 4B 03 04 application/zip (atau yang spesifik)
gzip 1F 8B 08 application/gzip
MP4 (ISO BMFF) 00 00 00 XX 66 74 79 70 video/mp4
MP3 49 44 33 atau FF FB audio/mpeg
FLAC 66 4C 61 43 audio/flac
WAV 52 49 46 46 ... 57 41 56 45 audio/wav
ELF (Binary Linux) 7F 45 4C 46 application/x-executable
Windows PE (exe) 4D 5A application/x-msdownload

Mengapa ekstensi tidak cukup

  • Keamanan: File resume.pdf yang diunggah, padahal sebenarnya merupakan .exe, dapat menghindari filter ekstensi sederhana. Solusinya adalah deteksi MIME di sisi server.
  • Tidak sesuai jenis konten (Content-Type). Browser dapat mengirimkan format MIME yang salah saat proses pengunggahan; membaca byte magic akan menunjukkan apa sebenarnya isi data tersebut. – Backup yang telah dipulihkan. Ekstensi file terkadang hilang atau dihilangkan; fitur analisis konten memungkinkan Anda mengidentifikasi jenis setiap file.

Keluarga berbasis ZIP

Banyak format modern pada dasarnya merupakan arsip ZIP; nama filenya biasanya diawali dengan PK\x03\x04, sama seperti arsip ZIP lainnya.

Office Open XML: .docx, .xlsx, .pptx.

  • OpenDocument: .odt, .ods, .odp.
  • EPUB: .epub. – APK untuk Android: .apk.
  • Java JAR: .jar.

Untuk membedakan keduanya, detektor akan memeriksa isi ZIP untuk mencari file manifest ([Content_Types].xml untuk OOXML, mimetype untuk ODF/EPUB).

Kombinasi yang Berguna

  • 512 byte pertama mencakup sebagian besar tanda tangan format.
  • 4 KB pertama mencakup format berbasis ZIP, di mana manifest terletak pada bagian yang lebih lanjut.
  • 16 KB pertama mencakup kasus-kasus khusus, seperti beberapa kontainer multimedia.

Tidak sempurna

  • File teks biasa tidak mengandung byte ajaib. Detektor akan kembali menggunakan pendekatan heuristik (apakah file tersebut valid dalam format UTF-8? Apakah bentuknya mirip dengan JSON atau XML?).
  • File yang dienkripsi atau difusi dapat tampak seperti deretan byte acak tanpa tanda tangan yang dapat dikenali. – Ambiguitas format: baik audio/wav maupun video/avi sama-sama dimulai dengan RIFF; detektor akan memeriksa identifikasi sekundernya (WAVE dibandingkan dengan AVI yang muncul empat byte kemudian).

Pertanyaan yang Sering Diajukan

Tidak. Proses deteksi berjalan di peramban Anda, hanya beberapa KB pertama yang dibaca dan diperiksa terhadap basis data tanda tangan di sisi klien. Tidak ada data yang meninggalkan perangkat Anda.

Karena OOXML, ODF, EPUB, dan JAR semuanya dimulai dengan tanda tangan ZIP, detektor akan memeriksa isi file untuk menemukan manifest khusus format tersebut dan mengembalikan kode MIME yang lebih spesifik (application/vnd.openxmlformats-...).

Metode ini mendeteksi praktik penggantian nama yang naif: file dengan nama .exe yang diubah menjadi .jpg akan ditampilkan sebagai file eksekutabel berdasarkan karakteristik byte khususnya. Penyerang canggih dapat menyisipkan payload ke dalam file media asli atau menggunakan file poliglot yang sesuai dengan berbagai pola tanda tangan digital, sehingga mampu mengatasi sistem deteksi sederhana.

Teks biasa tidak mengandung byte ajaib. Alat deteksi menggunakan metode heuristik untuk menentukan formatnya: UTF-8 yang valid? JSON yang valid? deklarasi XML? struktur CSV? Jika tidak, sistem akan kembali menggunakan format text/plain.

Basis data tanda tangan memiliki struktur yang serupa (diperoleh dari aturan libmagic Unix). Hasilnya seharusnya sesuai untuk format standar; namun untuk format yang tidak umum atau khusus, hasilnya dapat berbeda.

Alat Terkait

Alat ini tersedia dalam bahasa lain