﻿---
title: "Serangan oracle"
description: "Serangan oracle mengeksploitasi data eksternal yang dapat dimanipulasi, kedaluwarsa, salah skala, atau salah konfigurasi sehingga protokol meminjamkan, mencetak, menebus, menyelesaikan, atau melikuidasi pada nilai yang tidak aman."
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.

# Serangan oracle

> Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

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

## Jawaban langsung

Serangan oracle mengeksploitasi batas kepercayaan data suatu protokol sehingga masukan berupa harga, nilai tukar, indeks, nilai aset bersih, atau status memicu tindakan yang tidak aman secara ekonomi. Penyerang dapat memanipulasi pasar yang tipis, membobol pelapor atau kunci, mengeksploitasi aturan agregasi atau pembaruan, atau memadukan ketiadaan pemeriksaan kesegaran, unit, rentang, dan sumber cadangan pada konsumen dengan modal pinjaman. Umpan yang kedaluwarsa atau salah konfigurasi dapat menimbulkan kerugian yang sama tanpa operator oracle yang berniat jahat, sehingga analisis insiden harus membedakan jalur serangan dari mode kegagalan.

Perbandingan yang menentukan bukanlah apakah harga yang ditampilkan bergerak tajam. Pertanyaannya adalah apakah biaya dan risiko untuk memengaruhi nilai persis yang dikonsumsi kontrak lebih rendah daripada nilai yang dapat direalisasikan melalui pinjaman, pencetakan, penebusan, penyelesaian, atau likuidasi. Likuiditas kilat dapat mendanai jalur atomik, tetapi tidak menciptakan batas kepercayaan yang cacat dan tidak diperlukan agar eksploitasi terjadi.

Nilai oracle juga belum tentu merupakan harga pasar yang dapat dieksekusi. Setiap penelaahan harus mengikat nilai tersebut pada chain, blok, alamat umpan atau pool, orientasi aset dasar dan kuotasi, desimal, cap waktu, metode agregasi, ukuran pasar, dan fungsi konsumen. Tanda tangan yang valid membuktikan siapa yang melaporkan data menurut suatu skema; tanda tangan itu sendiri tidak membuktikan kesegaran, independensi sumber, kedalaman pasar, atau ketepatan ekonomi.

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

## Cara kerjanya

1. Tetapkan deployment secara presisi: chain, blok, kontrak dan fungsi konsumen, kontrak aset, proksi umpan atau pool, agregator, aset dasar dan kuotasi, desimal, administrator, serta status upgrade.
2. Petakan seluruh jalur kepercayaan dari bursa, pool, atau pelapor melalui agregasi, tanda tangan, proksi atau adaptor, sumber cadangan, hingga logika konsumen; catat pasar, operator, kunci, dan tata kelola yang dipakai bersama alih-alih menganggap label berbeda sebagai sumber independen.
3. Reproduksi pembacaan onchain dengan tepat: jawaban, metadata putaran, cap waktu, tingkat keyakinan atau status jika berlaku, normalisasi desimal, pembalikan kuotasi, status sequencer dan masa tenggang, usia maksimum, batas deviasi, serta penanganan nilai nol atau negatif.
4. Susun buku besar eksposur konsumen: faktor agunan, ambang likuidasi, batas pinjaman dan pasokan, likuiditas tersedia, utang, batas pencetakan atau penebusan, faktor penutupan, bonus likuidasi, serta setiap tindakan yang diaktifkan oleh nilai tersebut.
5. Modelkan manipulasi pada ukuran yang dapat dieksekusi dengan cadangan, likuiditas aktif, observasi, jendela dan konvensi pembobotan, biaya, arbitrase, urutan blok, modal kilat atau milik sendiri, kerugian saat melepas posisi, gas, MEV, dan likuidator pesaing.
6. Uji kontrol dan keadaan gagal: sumber independen, kardinalitas TWAP, batas, pemutus sirkuit, kewenangan jeda, timelock, sumber cadangan yang kedaluwarsa atau menyimpang, kehilangan pelapor atau kunci, gangguan sequencer L2, lonjakan harga yang sah, serta perilaku fail-open dibanding fail-closed.
7. Pantau dan rekonsiliasi putaran umpan kanonis, perubahan proksi dan konfigurasi, penyimpangan sumber, tindakan protokol, likuidasi, kredit macet, serta keputusan jeda dan pemulihan; ulangi analisis setelah perubahan likuiditas, pencatatan aset, upgrade, atau rezim pasar.

