Android

กูเกิลรายงานถึงความเปลี่ยนแปลงภาพรวมของช่องโหว่ความปลอดภัยในแอนดรอยด์โดยเฉพาะช่องโหว่หน่วยความจำที่เป็นกลุ่มใหญ่ เดิมเคยมีรายงานช่องโหว่รวมถึง 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

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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