﻿---
title: "การโจมตีออราเคิล"
description: "การโจมตีออราเคิลอาศัยข้อมูลภายนอกที่ถูกบิดเบือนได้ ล้าสมัย ปรับสเกลผิด หรือกำหนดค่าผิด จนโปรโตคอลให้กู้ สร้าง แลกคืน ชำระราคา หรือชำระบัญชีด้วยมูลค่าที่ไม่ปลอดภัย"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# การโจมตีออราเคิล

> จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

<a id="answer"></a>

## คำตอบโดยตรง

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

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

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

<a id="mechanism"></a>

## กลไกการทำงาน

1. ระบุ deployment ให้ชัดเจน ได้แก่ เชน บล็อก สัญญาและฟังก์ชันผู้ใช้ข้อมูล สัญญาสินทรัพย์ พร็อกซีฟีดหรือพูล ตัวรวมผล สินทรัพย์ฐานและสินทรัพย์อ้างอิง จำนวนทศนิยม ผู้ดูแล และสถานะการอัปเกรด
2. ทำแผนผังเส้นทางความเชื่อถือทั้งหมดจากตลาด พูล หรือผู้รายงาน ผ่านการรวมผล ลายเซ็น พร็อกซีหรืออะแดปเตอร์ และแหล่งสำรอง ไปจนถึงตรรกะผู้ใช้ข้อมูล บันทึกตลาด ผู้ดำเนินงาน กุญแจ และการกำกับดูแลที่ใช้ร่วมกัน แทนการนับชื่อที่ต่างกันเป็นแหล่งอิสระ
3. จำลองการอ่านข้อมูลบนเชนให้ตรงทุกประการ ได้แก่ คำตอบ ข้อมูลรอบ เวลา ค่าความเชื่อมั่นหรือสถานะเมื่อมี การปรับทศนิยม การกลับทิศคู่ราคา สถานะ sequencer และระยะผ่อนผัน อายุสูงสุด ขอบเขตความเบี่ยงเบน และการจัดการค่าศูนย์หรือค่าติดลบ
4. จัดทำบัญชีแยกประเภทของความเสี่ยงผู้ใช้ข้อมูล ได้แก่ ปัจจัยหลักประกัน เกณฑ์ชำระบัญชี เพดานการกู้และการจัดหา สภาพคล่องที่มีอยู่ หนี้ เพดานการสร้างหรือแลกคืน close factor โบนัสการชำระบัญชี และทุกการดำเนินการที่ค่านั้นเปิดให้ทำได้
5. สร้างแบบจำลองการบิดเบือนในขนาดที่ดำเนินการได้จริง โดยใช้เงินสำรอง สภาพคล่องที่ใช้งาน จุดสังเกต หน้าต่างและวิธีถ่วงน้ำหนัก ค่าธรรมเนียม อาร์บิทราจ ลำดับบล็อก เงินทุนแบบ flash หรือเงินทุนตนเอง ขาดทุนจากการปิดสถานะ ค่า gas MEV และผู้ชำระบัญชีคู่แข่ง
6. ทดสอบมาตรการควบคุมและภาวะล้มเหลว ได้แก่ แหล่งอิสระ cardinality ของ TWAP เพดาน กลไกตัดวงจร อำนาจหยุดชั่วคราว timelock แหล่งสำรองที่ล้าสมัยหรือแตกต่าง การสูญเสียผู้รายงานหรือกุญแจ sequencer L2 หยุดทำงาน ช่องว่างราคาที่เกิดขึ้นจริง และพฤติกรรมแบบ fail-open เทียบกับ fail-closed
7. ติดตามและกระทบยอดรอบฟีดที่เป็นมาตรฐาน การเปลี่ยนพร็อกซีและการกำหนดค่า ความแตกต่างระหว่างแหล่ง การดำเนินการของโปรโตคอล การชำระบัญชี หนี้เสีย และการตัดสินใจหยุดหรือกู้คืน ทำการวิเคราะห์ซ้ำเมื่อสภาพคล่อง การจดทะเบียน การอัปเกรด หรือภาวะตลาดเปลี่ยนไป

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

<a id="example"></a>

## ตัวอย่างคำนวณ

