Tags:
Node Thumbnail

กูเกิลรายงานถึงความเปลี่ยนแปลงภาพรวมของช่องโหว่ความปลอดภัยในแอนดรอยด์โดยเฉพาะช่องโหว่หน่วยความจำที่เป็นกลุ่มใหญ่ เดิมเคยมีรายงานช่องโหว่รวมถึง 75% ของช่องโหว่ทั้งหมด แต่นับจาก Android 11 เป็นต้นมาแอนดรอยด์ก็เริ่มมีโค้ดภาษา Rust เข้ามามากขึ้นเรื่อยๆ จนโค้ดในกลุ่มเนทีฟที่เป็นภาษา Rust ที่เพิ่งเพิ่มเข้ามาใน Android 13 นั้นสูงถึง 21% ใกล้เคียงกับภาษา C แล้ว รวมเฉพาะโครงการ AOSP มีโค้ด Rust ทั้งหมด 1.5 ล้านบรรทัด และจนตอนนี้ก็ยังไม่มีช่องโหว่หน่วยความจำในโค้ดภาษา Rust เลย

โค้ดภาษา Rust ในแอนดรอยด์มากขึ้นเรื่อยๆ พร้อมๆ กับช่องโหว่หน่วยความจำในแอนดรอยด์ก็ลดลงต่อเนื่องเช่นเดียวกัน ในปี 2022 นี้จะเป็นปีแรกที่ช่องโหว่หน่วยความจำของแอนดรอยด์ลดลงเหลือไม่ถึงครึ่งหนึ่งของช่องโหว่ทั้งหมด

กูเกิลคาดว่าเมื่อใช้งานไป สุดท้ายก็น่าจะพบช่องโหว่หน่วยความจำในโค้ดส่วนที่เขียนด้วย Rust ในที่สุด แต่กระนั้นภาษา Rust ก็แสดงให้เห็นว่ามันสามารถลดช่องโหว่ต่อบรรทัดของโค้ดได้อย่างมีประสิทธิภาพ แม้ว่า Rust จะรองรับการเขียนโปรแกรมแบบ unsafe ที่ไม่ป้องกันหน่วยความจำแต่ก็มีการใช้งานน้อย และยังไม่ได้สร้างช่องโหว่

นอกจากช่องโหว่หน่วยความจำแล้ว ความร้ายแรงของช่องโหว่แอนดรอยด์ก็ยังมีแนวโน้มลดลง ช่องโหว่ร้ายแรงระดับวิกฤติลดลงเหลือต่ำกว่า 20% ขณะที่ช่องโหว่ที่เปิดให้คนร้ายโจมตีจากระยะไกลก็เหลือต่ำกว่า 40%

ที่มา - Google Security Blog

No Description

Get latest news from Blognone

Comments

By: mskmktx on 2 December 2022 - 11:26 #1270934

ใครๆก็ชอบ Rust

By: rattananen
AndroidWindows
on 2 December 2022 - 11:52 #1270937

ช่วงที่ผมเป็นนักเรียนที่ต้องเขียนภาษาไทยบ่อยๆ
เขียนไปสัก 1.5 ล้านบรรทัด ผมก็เขียนสวยขึ้น เขียนผิดน้อยลงเหมือนกัน

แบบนี้แสดงว่าภาษาไทยช่วยลดข้อผิดพลาดในการเขียนด้วยหรือไม่?

By: panther
ContributorAndroidUbuntuWindows
on 2 December 2022 - 12:03 #1270940 Reply to:1270937
panther's picture

น่าจะผิดประเด็นนะครับ
Rust มันถูกออกแบบมาโดยเน้นเรื่อง momory safty อยู่แล้ว แต่พวกที่ไม่ชอบ rust จะบอกว่าเพราะยังไม่ได้ถูกใช้ในโปรเจคใหญ่มากๆ เลยไม่มีปัญหา
ในข่าวคือเขียนมาแล้ว 1.5 ล้านบรรทัดก็ยังไม่เจอปัญหา
ถ้าเยอะกว่านี้อาจจะเจอ

ไม่ใช่ว่าเขียนไปแล้ว 1.5 ล้านบรรทัดแล้วเก่งขึ้นจนไม่มีปัญหา..

By: rattananen
AndroidWindows
on 2 December 2022 - 12:32 #1270943 Reply to:1270940

ผมไม่ได้สนใจตรง ใครชอบไม่ชอบครับ และย่อหน้าที่ 3 เขาบอกใช้ Rust แล้วช่องโหว่ลดผมก็เชื่อ

