Dalam beberapa hari lepas, saya mendapati bahawa kelemahan CVE-2024-11205 (CVSS 8.5) dalam pemalam Wordpress WPForms menarik perhatian ramai. Terutamanya untuk 3 sebab:
- WPForms ialah pemalam yang digunakan secara meluas, dengan lebih 6 juta pemasangan aktif (tapak menggunakannya)
- Ia adalah kerentanan kritikal yang tinggi
- Ia adalah mudah untuk difahami
Siaran Wordfence yang asal telah berjaya menjelaskan kelemahan dan akibatnya. Oleh itu, objektif saya di sini adalah berbeza: untuk membuat teori bagaimana kerentanan mudah yang pelik itu kekal terbuka selama lebih daripada setahun dalam salah satu pemalam Wordpress yang paling banyak digunakan.
Keterdedahan
Mengingat semula maklumat daripada siaran asal. Pemalam menggunakan fungsi ajax_single_payment_refund() dan ajax_single_payment_cancel() untuk mengendalikan tindakan pembayaran Stripe. Walau bagaimanapun, tiada pengesahan sama ada pengguna yang log masuk mempunyai kebenaran untuk melakukan tindakan sedemikian ⚰️. Selain itu, ciri-ciri tersebut telah "dilindungi" oleh kaedah wpforms_is_admin_ajax, yang langsung tidak menyemak sama ada pengguna adalah pentadbir, seperti yang mungkin difikirkan oleh sesetengah pihak.
Betulkan
Bermula dengan pengurangan kerentanan, penyelesaian rasmi adalah dengan mengemas kini kepada versi 1.9.2.2. Dalam versi kod ini, pengesahan kebenaran telah ditambahkan pada dua fungsi, ajax_single_payment_refund dan ajax_single_payment_cancel. Walau bagaimanapun, wpforms_is_admin_ajax disimpan seperti sedia ada?.
Bilakah kelemahan itu timbul?
Versi pertama yang terdedah ialah WPForms 1.8.4 dikeluarkan pada 28 November 2023. Versi ini memperkenalkan "Alat Pembayaran Stripe Baharu", termasuk, antara lain "Papan Pemuka Jalur Segerak" dan "Logik untuk Pembayaran Berulang".
Sebagai perubahan, kemas kini membawa penambahan 15 fail baharu, pemadaman 64 fail dan penyuntingan 425 fail. Bunyi seperti keluaran yang bagus untuk seseorang menyemak secara manual ☠️.
Mengapa kelemahan itu wujud?
Bolehkah alat keselamatan automatik mengesan?
Untuk menjawab soalan ini, saya menguji SAST Semgrep (yang saya sangat suka gunakan) dan Gepeto (aka ChatGPT).
Semgrep
Saya menjalankan semgrep . dalam keseluruhan projek dan dia tidak dapat mengesan kelemahan?.
Hasilnya seperti yang diharapkan. Secara rasmi, kelemahan kegagalan kebenaran dianggap sebagai kelemahan logik perniagaan. Ini bermakna ia hampir tidak dikesan oleh alatan automatik.
Penghitungan Kelemahan Biasa Kebenaran Hilang CWE-862 nampaknya bersetuju.
Geppetto
Saya bertanya kepada ChatGPT sama ada dia boleh mengenal pasti sebarang masalah dalam kod yang lalu. Saya hanya menghantar kaedah ajax_single_payment_refund dan wpforms_is_admin_ajax (kerana saya tidak mahu menggunakan ChatGPT percuma saya untuk hari itu?).
Dan yang luar biasa, dia berjaya mengenal pasti kelemahan dan menunjukkan penyelesaiannya (yang hampir sama dengan penyelesaian sebenar?), antara lain "kemungkinan kelemahan" dalam kod ini, seperti Tiada Pengehadan Kadar atau Pengelogan.
“ahh, tetapi anda menjalankan SAST pada keseluruhan projek, sambil mengarahkan AI” adakah kehidupan benar-benar seperti itu? ?♂️
Mengapa kelemahan itu wujud?
Seperti yang dilihat, alatan keselamatan tradisional hampir tidak dapat mengesan kelemahan kebenaran.
Menurut Keizinan Hilang CWE-862, kerentanan ini boleh dikesan menggunakan analisis manual, seperti semakan kod, pentest dan pemodelan ancaman. Dan keberkesanannya dianggap "Sederhana" sahaja?.
Bahan lain yang bercakap tentang kelemahan kebenaran menegaskan bahawa ini adalah kelas kelemahan yang rumit untuk ditangani dan biasa di dunia nyata, seperti OWASP Top 10 API Security 2019 dan 2023 yang mempunyai kelemahan kebenaran sebagai yang pertama dan ketiga kedudukan.
Perkara lain ialah kaedah yang sebelum ini digunakan sebagai pengesahan (wpforms_is_admin_ajax) mempunyai nama yang sangat buruk, direka untuk mengelirukan pembangun dan penyemak kod, kerana fungsi ini tidak menyemak sama ada pengguna yang log masuk adalah pentadbir.
Jadi, teori saya ialah kelemahan ini wujud kerana 1) tanpa analisis manual, hampir mustahil untuk dikesan; 2) kaedah wpforms_is_admin_ajax akan mengelirukan ramai pengulas yang menganalisis kod.
Saya berharap dapat membawa analisis lain seperti ini pada masa hadapan. Jika anda suka, kongsikan siaran itu dengan makcik dan nenek. Keraguan? Saya sentiasa menggunakan Bluesky, Threads dan Twitter.
Atas ialah kandungan terperinci Mengapa kelemahan ini wujud? CVE-WPForms). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Timeout sesi mutlak bermula pada masa penciptaan sesi, sementara waktu tamat sesi terbiar bermula pada masa operasi pengguna. Tamat masa sesi mutlak sesuai untuk senario di mana kawalan ketat kitaran hayat sesi diperlukan, seperti aplikasi kewangan; Timeout sesi terbiar sesuai untuk aplikasi yang mahu pengguna menyimpan sesi mereka aktif untuk masa yang lama, seperti media sosial.

