Eclair รวมการแก้ไขสองรายการเพื่อป้องกันโหนดจ่ายค่าธรรมเนียมขุดธุรกรรมสูงเกินควร ระหว่างเปิดช่องทาง Lightning หรือปรับเงินทุนในช่องทาง และในกรณีที่ backend สร้างธุรกรรมผิดปกติ การเปลี่ยนแปลงถูกผสานเข้ากับสาขาหลักของโครงการเมื่อวันที่ 2 และ 5 ตุลาคม แต่ ณ วันที่ 12 ตุลาคม หน้าเผยแพร่ของ Eclair ยังระบุ v0.14.3 ซึ่งออกในเดือนกันยายนเป็นเวอร์ชันล่าสุด จึงยังยืนยันไม่ได้ว่าแพตช์เหล่านี้รวมอยู่ในรุ่นที่เผยแพร่แล้ว
Eclair เป็นซอฟต์แวร์โหนด Lightning ที่พัฒนาโดย ACINQ ปัญหาที่แก้ไขครอบคลุมการเปิดช่องทางแบบระดมทุนสองฝ่าย (dual funding) การปรับเงินทุนในช่องทางด้วยวิธี splice และโหมดลงนามธุรกรรม Eclair-signer ความเสียหายที่เกี่ยวข้องอาจเกิดในรูปค่าธรรมเนียมที่จ่ายให้ผู้ขุดบนเครือข่าย โดยไม่จำเป็นต้องโอนตรงไปยังที่อยู่ของผู้โจมตี
PR #3388 จำกัดค่าธรรมเนียมที่คู่สัญญาเสนอเพิ่ม
แพตช์แรกคือ PR #3388 ซึ่งจัดการธุรกรรมเพิ่มค่าธรรมเนียมแบบ Replace-by-Fee (RBF) ที่คู่สัญญาเป็นผู้เสนอ ระหว่างเปิดช่องทางแบบ dual funding หรือปรับเงินทุนผ่าน splice คู่สัญญาสามารถเสนอธุรกรรมใหม่ที่มีอัตราค่าธรรมเนียมสูงขึ้นได้ ก่อนแก้ไข หากโหนด Eclair ร่วมใส่เงินในธุรกรรม โหนดอาจต้องจ่ายค่าธรรมเนียมเพิ่มตามธุรกรรมใหม่นั้น โดยกระบวนการเดิมไม่มีเพดานหรือวงเงินค่าธรรมเนียมที่ชัดเจน
ช่องโหว่นี้เปิดทางให้คู่สัญญาที่ไม่สุจริตเรียกให้อีกฝ่ายซึ่งใช้ Eclair รับภาระอัตราค่าธรรมเนียมขุดที่สูงได้ โดยไม่ต้องร่วมจ่ายค่าใช้จ่ายส่วนนั้น ความเสียหายจึงตกอยู่ในรูปค่าธรรมเนียมที่จ่ายให้ผู้ขุด ไม่ใช่เงินที่โอนตรงไปยังคู่สัญญา
หลังการแก้ไข Eclair จะปฏิเสธคำขอที่เสนออัตราค่าธรรมเนียมสูงกว่าเพดานที่โหนดแนะนำไว้สำหรับการระดมทุน อย่างไรก็ตาม ข้อจำกัดนี้ไม่ครอบคลุมกรณีที่คู่สัญญาซื้อสภาพคล่องและจ่ายค่าธรรมเนียมแทน Eclair หรือกรณีที่โหนด Eclair ไม่ได้ร่วมใส่เงินในธุรกรรม เพราะโหนดไม่ได้รับภาระค่าธรรมเนียมตามที่แพตช์มุ่งแก้ไข
PR #3390 ตรวจสอบค่าธรรมเนียมจริงในโหมด Eclair-signer
แพตช์ที่สองคือ PR #3390 ซึ่งเกี่ยวข้องกับโหมด Eclair-signer ในโหมดนี้ Bitcoin Core backend หรือ bitcoind เป็นผู้เลือกบิตคอยน์ที่จะใช้และสร้างธุรกรรม ส่วน Eclair เก็บรักษาคีย์ส่วนตัวและใช้คีย์ดังกล่าวลงนาม การเก็บคีย์ไว้กับ Eclair เพียงอย่างเดียวไม่สามารถป้องกันความเสี่ยงจาก backend ที่ถูกเจาะได้ เพราะ backend อาจรายงานว่าค่าธรรมเนียมยังอยู่ในงบประมาณ ทั้งที่ธุรกรรมที่สร้างขึ้นจ่ายจริงสูงกว่า เช่น ด้วยการลบเอาต์พุตเงินทอนเพื่อเพิ่มค่าธรรมเนียมให้ผู้ขุด
ตามหลักการบัญชีของธุรกรรมบิตคอยน์ มูลค่าจากอินพุตที่ไม่ได้จัดสรรให้เอาต์พุตใดจะกลายเป็นค่าธรรมเนียมขุด หากเอาต์พุตเงินทอนถูกตัดออก โหนดจึงอาจสูญเสียเงินโดยที่เงินส่วนนั้นไม่ได้ถูกส่งไปยังที่อยู่ที่ผู้โจมตีควบคุม
การแก้ไขกำหนดให้ Eclair คำนวณค่าธรรมเนียมจริงจากจำนวนเงินของบิตคอยน์ที่จะนำมาใช้ และดึงธุรกรรมที่เกี่ยวข้องผ่าน transaction ID เพื่อตรวจสอบมูลค่าอินพุต จากนั้นจึงเปรียบเทียบค่าธรรมเนียมที่ backend รายงานกับค่าธรรมเนียมจริง และใช้วงเงินงบประมาณกับค่าธรรมเนียมจริง แทนการพึ่งพาตัวเลขที่ backend แจ้งเพียงอย่างเดียว
นอกจากนี้ Eclair ยังตรวจสอบว่าส่วนธุรกรรมที่สร้างขึ้นใหม่สำหรับเงินทุนของ Eclair จ่ายค่าธรรมเนียมที่ผ่านการยืนยันแล้วในจำนวนเดียวกัน และปฏิเสธธุรกรรมที่กำหนดตำแหน่งเอาต์พุตเงินทอนไม่ถูกต้อง
เวอร์ชันล่าสุดยังไม่ระบุว่ารวมแพตช์เดือนตุลาคม
การเปลี่ยนแปลงทั้งสองรายการจัดการคนละส่วน ได้แก่ การกำหนดเพดานค่าธรรมเนียมในขั้นตอน dual funding และ splice กับการตรวจสอบค่าธรรมเนียมธุรกรรมในโหมด signer ประเด็นเหล่านี้แยกจากช่องโหว่ก่อนหน้าที่เกี่ยวกับค่าธรรมเนียมปิดช่องทางแบบร่วมมือ และปัญหาการปฏิเสธการให้บริการ (DoS) หลังรีสตาร์ตโหนดซึ่งเปิดเผยเมื่อวันที่ 2 ตุลาคม
ณ วันที่ 12 ตุลาคม หน้าเผยแพร่ของ Eclair ยังคงแสดง v0.14.3 ซึ่งออกในเดือนกันยายนเป็นเวอร์ชันล่าสุด การผสานโค้ดเข้ากับสาขาหลักไม่ได้ยืนยันโดยอัตโนมัติว่าแพตช์อยู่ในรุ่นที่เผยแพร่แล้ว ผู้ดูแลโหนด Eclair จึงต้องตรวจสอบว่าบิลด์ที่ติดตั้งมีการเปลี่ยนแปลงในเดือนตุลาคมหรือไม่