แต่ผมคิดว่ามันมี factor อื่นๆ อีก
อย่างความรู้, ความเชี่ยวชาญของคนเขียนที่เกิดจากการฝึกฝนรวมอยู่ด้วย
ซึ่งอาจจะมีผลมากกว่าการใช้ Rust ครับ

ผมอาจประหลาดนึดนึงที่มองว่า Segmentation fault มันเป็น feature ของภาษา program
การที่ภาษา Segmentation fault ง่ายๆ หมายถึงเราจะเขียน program ยังไงก็ได้ ไม่ถูกจำกัดโดยภาษาน่ะครับ

By: panther
ContributorAndroidUbuntuWindows
on 2 December 2022 - 14:56 #1270970 Reply to:1270943
panther's picture

คนที่เค้าสร้าง rust เค้าก็เชี่ยวชาญ c หรือ c++ นะ
ถ้าแค่เชี่ยวชาญอย่างเดียว โดยไม่มี feature ของภาษาเข้ามาช่วยแล้วมันป้องกันปัญหาได้ทั้งหมด
เค้าคงไม่น่าจะสร้าง rust ขึ้นมานะ...

เหมือนบอกว่าถ้า เขียน js เชี่ยวชาญ ts ก็ไม่สำคัญ ในการป้องกันปัญหาตอน runtime หลายๆเรื่อง
ถ้าคนเขียน ts แล้วบั๊ก type mismatch น้อยกว่า
ทาง js นี่เพราะคนชำนาญ ts หรือเพราะฟีเจอร์ของ ts ละครับ

By: rattananen
AndroidWindows
on 2 December 2022 - 15:57 #1270976 Reply to:1270970

สิ่งที่ผมคิดคือ คนที่ทำให้ program มี bug หรือช่องโหว่ก็คือคนเขียนครับ ไม่ใช่ภาษา

ทำให้ผมคิดว่าถ้าเรามีความรู้ ความเชี่ยวชาญ เรื่องที่มัน fundamental (heap/stack, I/O, data structure, thread, programming pattern, ...) แล้ว ไม่ว่าจะให้ใช้ภาษาอะไรมันเราก็จะสามารถเขียนได้ดีขึ้นน่ะครับ

และที่ผมอยากจะสื่อทีแรกเลยคือ statistic ในข่าวมัน misleading
ประมาณว่ามี Stat การที่ผมกินยากลดความอ้วนใน 3 เดือน แล้วสรุปกว่า ผมน้ำหนักลดเพราะยาลดความอ้วน

แต่มีความจริงที่ไม่อยู่ใน Stat อีกคือผมลดการกินอาหารด้วย

By: nitpum
Contributor
on 2 December 2022 - 17:53 #1270988 Reply to:1270976
nitpum's picture

ความรู้ ความเชี่ยวชาญ ทำให้เขียนโปรแกรมได้ดีขึ้นก็จริงครับ แต่ผมไม่เชื่อว่ามนุษย์เราจะไม่ทำผิดพลาดเลย ไม่ว่าจะเก่งขนาดไหนก็ตาม

ซึ่ง Rust มาช่วยกันพวกความผิดพลาด มาคอนเตือนเรื่องพวกเหล่านั้นให้ครับ ผมว่ามันมีผลอยู่นะมันมาช่วยเพิ่มความมั่นใจในโค้ดเรา

ก็เหมือนกับ js และ ts แหละครับ ไม่จำเป็นต้องเขียน ts ก็ได้ มีความรู้และชำนาญใช้ js อย่างเดียวได้เลยสะดวกและอิสระกว่าด้วย แต่จะมั่นใจแค่ไหนว่าจะไม่ทำอะไรผิดพลาดเลย ซึ่ง ts ก็มาช่วยกันช่วยเตือนให้


บล็อก: nitpum.com

By: Hoo
AndroidWindows
on 2 December 2022 - 18:01 #1270989 Reply to:1270976

ถ้าเทียบการเขียนโปรแกรมบน C,C++
มันเหมือนเดินบนทางแคบๆบนยอดผา ถ้าก้าวพลาดคือหล่น
เดินเยอะๆ มันก็มีโอกาสหล่นน้อยลงจากความชำนาญ
แต่ชำนาญยังไงก็มีเผลอมีหลุดได้

แต่ใช้ Rust มันเหมือนมีราวจับ+กั้นให้ด้วย
มือใหม่ไม่ต้องใช้ความชำนาญมาก
มือเก่าที่ชำนาญก็จะไม่พลาดเพราะเผลอ

