Tags:
Node Thumbnail

หลังจากที่เมื่อเช้านี้ Apple ได้ปล่อยอัพเดต iOS 7.0.6 ออกมาเพื่อแก้ไขปัญหาช่องโหว่การตรวจสอบ SSL แต่ไม่ได้ลงรายละเอียดอะไรมากกว่านั้น นักวิจัยด้านความมั่นคงปลอดภัยหลายรายก็เลยพยายามที่จะวิเคราะห์ว่าปัญหาของช่องโหว่นี้เกิดจากอะไร และมีผลกระทบมากน้อยแค่ไหน

จนในที่สุดก็มีคนไปไล่ดูซอร์สโค้ดของฟังก์ชันที่ใช้แลกเปลี่ยนกุญแจ SSL เลยพบว่า สาเหตุของปัญหานี้เกิดจากการที่ Apple ใส่คำสั่ง goto fail; เกินมา 1 บรรทัด เลยทำให้ระบบไม่ตรวจสอบค่า hostname ที่ผิดพลาดในใบรับรอง SSL

อย่างไรก็ตาม ถึงแม้ว่าทาง Apple จะแก้ไขปัญหาช่องโหว่นี้ไปแล้วใน iOS 7.0.6 แต่ก็มีคนไปพบว่า Safari และฟังก์ชัน cURL ใน OS X 10.9.1 ก็มีช่องโหว่แบบเดียวกัน แต่ปัจจุบันยังไม่มีแพตช์ออกมาแก้ไข

ที่มา - ImperialViolet, Hacker News, Neowin

Get latest news from Blognone

Comments

By: nuntawat
WriterAndroidWindowsIn Love
on 22 February 2014 - 22:32 #681687
nuntawat's picture

แพทช์ -> แพตช์

By: Bigta
ContributoriPhoneAndroidUbuntu
on 22 February 2014 - 22:51 #681691 Reply to:681687
Bigta's picture

แก้แล้วครับ ขอบคุณครับ

By: tontan
ContributorAndroidSymbianUbuntu
on 22 February 2014 - 22:50 #681689
tontan's picture

เรื่องแบบนี้คงไม่มีใครที่ไม่เคยพลาด -_-


บล็อก: wannaphong.com และ Python 3

By: luckyman
ContributoriPhoneAndroidRed Hat
on 22 February 2014 - 23:00 #681692

จาก diff ที่มีคนใน Hacker News มาแปะไว้

บรรทัดที่ 631 สงสัยพลาดตอน merge

By: hisoft
ContributorWindows PhoneWindows
on 22 February 2014 - 23:13 #681693 Reply to:681692
hisoft's picture

โปรแกรม merge พลาดต้องชะตาขาด ณ บัดนี้

By: animateex
iPhoneAndroidUbuntuWindows
on 23 February 2014 - 00:49 #681708 Reply to:681692
animateex's picture

นึกว่า Ctrl + v รัวเกินไปหนึ่งครั้ง

By: inkirby
ContributoriPhoneAndroidIn Love
on 22 February 2014 - 23:16 #681695
inkirby's picture

If you fail, you fail twice. - คนเขียนโค้ดไม่ได้กล่าวไว้


Dream high, work hard.

By: giogio
Android
on 22 February 2014 - 23:44 #681700
giogio's picture

ใช้ goto นี่มันฆ่าตัวตายชัดๆ effective c++ ถึงกับสั่งห้ามใช้เลยทีเดียว

By: kitarotao
iPhoneWindows PhoneAndroidBlackberry
on 22 February 2014 - 23:56 #681701 Reply to:681700
kitarotao's picture

แต่ Objective-C ไม่ได้ห้ามไว้

By: puka56k
AndroidBlackberry
on 23 February 2014 - 00:38 #681705 Reply to:681700

ขอความรู้นิดครับ พอดีไม่ได้เขัยน C ไม่ทราบว่าทำไมคำสั่งนี้ถึงน่ากลัวครับ

By: Aorjor on 23 February 2014 - 01:21 #681714 Reply to:681705

