Luapan penyangga: Perbedaan antara revisi
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28547281; atribusi sumber disertakan. |
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi |
||
| Baris 1: | Baris 1: | ||
Dalam [[keamanan informasi]] dan [[pemrograman]], '''luapan dapar''' atau '''luapan penyangga''' () adalah sebuah [[Kekutu|anomali]] pada sebuah [[Program komputer|program]] saat menulis data ke dalam dapar hingga melampaui batas dan menimpa lokasi [[Penyimpanan data komputer|memori]] yang berdekatan. | Dalam [[keamanan informasi]] dan [[pemrograman]], '''luapan dapar'''<ref>[https://id.wikipedia.org/w/index.php?title=Luapan+penyangga&oldid=28547281 sumber pada Wikipedia bahasa Indonesia]</ref> atau '''luapan penyangga''' () adalah sebuah [[Kekutu|anomali]] pada sebuah [[Program komputer|program]] saat menulis data ke dalam dapar hingga melampaui batas dan menimpa lokasi [[Penyimpanan data komputer|memori]] yang berdekatan. | ||
Dapar (''buffer'') adalah wilayah memori yang disisihkan untuk menampung data, sering sambil bergerak dari satu bagian program ke program lain, atau antara program. Luapan dapar sering dipicu oleh cacat masukan; jika menganggap semua masukan menjadi lebih kecil dari ukuran tertentu dan dapar ini diciptakan sebagai ukuran, maka anomali transaksi yang menghasilkan lebih banyak data dapat menyebabkan penulisan data hingga melewati batas akhir dapar tersebut. Jika hal ini menimpa data yang berdekatan atau kode yang dapat dijalankan, hal ini dapat mengakibatkan ketidaktentuan perilaku program, termasuk galat akses memori, hasil yang salah, dan [[galat]] aplikasi. | Dapar (''buffer'') adalah wilayah memori yang disisihkan untuk menampung data, sering sambil bergerak dari satu bagian program ke program lain, atau antara program. Luapan dapar sering dipicu oleh cacat masukan; jika menganggap semua masukan menjadi lebih kecil dari ukuran tertentu dan dapar ini diciptakan sebagai ukuran, maka anomali transaksi yang menghasilkan lebih banyak data dapat menyebabkan penulisan data hingga melewati batas akhir dapar tersebut. Jika hal ini menimpa data yang berdekatan atau kode yang dapat dijalankan, hal ini dapat mengakibatkan ketidaktentuan perilaku program, termasuk galat akses memori, hasil yang salah, dan [[galat]] aplikasi. | ||
| Baris 8: | Baris 8: | ||
=== Contoh === | === Contoh === | ||
Dalam contoh berikut yang ditulis dalam [[C (bahasa pemrograman)|C]], program ini memiliki dua [[variabel (ilmu komputer)|peubah]] yang berdekatan dalam memori: dapar 8 bita, A, dan dua bita integer big-endian, B. Awalnya, A tidak berisi apa-apa kecuali nol bita, dan B berisi angka 1979. | Dalam contoh berikut yang ditulis dalam [[C (bahasa pemrograman)|C]], program ini memiliki dua [[variabel (ilmu komputer)|peubah]] yang berdekatan dalam memori: dapar 8 bita, A, dan dua bita integer big-endian, B. Awalnya, A tidak berisi apa-apa kecuali nol bita, dan B berisi angka 1979. | ||
{| class="wikitable" style="width: 32em; text-align: center; margin-bottom: 10px;" | |||
! style="white-space:nowrap;" |nama peubah | |||
! colspan="8" style="background:#ddf;" |A | |||
! colspan="2" style="background:#fdd;" |B | |||
|- style="background:#ddf;" | |||
!nilai | |||
| colspan="8" |[string null] | |||
| colspan="2" style="background:#fdd;" |<code>1979</code> | |||
|- style="background:#ddf;" | |||
!nilai heks | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
|<code>00</code> | |||
| style="background:#fdd;" |<code>07</code> | |||
| style="background:#fdd;" |<code>BB</code> | |||
|} | |||
Sekarang, program ini mencoba untuk menyimpan untaian (''string'') berakhir dengan nol (''null'') dengan [[ASCII]] yang dienkode dalam dapar A. adalah 9 huruf dan mengenkode 10 bita termasuk terminator ''null'', tetapi hanya dapat mengambil 8 bita. Karena gagal memeriksa panjang dari untaian, ia juga akan menimpa nilai B: | Sekarang, program ini mencoba untuk menyimpan untaian (''string'') berakhir dengan nol (''null'') dengan [[ASCII]] yang dienkode dalam dapar A. adalah 9 huruf dan mengenkode 10 bita termasuk terminator ''null'', tetapi hanya dapat mengambil 8 bita. Karena gagal memeriksa panjang dari untaian, ia juga akan menimpa nilai B: | ||
{| class="wikitable" style="width: 32em; text-align: center; margin-bottom: 10px;" | |||
! style="white-space:nowrap;" |nama peubah | |||
! colspan="8" style="background:#ddf;" |A | |||
! colspan="2" style="background:#fdd;" |B | |||
|- style="background:#ddf;" | |||
!nilai | |||
|<code>'e'</code> | |||
|<code>'x'</code> | |||
|<code>'c'</code> | |||
|<code>'e'</code> | |||
|<code>'s'</code> | |||
|<code>'s'</code> | |||
|<code>'i'</code> | |||
|<code>'v'</code> | |||
| colspan="2" style="background:#dbd;" |<code>25856</code> | |||
|- style="background:#ddf;" | |||
!heks | |||
|<code>65</code> | |||
|<code>78</code> | |||
|<code>63</code> | |||
|<code>65</code> | |||
|<code>73</code> | |||
|<code>73</code> | |||
|<code>69</code> | |||
|<code>76</code> | |||
| style="background:#dbd;" |<code>65</code> | |||
| style="background:#dbd;" |<code>00</code> | |||
|} | |||
Nilai B kini telah secara tidak sengaja diganti dengan nomor yang dibentuk dari bagian dari huruf untaian. Dalam contoh ini, "e" (65) diikuti dengan bita nol akan menjadi 25856. | Nilai B kini telah secara tidak sengaja diganti dengan nomor yang dibentuk dari bagian dari huruf untaian. Dalam contoh ini, "e" (65) diikuti dengan bita nol akan menjadi 25856. | ||
Menulis data setelah alokasi akhir dalam memori kadang-kadang dideteksi oleh sistem operasi dan menghasilkan segmentasi kesalahan yang mengakhiri proses tersebut. | Menulis data setelah alokasi akhir dalam memori kadang-kadang dideteksi oleh sistem operasi dan menghasilkan segmentasi kesalahan yang mengakhiri proses tersebut. | ||
== Pranala luar == | == Pranala luar == | ||
* [http://raykoid666.wordpress.com/2009/11/28/remote-buffer-overflow-from-vulnerability-to-exploit-part-1/ "Discovering and exploiting a remote buffer overflow vulnerability in an FTP server"] by Raykoid666 | * [http://raykoid666.wordpress.com/2009/11/28/remote-buffer-overflow-from-vulnerability-to-exploit-part-1/ "Discovering and exploiting a remote buffer overflow vulnerability in an FTP server"] by Raykoid666 | ||
* [http://phrack.org/issues/49/14.html#article "Smashing the Stack for Fun and Profit"] by Aleph One | * [http://phrack.org/issues/49/14.html#article "Smashing the Stack for Fun and Profit"] by Aleph One | ||
* [http://iac.dtic.mil/iatac/download/Vol7_No4.pdf An Overview and Example of the Buffer-Overflow Exploit. pps. 16-21.] | * [http://iac.dtic.mil/iatac/download/Vol7_No4.pdf An Overview and Example of the Buffer-Overflow Exploit. pps. 16-21.] | ||
* [https://www.securecoding.cert.org/ CERT Secure Coding Standards] | * [https://www.securecoding.cert.org/ CERT Secure Coding Standards] | ||
* [http://www.cert.org/secure-coding CERT Secure Coding Initiative] | * [http://www.cert.org/secure-coding CERT Secure Coding Initiative] | ||
| Baris 34: | Baris 78: | ||
* [https://cansecwest.com/csw08/csw08-holtmann.pdf Secure Programming with GCC and GLibc] (2008), by Marcel Holtmann | * [https://cansecwest.com/csw08/csw08-holtmann.pdf Secure Programming with GCC and GLibc] (2008), by Marcel Holtmann | ||
== Referensi == | |||
<references /> | |||
== Sumber dan atribusi == | == Sumber dan atribusi == | ||
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Luapan+penyangga&oldid=28547281 Wikipedia bahasa Indonesia], revisi 28547281 (2025-11-19T07:58:30Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku. | Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Luapan+penyangga&oldid=28547281 Wikipedia bahasa Indonesia], revisi 28547281 (2025-11-19T07:58:30Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku. | ||
<!-- WIKI_UNISSULA_PRESENTATION_V4 --> | |||
Revisi terkini sejak 23 Agustus 2026 17.58
Dalam keamanan informasi dan pemrograman, luapan dapar[1] atau luapan penyangga () adalah sebuah anomali pada sebuah program saat menulis data ke dalam dapar hingga melampaui batas dan menimpa lokasi memori yang berdekatan.
Dapar (buffer) adalah wilayah memori yang disisihkan untuk menampung data, sering sambil bergerak dari satu bagian program ke program lain, atau antara program. Luapan dapar sering dipicu oleh cacat masukan; jika menganggap semua masukan menjadi lebih kecil dari ukuran tertentu dan dapar ini diciptakan sebagai ukuran, maka anomali transaksi yang menghasilkan lebih banyak data dapat menyebabkan penulisan data hingga melewati batas akhir dapar tersebut. Jika hal ini menimpa data yang berdekatan atau kode yang dapat dijalankan, hal ini dapat mengakibatkan ketidaktentuan perilaku program, termasuk galat akses memori, hasil yang salah, dan galat aplikasi.
Keterangan teknis
Luapan dapar terjadi ketika data ditulis ke dalam dapar juga merusak nilai-nilai data pada alamat memori yang berdekatan dengan dapar tujuan karena kurangnya periksa batas (bounds checking). Hal ini dapat terjadi ketika menyalin data dari satu dapar ke dalam dapar yang lain tanpa memeriksa terlebih dahulu apakah data sesuai dalam dapar tujuan.
Contoh
Dalam contoh berikut yang ditulis dalam C, program ini memiliki dua peubah yang berdekatan dalam memori: dapar 8 bita, A, dan dua bita integer big-endian, B. Awalnya, A tidak berisi apa-apa kecuali nol bita, dan B berisi angka 1979.
| nama peubah | A | B | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| nilai | [string null] | 1979
| ||||||||
| nilai heks | 00
|
00
|
00
|
00
|
00
|
00
|
00
|
00
|
07
|
BB
|
Sekarang, program ini mencoba untuk menyimpan untaian (string) berakhir dengan nol (null) dengan ASCII yang dienkode dalam dapar A. adalah 9 huruf dan mengenkode 10 bita termasuk terminator null, tetapi hanya dapat mengambil 8 bita. Karena gagal memeriksa panjang dari untaian, ia juga akan menimpa nilai B:
| nama peubah | A | B | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| nilai | 'e'
|
'x'
|
'c'
|
'e'
|
's'
|
's'
|
'i'
|
'v'
|
25856
| |
| heks | 65
|
78
|
63
|
65
|
73
|
73
|
69
|
76
|
65
|
00
|
Nilai B kini telah secara tidak sengaja diganti dengan nomor yang dibentuk dari bagian dari huruf untaian. Dalam contoh ini, "e" (65) diikuti dengan bita nol akan menjadi 25856.
Menulis data setelah alokasi akhir dalam memori kadang-kadang dideteksi oleh sistem operasi dan menghasilkan segmentasi kesalahan yang mengakhiri proses tersebut.
Pranala luar
- "Discovering and exploiting a remote buffer overflow vulnerability in an FTP server" by Raykoid666
- "Smashing the Stack for Fun and Profit" by Aleph One
- An Overview and Example of the Buffer-Overflow Exploit. pps. 16-21.
- CERT Secure Coding Standards
- CERT Secure Coding Initiative
- Secure Coding in C and C++
- SANS: inside the buffer overflow attack
- "Advances in adjacent memory overflows" by Nomenumbra
- A Comparison of Buffer Overflow Prevention Implementations and Weaknesses
- More Security Whitepapers about Buffer Overflows
- Chapter 12: Writing Exploits III from Sockets, Shellcode, Porting & Coding: Reverse Engineering Exploits and Tool Coding for Security Professionals by James C. Foster (). Detailed explanation of how to use Metasploit to develop a buffer overflow exploit from scratch.
- Computer Security Technology Planning Study, James P. Anderson, ESD-TR-73-51, ESD/AFSC, Hanscom AFB, Bedford, MA 01731 (October 1972) [NTIS AD-758 206]
- "Buffer Overflows: Anatomy of an Exploit" by Nevermore
- Secure Programming with GCC and GLibc (2008), by Marcel Holtmann
Referensi
Sumber dan atribusi
Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28547281 (2025-11-19T07:58:30Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.