นี่คือผลของความแตกต่างของภาษาครับ

By: arth
iPhoneWindows PhoneWindows
on 2 December 2022 - 19:37 #1270991 Reply to:1270976

โค้ด Rust ทั้งหมด 1.5 ล้านบรรทัด และจนตอนนี้ก็ยังไม่มีช่องโหว่หน่วยความจำในโค้ดภาษา Rust เลย

ผมว่าคุณจับประเด็นผิดนะ เค้าไม่ได้ว่าไม่มี bug เค้าอ้างว่าไม่มีช่องโหว่หน่วยความจำเลย

ซึ่งถ้าเขียนภาษา C ส่ง pointer พลาดทีก็เจอ Segmentation Fault Core Dumped กันละ แต่ถ้ามาเป็น Rust (ผมก็ไม่เคยแตะภาษานี้แหละครับ) ตอน compile ก็คงมีที้งช่วยเตือน หรือ error เลย ทำให้หาจุดที่น่าจะเป็นปัญหาได้ง่ายและไม่หลุด

ส่วนเรื่องเขียนมี bug (ที่ไม่เกี่ยวกับหน่วยความจำ) มีไหม ก็น่าจะมีได้ เค้าไม่ได้พูดถึง

ถ้าอยากจะเทียบ ผมก็หาเรื่องเปรียบเทียบได้ครับ ตอนผมเรียนขับรถด้วยเกียร์กระปุก รถดับประจำตอนเปลี่ยนเกียร์ 1 มา 2 พอผมมาขับเกียร์ auto ก็ไม่มีปัญหาเรื่องรถดับตอนเปลี่ยนเกียร์เลยครับ

By: rattananen
AndroidWindows
on 2 December 2022 - 21:03 #1270994 Reply to:1270991

สิ่งที่ผมจะสื่อมันไม่ใช่ประเด็นหลักในข่าวน่ะครับ
ลองอ่าน reply ของคุณ lew ดูดีๆ อันนี้เข้าใจถูก 105% (reply เหมือนรู้ว่าผม bias ไปนิดๆ)
ผมให้คะแนนเต็มวิชา Information and communication ไปเลย

By: puwadon
Windows
on 3 December 2022 - 09:39 #1271022 Reply to:1270976

แต่ภาษามันทำให้ความผิดพลาดน้อยลงได้ครับ

By: bow_der_kleine
WriterAndroidUbuntu
on 3 December 2022 - 10:27 #1271031 Reply to:1270943
bow_der_kleine's picture

"Segmentation fault มันเป็น feature ของภาษา"

ชอบประเด็นนี้ มีโปรเจคเริ่มต้นใหม่ที่ผมเลือกภาษาเองได้ ลังเลอยู่ระหว่าง Rust กับ C++ ที่จริงก็อยากใช้ Rust มากกว่า เพราะมองเรื่อง memory safety เหมือนกัน แต่พอมาดูเนื้องานแล้วพบว่า manual memory management เป็น feature ที่ทำให้ optimize โปรแกรมได้ง่ายขึ้น ถามว่า Rust ทำได้ไหม ก็ได้แหละ แต่ชีวิตจะยากขึ้น และสุดท้าย memory safety ที่อยากได้ก็ไม่ได้

By: lew
FounderJusci's WriterMEconomicsAndroid
on 2 December 2022 - 15:48 #1270974 Reply to:1270937
lew's picture

correlation != causation ถูกต้องครับ ตัวบทความต้นทางก็เขียนไว้ว่าต้องระวังเรื่องนี้ว่าอาจจะมีเหตุอื่นๆ แต่ระดับของความแตกต่างของปริมาณช่องโหว่ต่อบรรทัดมันก็สูงมาก

คนเขียนใน AOSP (และคนที่รีวิวโค้ด) โดยรวมประสบการณ์น่าจะไม่ต่างกันมากนัก เราอาจจะสงสัยได้อยู่ดีว่ามีเหตุอื่นๆ เช่น โปรแกรมเมอร์ที่มาเขียน Rust เป็นกลุ่มระวังต่อช่องโหว่หน่วยความจำอยู่ก่อนแล้ว (เลยเลือก Rust) พวกนี้ต้องการการศึกษาเพิ่มเติม

แต่พอมองเลขใหญ่แล้วมันไม่มีช่องโหว่หน่วยความจำในโค้ดขนาดใหญ่เลย เราน่าจะพออนุมานได้ว่ามีผลอย่างน้อยก็บางส่วน


lewcpe.com, @wasonliw