Address Space Layout Randomization

วันนี้เจอเรื่องประหลาดที่ไม่ค่อยได้เจอเยอะ เอามาจดเอาไว้

ปัญหาสำคัญในเรื่องของความปลอดภัยของซอฟต์แวร์คือเวลาที่โปรแกรมเมอร์ทำงานพลาด แล้วปล่อยให้แฮกเกอร์เอาโค้ดอื่นๆ มารันในซอฟต์แวร์ตัวเองได้ เช่นบั๊ก Buffer Overflow แฮกเกอร์มักหาทางไปต่อด้วยการหาคำสั่งอื่นๆ โดยเฉพาะพวก System Call ที่สร้างความเสียหายให้กับระบบ หรือเปิดช่องโหว่อื่นๆ ขึ้นมาเรื่อยๆ ง่ายๆ เช่นการสั่ง system() นั้นหมายความว่าแฮกเกอร์จะทำอะไรก็ได้เท่าที่ user ที่รันโปรแกรมนั้นทำได้

ตาม Murphy’s Law แล้ว โปรแกรมที่มีบั๊กนั้นมักจะรันใน root เสมอ

ในดอสนั้นปัญหาอย่างนี้เกิดง่ายมาก เพราะว่าตำแหน่งของ System Call ต่างๆ นั้นตายตัว ถ้าอ่านคู่มือของ OS มาเยอะๆ ก็จะรู้ทันทีว่าควร Jump ไปยัง Address ไหนเพื่อเรียก System Call อะไร เรียกว่าเจาะเข้า process ได้ปุ๊บก็เรียบร้อยกันไปเลย

แล้วอย่างนั้นจะทำยังไงดี

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

ในทางวิศวกรรมมันมีทางออกที่มีปัญญามากกว่านั้น คือการลดความเสียหายเมื่อแฮกเกอร์เจาะเข้ามาในตัว process ได้แล้วนั้น แฮกเกอร์มีโอกาสสำรวจหน่วยความจำของโปรเซสไม่มากนัก เพราะถ้าทำอะไรมากเกินไปก็อาจจะทำตัว process ตายไปเองได้

คิดง่ายๆ คือเอา System Call ไปซ่อนมันซะเลย ทีนี้จะซ่อนมันที่ไหนดี เพราะถ้าถ้าซ่อนแล้วแฮกเกอร์รู้ มันก็ตามไปรังควานอีกจนได้นั่นแล

ในลินุกซ์นั้นเลยคิดอะไรที่ง่ายกว่านั้นคือการวางตำแหน่งของ ไลบราลี, Heap, Stack ฯลฯ ให้มั่วจนเละเทะ ทีนี่เวลาแฮกเกอร์เจาะเข้ามาได้ก็จะเริ่มทำอะไรไม่ถูก เพราะไม่รู้อะไรอยู่ตรงไหน จะไล่กวาดมั่วซั่ว ก็กวาดไปได้แป๊บเดียวก็พลาดไปทำ exception ขึ้นแล้วโปรแกรมก็ segmentation fault ไป

เทคนิคนี้เรียกย่อๆ ว่า ASLR (Address Space Layout Randomization) มันถูกเสนอขึ้นมาครั้งแรกในปี 2001 ถูกเปิดใช้งานเป็นค่ามาตรฐานในลินุกซ์ครั้งแรกในรุ่น 2.6.12 หรือช่วงปี 2005 ส่วนวินโดวส์นั้นใช้งานครั้งแรกตอน Vista และ Windows Server 2008 แต่พบว่ามีปัญหาในการสุ่มอยู่บ้าง และได้รับการแก้ไขใน SP1 ส่วน OS X นั้นรุ่น 10.5 แม้จะมีการสุ่มตำแหน่งไลบราลีบ้างแต่ก็ไม่ได้ทำเต็มที่อย่างเช่น OS ตัวอื่นๆ นัก

อ่อ ลืมไปว่าบล็อกนี้ geek จัด ถ้าอ่านมาแล้วเหมืนออ่านภาษาขอมก็ขออภัยผู้อ่านครับ

 

Virtual Economics: ทางออกของทุนนิยม?

