เราพร้อมสำหรับโค้ดที่สร้างโดย AI แล้วหรือยัง? PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.

เราพร้อมสำหรับรหัสที่สร้างโดย AI แล้วหรือยัง

ในช่วงไม่กี่เดือนที่ผ่านมา เราประหลาดใจกับคุณภาพของใบหน้า รูปภาพแมว วิดีโอ บทความ และแม้แต่งานศิลปะที่สร้างจากคอมพิวเตอร์ ปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (ML) ได้ก้าวเข้าสู่การพัฒนาซอฟต์แวร์อย่างเงียบๆ ด้วยเครื่องมือต่างๆ เช่น GitHub Copilot, Tabnine, Polycode และคนอื่น ๆ ก้าวไปอีกขั้นเชิงตรรกะในการวางฟังก์ชันการเติมโค้ดอัตโนมัติที่มีอยู่ใน AI สเตอรอยด์ แหล่งที่มา คุณภาพ และความปลอดภัยของรหัสแอปพลิเคชันอาจแตกต่างจากภาพแมวตรงที่มีผลกระทบในวงกว้าง และอย่างน้อยก็เพื่อความปลอดภัย การวิจัยแสดงให้เห็นว่าความเสี่ยงนั้นมีอยู่จริง

ก่อน การวิจัยทางวิชาการ ได้แสดงให้เห็นแล้วว่า GitHub Copilot มักจะสร้างโค้ดที่มีช่องโหว่ด้านความปลอดภัย เมื่อเร็วๆ นี้ การวิเคราะห์เชิงปฏิบัติจากวิศวกรด้านความปลอดภัยของ Invicti Kadir Arslan แสดงให้เห็นว่า คำแนะนำรหัสที่ไม่ปลอดภัย ยังคงเป็นกฎมากกว่าข้อยกเว้นของ Copilot Arslan พบว่าคำแนะนำสำหรับงานทั่วไปหลายอย่างนั้นรวมเฉพาะชิ้นส่วนเปลือยเปล่าเท่านั้น ซึ่งมักจะใช้เส้นทางพื้นฐานที่สุดและปลอดภัยน้อยที่สุด และการยอมรับโดยไม่มีการแก้ไขอาจส่งผลให้เกิดการใช้งานที่ใช้งานได้แต่มีช่องโหว่

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

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

ซินโดรมสัตนาฟ

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

โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาที่มีประสบการณ์น้อย ความสะดวกในการรับบล็อคโค้ดฟรีกระตุ้นให้เกิดการเปลี่ยนกรอบความคิดจาก “โค้ดนี้ใกล้เคียงกับสิ่งที่ฉันจะเขียนเพียงพอหรือไม่” เป็น “ฉันจะปรับแต่งโค้ดนี้เพื่อให้มันเหมาะกับฉันได้อย่างไร”

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

ปัญหาด้านความปลอดภัยของห่วงโซ่อุปทาน

พื้นที่ วิกฤตความปลอดภัยของ Log4j ได้ย้ายการรักษาความปลอดภัยในห่วงโซ่อุปทานของซอฟต์แวร์ และโดยเฉพาะการรักษาความปลอดภัยแบบโอเพ่นซอร์สให้กลายเป็นประเด็นสำคัญด้วยล่าสุด บันทึกทำเนียบขาว เกี่ยวกับการพัฒนาซอฟต์แวร์ที่ปลอดภัยและใหม่ เรียกเก็บเงินเกี่ยวกับการปรับปรุงความปลอดภัยของโอเพ่นซอร์ส. ด้วยความคิดริเริ่มเหล่านี้และอื่นๆ การมีโค้ดโอเพ่นซอร์สใดๆ ในแอปพลิเคชันของคุณอาจต้องเขียนลงในรายการวัสดุซอฟต์แวร์ (SBOM) ในไม่ช้า ซึ่งจะเป็นไปได้ก็ต่อเมื่อคุณเจตนารวมการขึ้นต่อกันเฉพาะไว้ด้วย เครื่องมือวิเคราะห์องค์ประกอบของซอฟต์แวร์ (SCA) ยังอาศัยความรู้นั้นในการตรวจจับและทำเครื่องหมายส่วนประกอบโอเพ่นซอร์สที่ล้าสมัยหรือมีความเสี่ยง

แต่จะเป็นอย่างไรหากแอปพลิเคชันของคุณมีโค้ดที่สร้างโดย AI ซึ่งท้ายที่สุดแล้วมีต้นกำเนิดมาจากชุดการฝึกอบรมโอเพ่นซอร์ส ตามทฤษฎี หากข้อเสนอแนะที่สำคัญแม้แต่ข้อเดียวก็เหมือนกับโค้ดที่มีอยู่และได้รับการยอมรับตามที่เป็นอยู่ คุณอาจมีโค้ดโอเพ่นซอร์สในซอฟต์แวร์ของคุณ แต่ไม่มีใน SBOM ของคุณ นี่อาจนำไปสู่ปัญหาการปฏิบัติตามกฎระเบียบ ไม่ต้องพูดถึงความรับผิดหากโค้ดกลายเป็นไม่ปลอดภัยและส่งผลให้เกิดการละเมิด และ SCA จะไม่ช่วยคุณ เนื่องจากสามารถค้นหาการพึ่งพาที่มีช่องโหว่เท่านั้น ไม่ใช่ช่องโหว่ในโค้ดของคุณเอง .

ข้อผิดพลาดในการอนุญาตและการระบุแหล่งที่มา

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

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

ผลกระทบด้านความปลอดภัยที่ลึกซึ้งยิ่งขึ้น

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

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

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

จับตาดู AI

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

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

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

ประทับเวลา:

เพิ่มเติมจาก การอ่านที่มืด