เกี่ยวกับการ JUMP ไปตำแหน่งของ Address ของ ROM, RAM หรือ Storage อื่นๆ หรือเปล่าครับ ถ้า Source code ถูก compile จะได้ภาษาในระดับต่ำกว่าลงไป ถ้าเป็น Assembly มาแกะกลับ สามารถทำให้มันกระโดดข้ามขั้นตอนเช่นยืนยันตัวตนก่อนเปิดโปรแกรมที่ถูก compile แล้วได้เลย อันนี้ข้อสันนิษฐานของผม

By: lew
FounderJusci's WriterMEconomicsAndroid
on 23 February 2014 - 01:40 #681719 Reply to:681705
lew's picture

ถ้าเป็นแนวทางการเขียนโปรแกรมโดยทั่วไป การใช้ GOTO ทำให้เสีย "โครงสร้าง" โปรแกรมครับ กระบวนการวิเคราะห์ว่าโปรแกรมอยู่ในสถานะใดจะยากขึ้นอีกมาก ขณะที่การใช้ if-else-loop ไปเรื่อยๆ เราดูได้เสมอว่าโปรแกรมจะรันโค้ดบรรทัดไหนได้สถานะแบบไหน


lewcpe.com, @wasonliw

By: nuntawat
WriterAndroidWindowsIn Love
on 23 February 2014 - 02:05 #681724 Reply to:681719
nuntawat's picture

+1

หลายครั้งก็พลาดกันง่ายๆ แบบนี้

By: bitworld
AndroidSymbianUbuntuWindows
on 23 February 2014 - 04:33 #681739 Reply to:681719
bitworld's picture

+1

By: puka56k
AndroidBlackberry
on 23 February 2014 - 13:35 #681776 Reply to:681719

ขอบคุณมากครับ :)

By: sid
Writer
on 23 February 2014 - 17:37 #681845 Reply to:681705
By: BLiNDiNG
AndroidUbuntuWindowsIn Love
on 23 February 2014 - 04:07 #681734 Reply to:681700
BLiNDiNG's picture

เหมือนเคยอ่านเจอว่า ท้ายที่สุดแล้ว ลูป หรือ goto จะถูก compile ไปเป็น jump

ดังนั้นในกรณีที่อยาก optimize มากๆ และ ไม่อยากให้ compiler มานั่ง optimize อีกต่อ เพราะมี nested หลายๆชั้น จนมึน

ในระดับ OS เลยมีใช้ goto อยู่บ้าง แต่ก็มักกระโดดกันแค่ในฟังก์ชันเดียวกัน

By: neizod
ContributorTraineeIn Love
on 23 February 2014 - 15:57 #681822 Reply to:681700
neizod's picture

เท่าที่เคยอ่าน code พวก compiler ที่เขียนด้วย C ก็เห็นใช้ goto กันบ่อยๆ คือ goto error แล้วให้โปรแกรมตายฮะ ก็ถือว่ายอมรับได้นะเพราะ C มันไม่มี throw exception

ว่าแต่เมื่อไหร่ไอ้สไตล์การเขียน code แบบ if / for กับ statement เดียวแล้วยอมไม่มีวงเล็บปีกกามันจะหมดไปซักที ไม่ได้เขียน python นะยอมเปลืองหน่อยก็ได้ :/

By: hisoft
ContributorWindows PhoneWindows
on 23 February 2014 - 17:47 #681846 Reply to:681822
hisoft's picture

+1 ย่อหน้าสุดท้าย orz

By: ComSci-MFU
Windows PhoneAndroidWindows
on 23 February 2014 - 18:18 #681852 Reply to:681822
ComSci-MFU's picture

บางทีมีย่อเหลือ condition ? true: false; อีก

By: neizod
ContributorTraineeIn Love
on 23 February 2014 - 19:04 #681857 Reply to:681852
neizod's picture

cond ? on_true : on_false; ผมสนับสนุนนะ เพราะมันบังคับอยู่แล้วว่า on_true กับ on_false ต้องเป็น expression เดี่ยวๆ (ยังไม่เป็น statement ด้วยซ้ำ) ลองดูอย่าง

if (cond) {
    $foo = 'bar '.$i;
} else {
    $foo = 'qux '.$j;
}

เทียบกับ

$foo = cond ?
       'bar '.$i :
       'qux '.$j ;