- **ราคา spot ของพูลผลคูณคงที่** ไม่คิดค่าธรรมเนียมในพูลที่มี `1,000,000 ABC` และ `1,000,000 USDC` จึงได้ `k = 10^12` ราคา marginal เป้าหมาย `9 USDC/ABC` ต้องมีเงินสำรอง `3,000,000 USDC` และ `333,333.333333 ABC` ผู้ซื้อใส่ `2,000,000 USDC` และรับ `666,666.666667 ABC` ราคา marginal สุดท้ายคือ `3,000,000 / 333,333.333333 = 9` ส่วนราคาดำเนินการเฉลี่ยคือ `2,000,000 / 666,666.666667 = 3 USDC/ABC` ในทางกลับกัน การใส่ `5,000,000 USDC` ทำให้เหลือเงินสำรอง `6,000,000` และ `166,666.666667` จึงได้ราคา marginal `36` ไม่ใช่ `9` ค่าธรรมเนียมจริง อาร์บิทราจ สภาพคล่องแบบกระจุกตัว และการปิดสถานะจะเปลี่ยนบัญชีนี้
- **วิธีคำนวณ TWAP** ในจุดสังเกตหนึ่งนาทีที่ยาวเท่ากันสิบจุด มีราคาเก้าจุดที่ `100` และหนึ่งจุดที่ `160` TWAP เลขคณิตเพื่อการสอนคือ `(9 * 100 + 160) / 10 = 106` สูงกว่า 100 เพียง `6%` แม้ราคา spot สุดท้ายสูงกว่า `60%` หากต้องการให้ค่าเฉลี่ยเลขคณิตนี้เป็น `130` ขณะที่อีกเก้าจุดยังเป็น 100 จุดที่ถูกบิดเบือนต้องเป็น `400` ค่าเฉลี่ย tick ของ Uniswap v3 เป็นค่าเฉลี่ยเรขาคณิต ไม่ใช่ตัวอย่างเลขคณิตนี้ สัญญาผู้ใช้ข้อมูลจึงต้องจำลองวิธีที่ deployment ใช้จริง
- **ค่ามัธยฐานและองค์ประชุม** จุดสังเกตที่ปรับหน่วยแล้วเจ็ดค่าเป็น `[99, 100, 100, 101, 101, 500, 600]` ค่ามัธยฐานคือ `101` รายงานสุดขั้วสองค่าจึงไม่ดึงผลออกจากกลุ่มค่าปกติ หากการยอมรับต้องมีรายงานที่ทำงานอยู่ห้ารายและผู้รายงานที่ถูกต้องสามราย offline จะเหลือเพียง `4 < 5` ความทนทานต่อค่าผิดปกติไม่ได้รับประกันความพร้อมใช้งาน และพฤติกรรมของแหล่งสำรองจึงเป็นส่วนหนึ่งของแบบจำลองความปลอดภัย
- **ข้อมูลล้าสมัยและการชำระบัญชีที่ไม่ถูกต้อง** ฟีดที่มีทศนิยมแปดหลักคืนค่าดิบ `140,000,000,000` หรือ `1,400` แต่อายุข้อมูลคือ `17 minutes` ขณะที่ผู้ใช้ข้อมูลกำหนดสูงสุด `15 minutes` จึงต้องปฏิเสธค่านี้ หากยังใช้ค่าล้าสมัยกับ `10 ETH` เกณฑ์ชำระบัญชี `75%` และหนี้ `12,000` health factor จะเป็น `10 * 1,400 * 0.75 / 12,000 = 0.875` แต่ที่ราคาปัจจุบัน `2,000` จะเป็น `1.25` การแก้ราคาในภายหลังไม่ย้อนคืนการชำระบัญชีที่เสร็จแล้ว

<a id="risks"></a>

## ความเสี่ยง

- ใช้เชน สินทรัพย์ ฟีด พร็อกซี พูล หรือที่อยู่สัญญาผู้ใช้ข้อมูลผิด
- กลับทิศสินทรัพย์ฐานกับสินทรัพย์อ้างอิง หรือใช้หน่วยราคาไม่สอดคล้องกัน
- ปรับทศนิยมของฟีด โทเค็น และ fixed-point ภายในผิด
- ยอมรับข้อมูลล้าสมัย หรือเข้าใจ heartbeat และตัวกระตุ้นความเบี่ยงเบนว่าเป็นหลักประกันความใหม่
- ยอมรับรอบที่ไม่สมบูรณ์ สถานะไม่ถูกต้อง หรือคำตอบศูนย์ ติดลบ ถูกจำกัด หรืออยู่นอกช่วง
- ราคา spot จากตลาดเดียวที่สภาพคล่องต่ำควบคุมความเสี่ยงขนาดใหญ่ของโปรโตคอล
- หน้าต่าง TWAP สั้นเกินไป มีจุดสังเกตน้อย ถ่วงน้ำหนักผิด หรืออ่านกลับทิศ
- เข้าใจ cardinality การเริ่มต้น การประมาณค่าระหว่างจุด หรือพฤติกรรมแหล่งสำรองผิด
- สภาพคล่องแบบกระจุกตัวหรือ just-in-time ทำให้มูลค่าพูลที่แสดงไม่สะท้อนต้นทุนโจมตี
- ฟีดหลายตัวใช้ตลาด ผู้ให้บริการข้อมูล ผู้ดำเนินงาน กุญแจ หรือระบบควบคุมเดียวกัน
- ผู้รายงาน ตลาด API ผู้ลงนาม เครือข่าย หรือองค์ประชุมล้มเหลวจนไม่มีการอัปเดตหรือความถูกต้อง
- sequencer L2 หยุดทำงาน หรือไม่มีระยะผ่อนผันหลังฟื้นตัวที่ถูกต้อง
- แหล่งสำรองล้าสมัย อ้างอิงวน มีความสัมพันธ์ ปรับสเกลต่างกัน หรือมีความหมายไม่เข้ากัน
- สภาพคล่องแบบ flash และ composability แบบอะตอมทำให้อิทธิพลชั่วคราวนำไปใช้ทำกำไรได้
- ลำดับการอัปเดตออราเคิล front-running sandwich back-running หรือ MEV จากการชำระบัญชีเปลี่ยนผลตอบแทน
- ปัจจัยหลักประกัน เกณฑ์ชำระบัญชี เพดาน โบนัส และสภาพคล่องที่มีอยู่ขยายผลจากข้อผิดพลาดเล็กน้อย
- การเจาะระบบกำกับดูแล ผู้ดูแล guardian multisig หรือกุญแจลงนามเปลี่ยนเส้นทางความเชื่อถือ
- ข้อผิดพลาดในพร็อกซี ตัวรวมผล อะแดปเตอร์ การอัปเกรด storage หรือการกำหนดค่าเลือกค่าผิด
- กลไกตัดวงจรหรือตรรกะแบบ fail-closed ระงับการกู้ ชำระคืน หรือชำระบัญชีที่ถูกต้องในภาวะตึงตัว
- การหยุด การกู้คืน การกระทบยอดบัญชี การจัดสรรหนี้เสีย หรือการจำกัดผลกระทบข้ามโปรโตคอลล้มเหลว