Harga spot AMM sering dapat diubah dalam satu transaksi. Rata-rata tertimbang waktu dapat menaikkan biaya karena pengaruh harus bertahan di beberapa observasi, tetapi keamanannya bergantung pada konvensi aritmetika atau berbasis tick yang benar-benar digunakan, jendela, kardinalitas observasi, distribusi likuiditas, dan kendali blok. Median dapat menolak sebagian pencilan, tetapi korelasi antarpasar hulu atau hilangnya kuorum tetap dapat merusak keamanan atau ketersediaan. Pengaturan heartbeat dan deviasi menentukan kapan sebagian umpan menerbitkan pembaruan; konsumen tetap memerlukan kebijakan kesegaran dan validitasnya sendiri.

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

## Contoh perhitungan

- **Spot produk konstan.** Abaikan biaya pada pool berisi `1,000,000 ABC` dan `1,000,000 USDC`, sehingga `k = 10^12`. Target harga marginal `9 USDC/ABC` memerlukan cadangan `3,000,000 USDC` dan `333,333.333333 ABC`: pedagang memasukkan `2,000,000 USDC` dan menerima `666,666.666667 ABC`. Harga marginal akhir adalah `3,000,000 / 333,333.333333 = 9`, sedangkan harga eksekusi rata-rata adalah `2,000,000 / 666,666.666667 = 3 USDC/ABC`. Sebaliknya, masukan `5,000,000 USDC` menyisakan cadangan `6,000,000` dan `166,666.666667`, sehingga menghasilkan harga marginal `36`, bukan `9`. Biaya nyata, arbitrase, likuiditas terkonsentrasi, dan pelepasan posisi mengubah buku besar ini.
- **Konvensi TWAP.** Dalam sepuluh observasi satu menit yang sama panjang, sembilan harga adalah `100` dan satu harga `160`. TWAP aritmetika untuk pembelajaran adalah `(9 * 100 + 160) / 10 = 106`, hanya `6%` di atas 100 walaupun spot terakhir `60%` lebih tinggi. Agar rata-rata aritmetika itu menjadi `130` sementara sembilan observasi lain tetap 100, observasi yang dimanipulasi harus `400`. Rata-rata tick Uniswap v3 bersifat geometris, bukan seperti contoh aritmetika ini, sehingga konsumen harus mereproduksi konvensi deployment yang sebenarnya.
- **Median dan kuorum.** Tujuh observasi ternormalisasi adalah `[99, 100, 100, 101, 101, 500, 600]`; mediannya `101`, sehingga dua laporan ekstrem tidak memindahkan hasil keluar dari kelompok jujur. Jika penerimaan membutuhkan lima laporan aktif dan tiga pelapor jujur offline, hanya tersisa `4 < 5`: ketahanan terhadap pencilan tidak menjamin ketersediaan, dan perilaku sumber cadangan menjadi bagian dari model keamanan.
- **Data kedaluwarsa dan likuidasi yang keliru.** Umpan dengan delapan desimal mengembalikan nilai mentah `140,000,000,000`, atau `1,400`, tetapi usianya `17 minutes` sedangkan maksimum konsumen `15 minutes`, sehingga harus ditolak. Jika nilai lama itu tetap digunakan untuk `10 ETH`, ambang likuidasi `75%`, dan utang `12,000`, faktor kesehatan menjadi `10 * 1,400 * 0.75 / 12,000 = 0.875`; pada harga segar `2,000`, nilainya `1.25`. Koreksi harga kemudian tidak membatalkan likuidasi yang sudah selesai.

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