ผมเขียนเรื่องนี้ต่อจากตอนที่แล้วในการ[แสดงความเห็นทางด้านเศรษฐกิจ](http://lewcpe.com/blog/archives/779/my-opinions-on-economics/) ซึ่งในเวลาใกล้ๆ กันคุณ [bow_der_kleine](http://www.biolawcom.de/profile/1) ซึ่งเขียนบล็อกแบบนานๆ ทีเหมือนผมก็[เขียนเรื่องใกล้ๆ กัน](http://www.biolawcom.de/blog/874/Produce-for-Whom.html)ขึ้นมา ผมเลยเขียนบล็อกนี้โดยตั้งใจที่จะต่อจากทั้งสองอัน

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

ปัญหาสำคัญของระบบทุนนิยมคือ ความโลภที่ว่านั้นมีไม่จำกัด ผมไม่เชื่อในความ “ปากดี” ของใครสักคนที่ไม่เคยจับเงินก้อนใหญ่ๆ ที่พร่ำบอกว่าถ้าตัวเองมีเงินเท่านั้นเท่านี้แล้วจะพอ ผมเชื่อว่าธรรมชาติของมนุษย์นั้นไม่เคยพอ เหมือนที่อาจารย์ผมสอนเสมอว่า **”Human consumes unlimited resources.”** ผลความเลวร้ายนี้คือการพยายามผลิตที่เพิ่มขึ้นอย่างไม่หยุดยั้ง และความต้องการตลาดเพื่อที่จะบริโภคสิ่งที่ถูกผลิตขึ้นมานั้นอย่างไม่หยุดยั้งเหมือนกัน

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

นึกถึงสมัยบ้านเราตื่นเหมืองแร่ดีบุก กับการเปิดตลาดในจีนทุกวันนี้นะครับ นั่นคงเป็นสองตัวอย่างที่เราเห็นกันได้ชัด

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

ผมเชื่อว่าทุนนิยมยังไปได้ต่อ ถ้าโลกไม่ถึงกาลอวสานไปซะก่อน (แต่ตอนนี้เองก็ปริ่มๆ ใช้ได้) ด้วยเศรษฐกิจเสมือน

เศรษฐกิจเสมือนคือการผลิตและการขายอะไรบางอย่างที่ไม่มีอยู่จริง ลองนึกถึงการให้ของขวัญกันใน Social Network ต่างๆ ที่มีการซื้อของ__เสมือน__จากเงิน__จริง__ เกิดเงินหมุนเวียน สร้างงานสร้างรายได้ และกำลังสร้างภาษี

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

ทุนนิยมกำลังหาทางออกของมันเอง ด้วยการสร้างธุรกิจใหม่ๆ ในวงการที่ดูจะไม่มีเหตุผลต่อการดำรงค์ชีวิตขึ้นเรื่อย สิ่งที่เราซื้อขายกันกำลังห่างออกไปจากความจำเป็นในการดำรงค์ชีวิตอย่างไม่มีที่สิ้นสุด

ลองนึกถึงตู้รองเท้าของสาวสักคนที่อาจจะมีสัก 30-50 คู่ ทุกคู่นั้นช่วยสร้างงานให้กับใครสักคนในโลกได้ผลิตรองเท้า ปัญหาคือรองเท้าเหล่านั้นต้องการทรัพยากรไม่ว่าจะเป็นพลาสติก เหล็ก และยาง มาใช้ในการผลิต ตลอดจนการใช้พลังงานในการผลิต การขนส่ง และการใช้ที่ดินในการจัดเก็บคงคลัง การแสดงสินค้า ฯลฯ ยิ่งเราซื้อมาก โลกของเราก็จะยิ่งบอบช้ำ แต่หากเป็นการซื้อรองเท้าใน Second Life การรบกวนโลกจะต่ำลงจนใกล้ศูนย์ ในโลกเสมือน เราอาจจะซื้อดอกไม้ให้สาวได้นับร้อยช่อ (ให้กี่คนนี่อีกเรื่อง) โดยที่ไม่มีการตัดต้นไม้จริงเลย สาวๆ จะซื้อชุดใหม่ได้ไม่ยั้ง

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

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

ข่าวร้ายคือ เมื่อเราอิงกับวัตถุเสมือนมากขึ้นเรื่อยๆ แล้ว วันหนึ่ง…

เราก็จะไปอยู่กันใน The Matrix

 

My Opinions on Economics

ว่าจะเขียนบทความตระกูล “My Opinion on …” ออกมาซักชุดจะได้ลำดับจุดยืนตัวเองไปในตัวว่ามองเรื่องอะไรยังบ้าง ผลัดตัวเองมานานก็เริ่มด้วยเศรษฐศาสตร์ก่อนเลยแล้วกัน

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

ระบบอื่นๆ ที่พยายามแสวงหาความเป็นอุดมคติเช่นคอมมิวนิสต์นั้นคงไม่สามารถใช้งานได้จริงในโลกของเราที่ทุกคนยังคงต้องอาศัยแรงกระตุ้นจากความเหนือชั้นกว่าคนอื่นๆ มาผลักดันให้เราทำอะไรบางอย่างให้กับโลก แน่นอนว่าวันหนึ่งมันคงไม่เป็นอย่างนั้นอีกต่อไป นึกถึงเรื่อง Star Trek ที่ลูกเรือเคยถูกถามว่าได้เงินเดือนกันหรือไม่ แล้วลูกเรือตอบกลับไปว่า “ไม่ เราทำงานเพราะเราต้องการพัฒนาตัวเอง” แต่น่าเสียดาย ทุกวันนี้มนุษย์เรายังต้องการ__วัตถุ__ เพื่อกระตุ้นให้เราทำงานให้กับโลกของเราอยู่

แม้ว่าระบบทุนนิยมจะมีข้อเสียหลายๆ อย่าง แต่ในปัจจุบันนี้เรามีเครื่องมีหลายต่อหลายอย่างเพื่อลดข้อด้อยของมันลงไปได้ เช่น

1. การแข่งขันสมบูรณ์ ทำให้ทุกฝ่ายเสนอทางเลือกที่ดีกว่า (โดยยังได้ผลกำไร) ให้กับประชาชนทั่วไป การแข่งขันสร้างสิ่งดีๆ ขึ้นมากมาย
2. การกำกับดูแลที่ดี ขณะที่ผู้ขายในระบบทุนนิยมนั้นคำนึงถึงผลกำไรเป็นสำคัญ ผู้กำกับดูแลนั้นต้องสร้างเงื่อนไขที่ดี เช่น ห้ามฮั้วราคากันขายแพง, ห้ามตัดราคามั่วซั่ว เพราะคู่แข่งรายใหม่ๆ จะตายไปและสุดท้ายแล้วผู้บริโภคนั่นเองที่เสียผลประโยชน์, กำหนดกรอบรับผิดชอบต่อสังคม เช่นเราอาจจะกำหนดให้ผู้ให้บริการโทรศัพท์ต้องสร้างเครือข่ายครอบคลุมพื้นที่ส่วนใหญ่ของประเทศ เพื่อกระจายความเจริญ ไม่ใช่สร้างเครือข่ายแต่เฉพาะบริเวณที่ทำกำไรได้

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

1. ภาคเอกชนมีการแข่งขันที่ดีอยู่แล้ว ไม่มีประโยชน์อะไรที่วันนี้รัฐบาลจะเปิดร้านกาแฟสด…
2. ระบบกำกับดูแลพร้อมแล้ว ทันทีที่เอกชนเริ่มทำกำไรได้ หน่วยงานรัฐที่เคยทำกิจการอยู่เดิม ควรแยกงานระหว่างการกำกับดูแล และการดำเนินกิจการออกจากกันทันที เพื่อเตรียมปล่อยให้ส่วนดำเนินการกลายเป็นเอกชน เพื่อการเตรียมการพร้อม ก็ขายทิ้งไปแล้วรัฐไปหาอย่างอื่นที่เอกชนไม่ทำเอามาทำแทน

อย่างไรก็ดี มีบางอย่างที่เอกชนไม่มีทางทำ และรัฐควรทำเสมอคือการรับประกันคุณภาพชีวิตขั้นต่ำให้กับประชาชน

ไอ้ที่เราเรียกว่าประชานิยมนั่นล่ะ….

ผมเชื่อว่ารัฐควรรับประกันคุณภาพชีวิตขั้นพื้นฐานของประชาชนให้__มากที่สุดเท่าที่รัฐจ่ายไหว__ ถ้ารัฐจ่ายเงินเดือนสักเดือนละหมื่นให้กับประชาชนทุกคนได้ รัฐก็ควรจะทำ และเหตุผลประการเดียวที่รัฐจะไม่ทำนั่นคือรัฐไม่มีเงินพอ และมีเรื่องอื่นที่สำคัญกว่าให้รัฐเอาเงินไปจ่าย (ซึ่งไม่แปลกอะไรเลย ใครจะมีเงินมากขนาดนั้นกัน)

ระบบประกันคุณภาพชีวิตพื้นฐานสำคัญที่สุดคือปัจจัยสี่บวกกับอีกสามอย่างในปัจจุบันคือ การศึกษา, การคมนาคม, และการสื่อสาร

ดังนั้นผมจึงเห็นด้วยกับโครงการสามสิบบาทมาโดยตลอด และยิ่งเห็นด้วยเมื่อรัฐบาลที่ผ่านมาเปิดให้ประชาชนเข้าใช้บริการฟรี คำถามเดียวที่ผมมีคือ รัฐบาลของเรามีเงินมาพอขนาดนั้นแล้วหรือ? เพราะการเก็บสามสิบบาทไม่ใช่การเก็บเพื่อนำมาเป็นค่าใช้จ่ายสักเท่าใหร่ เทียบกับปริมาณเงินที่รัฐจ่ายไปแล้วมันเป็นเพียงส่วนเล็กน้อย แต่ประเด็นของสามสิบบาทนั้นคือการกรองเอาคนไข้ที่ไม่หนักหนาอะไรออกไปจากระบบซะมากกว่า ในวันนี้ภาคสาธารณะสุขของเราเองมีปัญหาจำนวนมากอยู่แล้วจากการที่แพทย์ไม่เพียงพอ การเพิ่มปริมาณคนไข้ในระบบ โดยที่รัฐไม่พร้อมจะจ่ายค่าตอบแทนที่สูงขึ้นเพื่อดึงแพทย์กลับเข้าสู่ภาครัฐ หรือกระทั่งไม่มีความคุ้มครองที่ดีพอจนแพทย์ถูกฟ้องคดีอาญา (แม้จะหลุดคดีในขั้นต่อมา แต่เป็นผมผมก็ไม่อยู่แล้วล่ะ) ยิ่งซ้ำเติมปัญหาเหล่านี้เข้าไปเรื่อยๆ

การเร่งเปิดโอกาสให้กับประชาชน (ซึ่งเป็นเรื่องที่ดี) แต่รัฐไม่มีความพร้อมที่จะจ่ายค่าใช้จ่ายที่ตามมานั้น จึงอาจจะกลายเป็นเรื่องเลวร้ายที่สุดเท่าที่ผมจะนึกออกในระบบรัฐสวัสดิการ

เช่นเดียวกับประเด็นทางการแพทย์ ผมเห็นด้วยทั้งหมดที่รัฐควรจะจัดหาสิ่งพื้นฐานทุกอย่างให้ประชาชนอย่างเท่าเทียมกัน ไม่ว่าจะเป็นการคมนาคม เช่นรถเมลฟรี ผมเชื่อว่ามันน่าจะดีถ้าเราจะมีรถเมลฟรีตลอดไป แม้จำนวนจะน้อย (ตามอัตภาพรัฐบาล) แต่เป็นการประกันว่าไม่ว่าจะมีรายได้เท่าใหร่คุณก็จะมีการคมนาคมใช้งานกัน

แต่ประเด็นเรื่องของการศึกษานั้นผมสงสัยในระบบการให้เรียนฟรีแบบเหมารวมนั้นน่าสงสัยมาก เพราะรัฐบาลจ่ายเงินแบบเหมารายหัวราคาเดียวทั่วประเทศ การทำอย่างนี้สร้างข้อสงสัยว่ารัฐบาลต้องการให้โรงเรียนทั้งประเทศมีคุณภาพในระดับเดียวกันหมดจริงๆ หรือ?