Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Doom
public://topics-images/doom_logo.png
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Threads
public://topics-images/threads-app-logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Fortnite
public://topics-images/fortnitelogo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
PS5
public://topics-images/playstation_5_logo_and_wordmark.svg_.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png
True
public://topics-images/true_logo.png
SoftBank
public://topics-images/softbank.jpg
Pac-Man
public://topics-images/pacman.png
Harry Potter
public://topics-images/harry.png
Marvel
public://topics-images/marvel.png
Skydance
public://topics-images/skydance.png
SEA
public://topics-images/sealogo.png
Find My Device
public://topics-images/find.png
Gemini
public://topics-images/google_gemini_logo.svg__1.png
Accessibility
public://topics-images/accessibility-128x128_2x.png
Material Design
public://topics-images/m3-favicon-apple-touch.png
Android 16
public://topics-images/android16.png
Android
public://topics-images/android_0.png
Rust ต้องมาแล้วแบบนี้
panther Sat, 05/01/2021 - 11:05
Rust ต้องมาแล้วแบบนี้
ผมว่ามันก็ปกติรึเปล่าครับ c
mode Sat, 05/01/2021 - 14:35
ผมว่ามันก็ปกติรึเปล่าครับ c เป็นภาษาระดับกลาง คนเขียนโปรแกรมต้องดูเองไม่ให้จองเม็มเกิน ไม่เขียนเม็มเกินที่จองอะไรแบบนี้
ที่ไม่ปกติคือไม่ควรปล่อยช่องโ
SpeedEX Sat, 05/01/2021 - 14:56
In reply to ผมว่ามันก็ปกติรึเปล่าครับ c by mode
ที่ไม่ปกติคือไม่ควรปล่อยช่องโหว่นี้ออกมาครับ
ปกติครับแต่ os ต้องเช็คก่อน
deaknaew Sat, 05/01/2021 - 16:30
In reply to ผมว่ามันก็ปกติรึเปล่าครับ c by mode
ปกติครับแต่ os ต้องเช็คก่อน ไม่งั้นปล่อยให้ crash (เช่นจอฟ้า) ก็ไม่ควร
เพราะอาจเกิดโปรแกรมประสงค์ร้าย ที่จงใจทำการ overflow ก็ทำให้ไปอ่าน mem ของส่วนอื่น ทำให้เกิดการ hack ได้อีกด้วย
ผมมองว่างี้
mr_tawan Sat, 05/01/2021 - 21:42
In reply to ปกติครับแต่ os ต้องเช็คก่อน by deaknaew
ผมมองว่างี้
ฟังก์ชันนี้ปรกติจะ allocate ข้อมูลก้อนนึงมาบน heap ตามที่ขอ ถ้ามันใหญ่เกินไป allocate ไม่ก็ ก็จะคืนค่า NULL กลับมา
การที่มันไม่เช็คขนาดเลยแล้ว allocate เลย จริง ๆ ต่อให้เป็นก้อนที่เล็กแค่ไหนก็ตามก็มีโอกาสที่จะ overflow ได้ ยกเว้นแต่ว่ามัน hardcode ไว้เลยว่าจะให้ก้อนใหญ่ขนาดไหน (จริง ๆ ก็มี memory allocator ที่ทำงานแบบนี้เหมือนกัน แต่ปรกติมันก็จะคืนก้อนที่ใหญ่กว่าที่ขอมาอยู่ดี)
ผมก็เลยรู้สึกว่าถ้ามันไม่เช็คเลยแล้วมันจะผ่าน unit test มาได้ไงหว่า??
เท่าที่ผมอ่านเข้าใจจากโค้ดตัว
willwill Tue, 05/04/2021 - 15:48
In reply to ผมมองว่างี้ by mr_tawan
เท่าที่ผมอ่านเข้าใจจากโค้ดตัวอย่างในบล็อคต้นทางคือ ฟังค์ชั่นพวก malloc ต่างๆ มันจะมี overhead อยู่ซึ่งเวลา malloc มันจะเอา input เราไปบวก overhead เข้าไปซึ่งเราอาจจะ validate input มาแล้วว่า fit ภายใน max value ของ data type ที่ใช้ แต่เราไม่รู้ว่าค่าที่ใช้จริงๆ ถูกบวก overhead เข้าไปอีก (หรือรู้ก็ไม่รู้ว่าเท่าไรคือ max value ที่ safe)
ผมคิดว่า overhead เป็น implementation detail ของ malloc ที่แต่ละ OS หรือ CPU architecture ก็อาจจะไม่เท่ากัน มันก็เลยไม่รู้ว่าจะดักเท่าไรคือค่าที่ปลอดภัยนอกไปจากว่า input นั้นมี sane value ตามธรรมชาติอยู่แล้ว
แล้วผู้ประสงค์ร้ายจะเข้าถึงฟั
mr_tawan Sat, 05/01/2021 - 21:33
แล้วผู้ประสงค์ร้ายจะเข้าถึงฟังก์ชันนี้ได้อย่างไรครับ?
ซอฟต์แวร์ที่ยืนยันว่ามีช่องโห
arayaphong Sun, 05/02/2021 - 06:40
In reply to แล้วผู้ประสงค์ร้ายจะเข้าถึงฟั by mr_tawan
ไม่รู้ใช่คำตอบที่อยากรู้ป่าวนะครับ (เห็นตอบไว้เหมือนเข้าใจดีอยู่แล้ว)
ถ้าผมเป็นผู้ประสงค์ร้ายก็ทำให้มันเกิด overflow ด้วยวิธีนี้(ถ้าเป็น linux ก็เหมือนได้สิทธิ์รูท)แล้วอยากจะอ่าน mem ส่วนไหนก็ได้หมดและ
อันนี้แล้วแต่ระดับ
lew Tue, 05/04/2021 - 16:26
In reply to แล้วผู้ประสงค์ร้ายจะเข้าถึงฟั by mr_tawan
อันนี้แล้วแต่ระดับ application อีกทีครับ แต่โดยทั่วไปแล้วหากหน่วยความจำไม่พอ ฟ้งก์ชั่น malloc มันควรแจ้งความผิดพลาดได้เอง (เช่น return -1) ระดับ application นั้นมีหน้าที่ตรวจสอบค่าผิดปกติ เช่น เลขติดลบหรือข้อมูลไม่ใช่ตัวเลข แต่เมื่อต้องขอหน่วยความจำแล้วขนาดมันใหญ่เกินไป malloc ก็ต้องแจ้งว่าผิดพลาด ไม่ใช่คืนค่าแบบคาดเดาไม่ได้จนกลายเป็น buffer overflow แบบนี้
พอ lib ระดับล่างมันไม่ทำหน้าที่ของมัน ก็กลายเป็นช่องทางของแฮกเกอร์ใช้ร่วมกับช่องโหว่อื่นๆ ได้ เช่น กระตุ้นผ่านข้อมูลขนาดใหญ่ให้เกิด buffer overflow ก่อน