Kegagalan sesi pelayan boleh diselesaikan dengan mengikuti langkah -langkah: 1. Semak konfigurasi pelayan untuk memastikan sesi ditetapkan dengan betul. 2. Sahkan kuki klien, sahkan bahawa penyemak imbas menyokongnya dan hantar dengan betul. 3. Periksa perkhidmatan penyimpanan sesi, seperti Redis, untuk memastikan bahawa mereka beroperasi secara normal. 4. Semak kod aplikasi untuk memastikan logik sesi yang betul. Melalui langkah -langkah ini, masalah perbualan dapat didiagnosis dengan berkesan dan diperbaiki dan pengalaman pengguna dapat diperbaiki.

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Menetapkan bendera httponly adalah penting untuk cookies sesi kerana ia dapat mencegah serangan XSS dengan berkesan dan melindungi maklumat sesi pengguna. Khususnya, 1) bendera httponly menghalang JavaScript daripada mengakses kuki, 2) bendera boleh ditetapkan melalui setcookies dan make_response dalam php dan flask, 3) walaupun ia tidak dapat dicegah dari semua serangan, ia harus menjadi sebahagian daripada dasar keselamatan keseluruhan.

PhpsSesionssolveThublemofMainTainStateAsmultipHttprequestsByStoringDataontheserverArverArsociatingWithauniquesession.1) merekaSTOREdataServer-sisi, biasanya

Phpsessionscanstorestrings, nombor, tatasusunan, andobjects.1.strings: textdatalikeusernames.2.numbers: integersorfloatsforcounters.3.Arrays: ListsLikeshoppingCarts.4.Objects: complextructureSturesthatareserialized.

Tostartaphpsession, usesession_start () atthescript'sbeginning.1) placeitbeforeanyoutputtosetthesessioncookie.2) usesessionsforusererdatalikeloginstatusorshoppingcarts.3)

Penjanaan semula sesi merujuk kepada menjana ID sesi baru dan membatalkan ID lama apabila pengguna melakukan operasi sensitif dalam kes serangan tetap sesi. Langkah-langkah pelaksanaan termasuk: 1. Mengesan Operasi Sensitif, 2. Menjana ID Sesi Baru, 3. Memusnahkan ID Sesi Lama, 4. Kemas kini maklumat sesi pengguna.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Dreamweaver Mac版
Alat pembangunan web visual