## Risiko

- Chain, aset, umpan, proksi, pool, atau alamat konsumen salah.
- Aset dasar dan kuotasi terbalik atau denominasi tidak konsisten.
- Desimal umpan, token, dan fixed-point internal dinormalisasi secara keliru.
- Data kedaluwarsa diterima atau heartbeat dan pemicu deviasi dianggap sebagai jaminan kesegaran.
- Putaran belum lengkap, status tidak valid, atau jawaban nol, negatif, dibatasi, maupun di luar rentang diterima.
- Harga spot dari satu pasar tipis mengendalikan eksposur protokol yang besar.
- Jendela TWAP terlalu pendek, jarang, salah bobot, atau dibaca dengan arah terbalik.
- Kardinalitas observasi, inisialisasi, interpolasi, atau perilaku sumber cadangan disalahpahami.
- Likuiditas terkonsentrasi atau just-in-time membuat nilai nominal pool menyesatkan tentang biaya serangan.
- Beberapa umpan memakai bursa, vendor data, operator, kunci, atau bidang kendali yang sama.
- Kegagalan pelapor, bursa, API, penanda tangan, jaringan, atau kuorum menghilangkan pembaruan atau integritas.
- Gangguan sequencer L2 atau masa tenggang pemulihan yang hilang maupun keliru mengekspos keadaan lama.
- Sumber cadangan kedaluwarsa, sirkular, berkorelasi, berbeda skala, atau tidak kompatibel secara semantik.
- Likuiditas kilat dan komposabilitas atomik membuat pengaruh sementara dapat dimanfaatkan secara ekonomi.
- Urutan pembaruan oracle, front-running, sandwich, back-running, atau MEV likuidasi mengubah pembayaran.
- Faktor agunan, ambang likuidasi, batas, bonus, dan likuiditas tersedia memperbesar kesalahan kecil.
- Kompromi tata kelola, administrator, guardian, multisig, atau kunci penandatangan mengubah jalur kepercayaan.
- Kesalahan proksi, agregator, adaptor, upgrade, penyimpanan, atau konfigurasi memilih nilai yang salah.
- Pemutus sirkuit atau logika fail-closed membekukan pinjaman, pelunasan, atau likuidasi yang sah saat pasar tertekan.
- Proses jeda, pemulihan, rekonsiliasi akun, alokasi kredit macet, atau pembatasan penularan lintas protokol gagal.

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

## Kesalahpahaman umum

- **“Setiap serangan oracle membobol jaringan oracle.”** Banyak kegagalan mengeksploitasi sumber tipis, nilai kedaluwarsa, unit keliru, adaptor tidak aman, atau logika konsumen saat jaringan pelaporan berfungsi sesuai konfigurasi.
- **“Beberapa umpan atau umpan terdesentralisasi menjamin harga yang benar.”** Independensi, mutu sumber, kuorum, kesegaran, unit, agregasi, dan pemeriksaan konsumen tetap diperlukan.
- **“TWAP membuat manipulasi mustahil.”** TWAP mengubah durasi dan biaya pengaruh; jendela yang lemah, observasi jarang, likuiditas tipis, atau kendali blok tetap dapat dieksploitasi.
- **“Melarang pinjaman kilat memperbaiki risiko oracle.”** Pinjaman kilat hanyalah salah satu mekanisme pendanaan. Modal sendiri, kredit, pinjaman lintas protokol, kompromi pelapor, dan kesalahan konfigurasi tetap ada.
- **“Pemulihan harga membatalkan kerugian.”** Pinjaman, pencetakan, penebusan, penyelesaian, dan likuidasi kanonis tetap berlaku kecuali protokol memiliki proses pemulihan terpisah yang berwenang.

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

## Topik terkait

- [Oracle](/id/crypto/oracle/)
- [Protokol peminjaman](/id/crypto/lending-protocol/)
- [Likuidasi](/id/crypto/liquidation/)

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

## Sumber

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

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