<a id="misconceptions"></a>

## ความเข้าใจผิดที่พบบ่อย

- **“การโจมตีออราเคิลทุกครั้งคือการเจาะเครือข่ายออราเคิล”** ความล้มเหลวจำนวนมากอาศัยแหล่งที่สภาพคล่องต่ำ ค่าล้าสมัย หน่วยผิด อะแดปเตอร์ไม่ปลอดภัย หรือตรรกะผู้ใช้ข้อมูล ขณะที่เครือข่ายรายงานทำงานตามค่าที่กำหนด
- **“ฟีดหลายตัวหรือฟีดแบบกระจายศูนย์รับประกันราคาที่ถูกต้อง”** ยังต้องมีความเป็นอิสระ คุณภาพแหล่ง องค์ประชุม ความใหม่ หน่วย การรวมผล และการตรวจสอบของสัญญาผู้ใช้ข้อมูล
- **“TWAP ทำให้การบิดเบือนเป็นไปไม่ได้”** TWAP เปลี่ยนระยะเวลาและต้นทุนของอิทธิพล แต่หน้าต่างที่อ่อน จุดสังเกตน้อย สภาพคล่องต่ำ หรือการควบคุมบล็อกยังถูกโจมตีได้
- **“การห้าม flash loan แก้ความเสี่ยงออราเคิล”** flash loan เป็นเพียงแหล่งเงินทุนหนึ่ง เงินทุนตนเอง เครดิต การกู้ข้ามโปรโตคอล การเจาะผู้รายงาน และการกำหนดค่าผิดยังคงอยู่
- **“เมื่อราคาฟื้นตัว ความเสียหายจะถูกย้อนคืน”** การกู้ การสร้าง การแลกคืน การชำระราคา และการชำระบัญชีที่เป็นมาตรฐานยังมีผล เว้นแต่โปรโตคอลจะมีกระบวนการกู้คืนที่ได้รับอนุญาตแยกต่างหาก

<a id="related"></a>

## หัวข้อที่เกี่ยวข้อง

- [ออราเคิล](/th/crypto/oracle/)
- [โปรโตคอลการให้กู้ยืม](/th/crypto/lending-protocol/)
- [การชำระบัญชี](/th/crypto/liquidation/)

<a id="sources"></a>

## แหล่งที่มา

- [SC03:2026 Price Oracle Manipulation](https://scs.owasp.org/sctop10/SC03-PriceOracleManipulation/) - OWASP Smart Contract Security (เข้าถึงเมื่อ: 2026-08-13)
- [Chainlink Data Feeds](https://docs.chain.link/data-feeds) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [Data Feeds API Reference](https://docs.chain.link/data-feeds/api-reference) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [L2 Sequencer Uptime Feeds](https://docs.chain.link/data-feeds/l2-sequencer-feeds) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [Uniswap v2 Core](https://app.uniswap.org/whitepaper.pdf) - Uniswap Labs (เข้าถึงเมื่อ: 2026-08-13)
- [Price Oracles](https://developers.uniswap.org/docs/protocols/v3/concepts/price-oracles) - Uniswap Developers (เข้าถึงเมื่อ: 2026-08-13)
- [Oracles](https://aave.com/docs/aave-v3/smart-contracts/oracles) - Aave Protocol Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [Flash Loans](https://aave.com/docs/aave-v3/guides/flash-loans) - Aave Protocol Documentation (เข้าถึงเมื่อ: 2026-08-13)

Source: https://wiki.fcontext.com/th/crypto/oracle-attack/index.mdx
