Saya mencintai negara saya, tapi aku benci apa yang mereka lakukan

32 menit | Kebohongan yang membawa kita perang tak berujung – dan solusi nyata untuk mengubah nasib

Sumber: saya mencintai negara saya, tapi aku benci apa yang mereka lakukan

Filed under: Uncategorized Tags : sejarah intervensi kekaisaran “” border = “0” src = “http://feeds.wordpress.com/1.0/delicious/peterimrich.wordpress.com/22600/” />  border =

hatiku baik-baik saja, tapi mata saya berdarah

TL; DR: Heartbleed buruk, tapi bukan akhir dari dunia. OpenSSL tidak rentan karena freelists mereka dan akan terus menjadi rentan tanpa mereka.

Kami merasa itu tidak cukup Heartbleed masih merekam jendela, sehingga menulis lagi. Tidak seperti banyak tempat-tempat lain, kita tidak akan berbicara tentang TLS, atau mengapa kami percaya bahwa ekspansi jantung tidak berarti. Sebaliknya, mari kita fokus pada diri sendiri, dan lebih khusus lagi kesalahan, kerahasiaan data bocor.

Pertama, kami ingin menyatakan bahwa, sejauh bahwa kesulitan akan, kerentanan Heartbleed adalah tidak ada yang istimewa, tapi itu tidak berarti itu mudah untuk menemukan. Semua kesalahan yang mudah terdeteksi setelah seseorang menunjukkan mereka kepada Anda. 20/20 mungkin retrospektif. Rick dan Anti Ibu di Codenomicon dan Neelie Mehta Google semua ditemukan terlepas dari kesalahan. Neale juga cukup baik untuk cek kesehatan situs ini sebelum pergi hidup (terima kasih kepada Neel!) Terlepas dari perasaan Anda pada pengungkapan kerentanan, Anda harus berterima kasih kepada mereka untuk itu untuk menemukan kesalahan dan memberi kita semua sesuatu yang menarik untuk dibicarakan.

Semua kode dalam pesan OpenSSL-1.0.1c ini, yang adalah apa yang saya kerjakan usia mesin virtual dengan Apache. Pertama, mari kita lihat beberapa struktur data OpenSSL penting. Untuk diskusi ini, tingkat “atas” dari struktur SSL , yang didefinisikan di ssl.h , yang ssl_st dengan typedef . Dalam struktur ini adalah pointer ke s3 Ketik SSL3_STATE , yang merupakan typedef dengan ssl3_state_st . Dalam struktur ini adalah struktur lain seperti SSL3_RECORD , yang kita sebut sebagai RREC . SSL3_RECORD mengandung Jenis dan Panjang nilai-nilai di bidang lain. SSL3_STATE struktur juga mengandung RBUF dan WBUF Ketik SSL3_BUFFER . SSL3_BUFFER struktur berisi pointer ke data buf dan Len / diimbangi / meninggalkan anggota untuk melacak penggunaannya. buffer ini dialokasikan dan sering dilepaskan selama pertukaran TLS. Dalam rangka meningkatkan kinerja, para pengembang menulis terpisah pelaksanaan daftar bebas OpenSSL untuk penyimpanan. Implementasi ini memori bebas ternyata kereta, tapi sangat mudah untuk memahami (lebih di bawah ini). memori bebas sebenarnya adalah dua daftar, satu untuk membaca buffer ( RBUF ) dan satu untuk menulis buffer ( WBUF ). Daftar ini tersedia melalui SSL_CTX struktur yang berisi wbuf_freelist dan rbuf_freelist , masing-masing. Kami mengacu SSL_CTX struktur melalui pointer dalam SSL struktur. Heres beberapa pseudo-kode untuk membuatnya kurang membingungkan. Beberapa variabel berkurang karena singkatnya

 {struktur SSL SSL_CTX * CTX. SSL3_STATE * s3; {Struktur} SSL_CTX SSL3_BUF_FREELIST wbuf_freelist; SSL3_BUF_FREELIST rbuf_freelist; {} Struktur SSL3_STATE SSL3_BUFFER RBUF; / * Membaca IO goes here * / SSL3_BUFFER WBUF; / * Rekam IO goes here * / SSL3_RECORD RREC; / * Setiap decode catatan goes here * / WREC SSL3_RECORD; / * Jadi di sini * /} {struktur SSL3_BUF_FREELIST size_t chunklen; unsigned int Len; SSL3_BUF_FREELIST_ENTRY * kepala; {} Struktur SSL3_BUFFER unsigned char * buf; / * Setidaknya SSL3_RT_MAX_PACKET_SIZE byte * cm (ssl3_setup_buffers) * / size_t Len; / * Ukuran penyangga * / diimbangi INT; / * Ketika "copy" * / INT kiri; / * Jumlah byte kiri * /} struktur SSL3_RECORD {/ * Jenis * g / INT; / * Rekam Jenis panjang * / / * * RW / INT unsigned; / * Jumlah byte yang tersedia * / / * g * / unsigned int Off; / * Baca / menulis offset 'BUF' * / / * * RW / unsigned char * data; / * Pointer untuk menulis data * / / * * RW / unsigned char * masukan; / * Dimana decoding byte * / / * g * / unsigned char * komputer; / * Hanya dapat digunakan dengan dekompresi - Thanos () ed * /} 

Jadi sekarang kita memahami beberapa struktur dasar memungkinkan kita untuk menyelidiki kerentanan. Heartbleed adalah dalam kisaran dari membaca pelaksanaan OpenSSL TLS detak jantung. tls1_process_heartbeat fungsi bertanggung jawab untuk analisis pesan detak jantung TLS. Sejalan 2586 pointer ke dialokasikan beban S, yang merupakan pointer ke struktur seperti SSL . Struktur ini berisi sebuah pointer ke s3 Ketik SSL3_STATE . Struktur yang ditunjukkan oleh s3 adalah array SSL3_RECORD jenis, yang kita sebut sebagai RREC . Indeks P sekarang menunjuk ke record pertama. Di 2593 garis nilai panjang diekstrak dari catatan dan ditugaskan untuk payload [1]. 2610 garis memori yang dialokasikan untuk pesan respon. Panggil OPENSSL_Malloc mengalokasikan cukup memori untuk (19 + payload) byte, nilai kembali ditugaskan untuk pointer Clipboard . Baris di 2616 disebut memcpy disalin dari Lapangan (menunjukkan bahwa catatan hanya jenis dan panjang bidang) di PV (The penyangga kami hanya dialokasikan ke baris di 2610) adalah persis jumlah biaya byte berguna

 2584 tls1_process_heartbeat (SSL * s) 2585 2586 {unsigned char * p = & amp; amp; amp;. S & amp; amp; gt; s3- & amp; amp; gt; rrec.data [0] * pl; 2587 tanpa tanda tangan hbtype singkat; 2588 tanpa berguna sinyal beban INT; 2589 INT unsigned paket = 16; / * Gunakan minimum mengisi * / 2590 2591 / * Baca jenis dan panjang payload pertama * / 2592 hbtype = * p ++; 2593 n2s (p, payload); Pl = 2594 w; 2595 2596, ketika (S & amp; amp; gt; msg_callback) 2597 s- & amp; amp; gt; msg_callback (0, s & amp; amp; gt; versi TLS1_RT_HEARTBEAT, 2598 & amp; amp; amp; s- & amp; amp; gt; s3- & amp; amp; gt; rrec.data [0] s & amp; amp; gt; s3 - & amp; amp; gt; RREC panjang, 2599 s, s & amp; amp; gt; msg_callback_arg) ;. 2600 2601 ketika (hbtype == TLS1_HB_REQUEST) 2602 2603 {unsigned char * buffer * bp; 2604 INT R; 2605 2606 / * Alokasikan balasan ukuran 2607 bytes * jenis pesan, dan ukuran beban 2-byte lebih 2.608 * Payload lebih bantalan * 2609/2610 = OPENSSL_malloc penyangga (1 + 2 + mengisi muatan +); 2611 PV = penyangga; 2612 2613 / * Masukkan jenis respon, durasi dan menyalin payload * / 2614 * PN = ++ TLS1_HB_RESPONSE; 2615 (basis pasangan payload) s2n; 2616 memcpy (BP, pl, payload); 2617 PV + = Payload; 2618 / * hal acak * / 2619 RAND_pseudo_bytes (PV, indentasi); 2620 2621 g = ssl3_write_bytes (s, TLS1_RT_HEARTBEAT, penyangga bantalan + 3 + payload); 

Jadi kesalahan adalah bahwa ukuran catatan Lapangan poin untuk tidak cocok dengan nilai payload. pulsa koneksi TLS dengan mengirimkan panjang nilai lebih besar dari ukuran sebenarnya dari rekor memcpy baca di luar rekaman dan kembali ke apa yang ada di memori setelah perekaman pengguna. kesalahan ini sederhana dan telah didokumentasikan dengan baik di tempat lain. Tapi mari kita mengambil langkah mundur dan fokus pada OPENSSL_malloc Panggilan. OPENSSL_malloc adalah makro yang memanggil CRYPTO_malloc di mem.c . CRYPTO_malloc adalah malloc_ex_func , yang merupakan pointer fungsi, yang dapat dikonfigurasi dalam pelaksanaan OpenSSL untuk memanggil Thanos lain:

 static void * (* malloc_func ) (size_t) = Thanos; static void * default_malloc_ex (size_t, const char * berkas, int baris) {return malloc_func (jumlah); } Static void * (* malloc_ex_func) (size_t, const char * berkas, int baris) = default_malloc_ex; 

Jika kita melihat prototipe fungsi di atas, kita melihat bahwa default_malloc_ex mengembalikan malloc_func , yang merupakan fungsi pointer ke ... menunggu untuk itu ... Thanos . Ini mungkin datang sebagai kejutan bagi Anda, tapi tampaknya ada beberapa kebingungan di internet yang terkena memori bila dipicu kesalahan ini. Lebih pada bahwa dalam beberapa poin.

Jadi kita tahu, CRYPTO_malloc dapat dikurangi untuk memanggil Thanos , dan membuat default. Ini adalah di mana data kami ditulis sebelum , tapi tidak di mana Anda membacanya dari . Untuk memahami mengapa data sensitif bocor, kita harus memahami bahwa freelists menyimpan catatan, di mana untuk mengambil data. Jika kita melihat SSL_CTX_new , kita melihat kode berikut, yang mendefinisikan pertama kalinya freelists. Sebagian besar anggota diinisialisasi ke 0 kecuali untuk wbuf_freelist dan rbuf_freelist , yang ditugaskan untuk panggilan mengembalikan nilai dari OPENSSL_malloc .

 1677 SSL_CTX * SSL_CTX_new (Const SSL_METHOD * met) 1678 {... 1827 #ifndef OPENSSL_NO_BUF_FREELISTS 1828 RET & amp; amp; gt; freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT; 1829 RET & amp; amp; gt; rbuf_freelist OPENSSL_malloc = (sizeof (SSL3_BUF_FREELIST)); Jika 1830 (RET & amp; amp; gt;! Rbuf_freelist) 1831 Goto ERR; 832.000 RET & amp; amp; gt; rbuf_freelist- & amp; amp; gt; chunklen = 0; 1833 RET & amp; amp; gt; rbuf_freelist- & amp; amp; gt; Len = 0; 1834 RET & amp; amp; gt; rbuf_freelist- & amp; amp; gt; Kepala = NULL; 1835 RET & amp; amp; gt; wbuf_freelist OPENSSL_malloc = (sizeof (SSL3_BUF_FREELIST)); 1836 Ketika (RET & amp; amp; gt;! Wbuf_freelist) 1837 {1838 OPENSSL_free (RET & amp; amp; gt; rbuf_freelist); 839.000 Goto ERR; 1840} 1841 RET & amp; amp; gt; wbuf_freelist- & amp; amp; gt; chunklen = 0; RET 1842 & amp; amp; gt; wbuf_freelist- & amp; amp; gt; Len = 0; 1843 RET & amp; amp; gt; wbuf_freelist- & amp; amp; gt; Kepala = NULL; 

ini menyoroti entri pertama dalam rbuf_freelist dan wbuf_freelist memanggil OPENSSL_malloc , kita tahu tantangan ke Thanos . Dengan demikian, kita tahu bahwa memori punggung daftar ini awalnya dipilih dengan Thanos , sehingga tinggal di sepanjang sisi bagian rutin lain dari kode ditugaskan, disebut Thanos langsung. Potongan-potongan ditambahkan ke blok bebas menggunakan freelist_insert dan diekstrak dari blok bebas, menggunakan freelist_extract . Jika freelist_extract fungsi disebut untuk pertama kalinya dalam daftar chunklen 0 (lihat di atas), yang berarti bahwa garis 688 tidak akan tercapai, sehingga THT dan hasil = NULL , yang berarti bahwa panggilan OPENSSL_malloc on line 698 akan terjadi. Ini hanya mengembalikan sepotong sel di bawah kendali Thanos . Jika kondisi ini terpenuhi, daftar irisan bebas yang ada yang tersedia untuk digunakan, sesuai dengan ukuran yang dibutuhkan. Blok ini dilewatkan kembali ke pemanggil, dan ukuran daftar berkurang satu jika itu adalah bagian terakhir dalam daftar, chunklen reset ke 0.

 678 static void * 679 freelist_extract (SSL_CTX * CTX, INT for_read, Int SZ) 680 {681 daftar SSL3_BUF_FREELIST *; 682 SSL3_BUF_FREELIST_ENTRY * THT = NULL; 683 * Hasil tidak valid = NULL; 684.685 CRYPTO_w_lock (CRYPTO_LOCK_SSL_CTX); 686 daftar for_read =? ctx- & amp; amp; gt; rbuf_freelist: ctx- & amp; amp; gt; wbuf_freelist; 687 if (list = NULL & amp; amp; amp;! & Amp; amp; amp; sz == (INT) daftar-& amp; amp; gt; chunklen) 688 THT = daftar-& amp; amp; gt; kepala; 689 if (THT = NULL!) {Daftar-690691 & amp; amp; gt; Kepala = & amp; amp; THT GT; berikutnya; 692 hasil = THT; 693 if (--list- & amp; amp; gt; Len == 0) 694 daftar-& amp; amp; gt; chunklen = 0; 695} 696 CRYPTO_w_unlock (CRYPTO_LOCK_SSL_CTX); 697-698 hasil = OPENSSL_malloc (SZ) (hasil!); Hasil 699 kembali; 700} 

Jika pemanggil dilakukan dengan sepotong penarikan dari daftar panggilan freelist_insert diproduksi. Fungsi pemeriksaan pertama untuk melihat apakah ukuran yang diminta sama dengan daftar chunklen , atau jika daftar chunklen 0. cek lain untuk melihat apakah daftar Len di freelist_max_len (default 32) dan lebih besar dari sizeof (SSL3_BUF_FREELIST_ENTRY) . Jika kondisi ini terpenuhi, maka daftar chunklen diatur ke ukuran yang diinginkan (bisa 0 jika tidak digunakan sebelumnya), THT ditugaskan nilai fragmen menjadi dimasukkan, Berikutnya pointer diatur di kepala daftar kepala diatur untuk THT , ukuran daftar meningkat, dan akhirnya MEM pointer diatur ke NULL. Jika kondisi ini tidak terpenuhi, pertama MEM akan free'd memanggil OPENSSL_free on line 725.

 702 703 kekosongan freelist_insert statis (* SSL_CTX CTX INT for_read, size_t sz, void * MEM) 704 {705 * daftar SSL3_BUF_FREELIST; 706 SSL3_BUF_FREELIST_ENTRY * THT; 707.708 CRYPTO_w_lock (CRYPTO_LOCK_SSL_CTX); 709 Daftar = for_read? ctx- & amp; amp; gt; rbuf_freelist: ctx- & amp; amp; gt; wbuf_freelist; 710 if (list = NULL & amp; amp; amp;! & Amp; amp; amp; 711 (SZ == daftar-& amp; amp; gt; chunklen || daftar-& amp; amp; gt; chunklen == 0) & amp; amp; amp; & amp; amp; amp; 712 daftar-& amp; amp; gt; Len & amp; amp; l; ctx- & amp; amp; gt; freelist_max_len & amp; amp; amp; & amp; amp; amp; 713 SZ & amp ; amp; gt; = sizeof (* THT)) 714 {715 daftar-& amp; amp; gt; chunklen = SZ; 716 THT = MEM; 717 & amp; amp; THT GT; daftar-harinya = & amp; amp; gt; kepala; 718 daftar-& amp; amp; gt; Kepala = THT; 719 ++ daftar-& amp; amp; gt; len; 720 MEM = NULL; 721} 722 723 CRYPTO_w_unlock (CRYPTO_LOCK_SSL_CTX); 724 if (MEM) 725 OPENSSL_free (MEM); 726} 

dapat membantu memori bebas untuk mempercepat pelaksanaan koneksi OpenSSL jika ukuran buffer tertentu diminta berulang kali. memori bebas (membaca dan menulis) tidak peduli apa isi dari bagian atau penelepon tersebut merujuk kepada mereka. buffer ini biasanya setup oleh ssl3_setup_buffers (yang merupakan ssl3_setup_read_buffer dan ssl3_setup_write_buffer ), dan akses kepada mereka sebagai s3- & amp; amp; gt; RBUF , dan akhirnya lulus kembali melalui ssl3_release_read_buffer dan ssl3_release_write_buffer . Oke, jadi sekarang kita memahami dasar-dasar blok SSL gratis (s).

Jadi mengapa semua ini adalah menarik, ketika datang ke Heartbleed? Nah, Internet adalah terang benderang dengan bukti konsep kode untuk kesalahan, aman kebocoran kredensial sesi sensitif dan kunci seharusnya rahasia. Dalam rangka untuk memahami bahwa ada kebocoran, kita hanya perlu melihat kami ssl & amp; amp; gt; s3- & amp; amp; gt; wbuf.buf dan ssl & amp; amp; gt; s3- & amp; amp; gt; rbuf.buf pointer. Kita tahu bahwa mereka dapat disimpan di blok bebas sepanjang sisi potongan lain dari ukuran yang sama persis. Kita juga tahu bahwa ruang bebas memiliki ukuran maksimum, yang merupakan 32 secara default. Jadi cara termudah untuk mulai memilih catatan dari daftar ini, hanya menambah daftar menggunakan beberapa sambungan, atau membuat beberapa permintaan dari berbagai ukuran. Yang terakhir bekerja karena daftar berisi hanya potongan ukuran tertentu.

Jadi sementara OpenSSL adalah menggunakan daftar bebas untuk catatan ini, mereka masih didasarkan pada memori dikembalikan oleh Thanos , yang berarti bahwa mereka dapat hidup berdampingan dengan memori lainnya, yang memiliki dan menggunakan komponen lainnya seperti web server yang menggunakan OpenSSL. Itu sebabnya kita melihat data rahasia ketika kita sebut kesalahan. Alasan lain yang dapat menyebabkan kebocoran data rahasia adalah bahwa OpenSSL mendekripsi catatan ini "di situs". Ini berarti bahwa data SSL buffer ditranskripsikan di lokasi saat ini di memori.

Saat ini, ada beberapa perdebatan tentang bagaimana keamanan OpenSSL melunak penurunan di distributor tumpukan standar, memasukkan daftar gratis Anda sendiri. Pada dasarnya, saya tidak setuju dengan pandangan ini.

  • Untuk memulai, memori bebas yang didukung oleh sistem Thanos (default). Mereka tidak menyadari mereka rentan Thanos sendiri () dari awal.
  • pelaksanaan daftar bebas dan desain yang sama dapat ditemukan dalam sebagian besar aplikasi cukup kompleks Anda berjalan pada desktop Anda sekarang.
  • Kerentanan ini masih cocok untuk digunakan, dan akan terus bocor daerah sensitif dari memori dengan atau tanpa blok bebas.
  • Menariknya, jika Anda ingin menguras data dari tumpukan umum blok bebas adalah bahwa Anda perlu untuk berkeliling pertama.

Ambil titik di atas penting untuk memahami fungsi dan tingkat keparahan keseluruhan kerentanan [2].

Kesimpulannya Heartbleed buruk tapi panik lakukan. kode OpenSSL dapat menjadi berantakan, tapi memiliki beberapa kerentanan eksekusi kode jauh dalam beberapa tahun terakhir bahwa tidak ada membayar banyak perhatian. Internet masih di sini, Anda dapat dengan aman menavigasi email Anda, sehingga tidak ada yang peduli, dan menyediakan banyak energi

Ditulis oleh:. @ChrisRohlf

[1] menunjuk panjang variabel "berguna" adalah batas sosiopat

[2] Dalam pelatihan C / C ++ analisis kode sumber kami yang canggih, kami berbicara banyak tentang memori distribusi dan bagaimana hal itu mempengaruhi tingkat keparahan kesalahan. Kami fokus pada di mana objek disimpan dalam memori, dan mengapa penting untuk memahami bagaimana siklus hidup mereka dikelola dan benda-benda lain dan struktur data yang dikelola bersama mereka.


Apa dia mencoreng di bagian bawah, setiap orang memiliki rumah – tapi tidak ada yang menggunakan itu!

<- Facebook Seperti Tombol berair Infotech END ->

Orang konsumsi di seluruh dunia kopi setiap hari, sehingga sangat mungkin salah satu minuman paling populer di planet ini. Kami minum kopi untuk bangun di pagi hari dan memulai hari dan di setiap bagian dari hari, kami ingin meningkatkan energi kita atau hanya bau dan rasa rasa yang unik.

Kesalahan terbesar itu semua selesai kopi kami. Kami discard tersisa di bagian bawah, yang dianggap tak ternilai harganya.

 Apa dia mencoreng di bagian bawah, semua di rumah Alih-alih melemparkan tanah kopi sebelum menyebar pada sketsa datar atau backing kertas, dan biarkan goreng. Ketika benar-benar kering, siap untuk digunakan dalam berbagai cara, dan di sini kita akan mengatakan hanya 14 dari mereka.

selulit

jika Anda bisa akan sehingga Anda dapat membuat sendiri selulit krim produk yang sangat selulit Anda mencatat mengandung kafein. untuk harga yang jauh lebih rendah, dan dengan efek yang sama. Hanya campuran bubuk kopi dengan sedikit minyak dan krim selulit Anda siap.

sabun

Anda dapat menggunakannya sebagai sabun untuk mengencangkan kulit dan efek peremajaan. Luar biasa!

rambut Radiant

alasan Coffee kaya nutrisi dapat rambut hitam, membuat penuh energi dan kecemerlangan.

terhadap kantong di bawah mata

tidak hanya bahwa kopi akan pagi membantu Anda bangun, tapi Anda dapat membantu mencegah jenis kelelahan. Jika Anda mencampur bubuk kopi dengan sedikit minyak zaitun, campuran yang sempurna yang benar-benar akan meremajakan kulit di bawah mata Anda untuk mempersiapkan. bantalan kopi adalah pilihan yang sangat baik untuk daerah ini.

di lemari es

Untuk menghilangkan bau campuran bahwa semua bentuk disimpan hal di lemari es, hanya menempatkan secangkir ampas kopi di suatu tempat di kulkas, dan itu akan menjadi segar dan bau lezat.


penghapusan Grill karat

karat jaringan adalah sesuatu yang setiap orang menghindari dibersihkan setelah digunakan. Tapi dengan bantuan kopi dan spons, Anda dapat dengan mudah menggosok sampah lengket. Setelah menggosok, hanya bilas dengan air hangat.


Abrasive

Tepat. Anda dapat menggunakan kopi sebagai cleaner murah bahan kimia bebas tanah dalam persiapan untuk pot, panci dan permukaan.


Pada semut

aroma kopi begitu kuat yang mencegah semut menemukan jejak mereka, sehingga menghemat menggigit kerusakan.


terhadap kutu

alasan kopi yang besar untuk menyimpan anjing Anda dari kutu menjengkelkan. hanya menggosok tanah basah kulit anjing Anda dan biarkan dia bebas dari kutu dan memberinya aroma yang bagus.


Pada sumbu

Gunakan jar api-aman bubuk kopi ke dalamnya, lalu angkat dengan pertandingan. uap akan segera dilarang tawon yang paling menjengkelkan jika mereka mencium bau kopi bubuk.


Pada siput

Jika siput adalah musuh menggunakan ampas kopi kopi untuk melindungi bit di dalam tanah. Mereka tentu tidak akan terganggu oleh kehadiran kopi.


Pada kucing liar

Taruh beberapa bubuk kopi di sekitar halaman Anda melupakan kunjungan mengganggu dari kucing liar. Kucing akan tinggal jauh dari perbatasan tak terlihat ini.


kompos

Worms seperti kopi, saran lebih berguna bagi mereka yang berada di tanaman atau berkebun tanaman untuk memperkaya kompos dengan kopi untuk lebih eathworms, yang merupakan produksi jauh lebih baik akan hati.


pupuk

Pada kopi darat termasuk nutrisi kalium, nitrogen dan fosfor, dapat digunakan sebagai pupuk besar. akan membantu vegetasi

untuk semua pecinta kopi, menikmati secangkir kopi untuk 14 alasan lebih lanjut

& amp; amp; nbsp;

Sumber: Myhealthyreason. Off


porno Foto

“Tapi apa yang akan saya katakan anak-anak saya?” Seksualitas dan Otoriterisme

Sebuah pertanyaan yang sering ditanyakan ketika isu pernikahan gay dan transexuality datang “Apa yang akan saya katakan anak-anak saya ketika mereka melihat ___________?” Sejarah di atas respons yang ditunjukkan gambar, perhatian kadang-kadang yang tulus. Hal ini juga mencerminkan pengalaman saya sendiri dalam hidupku, itu adalah biseksual dan polyamorous; Anak-anak terkejut dan tertarik pada inovasi, tetapi sebaliknya, mereka mengintegrasikan pengetahuan baru dengan sisa pandangan dunia mereka baik-baik saja.

Anak-anak sepertinya tidak pernah mereka harapan baik itu. Tampaknya mereka memiliki sangat sedikit atau tidak ada moral yang intuisi kesetaraan, asmara dan seksualitas. orang tua mereka ketika itu adalah keprihatinan yang sah, untuk memastikan; anak Anda hanya akan menerima dan mengintegrasikan kebenaran, “beberapa gay / transgender / apapun.” Tapi apa lagi yang bisa kita pelajari dari kurangnya intuisi moral tentang masalah ini?

Terutama dibandingkan dengan intuisi lain mereka moral, sebagai “tidak adil” dan “tidak memukul saya” dan “menjadi baik padaku,” dikombinasikan dengan kemampuan mereka untuk (studi menggemaskan adalah empati … bayi peduli Format mencoba untuk mendaki bukit dan marah dengan bentuk lain mencoba untuk menghentikannya) berkembang sebagai fungsi dari perkembangan otak tampaknya tidak mungkin dan tetap untuk membuktikan bahwa tidak ada intuisi moral direkomendasikan untuk romantis dan seksual hubungan. Dengan tidak adanya pengajaran aktif norma tersebut, mereka baru saja didirikan dan tidak dianggap sebagai standar dibutuhkan dalam cara yang sama seperti perilaku lainnya. Tidak hanya ada ada intuisi moral yang jelas, tampaknya kita tidak benar-benar intuisi moral untuk kategori secara keseluruhan.

ini dapat dikaitkan dengan romantisme menjadi ciptaan manusia, namun beberapa ikatan hadir di banyak spesies lain, dan ada terlalu banyak struktur otak yang tampaknya ditugaskan kepadanya untuk meyakinkan saya bahwa hubungan romantis ditemukan oleh umat manusia.

Tapi semua bukti yang ada menunjukkan bahwa ada dorongan otoriter untuk mengendalikan orang lain, dan bahwa salah satu metode terbaik yang digunakan dalam segala hal dari biara agama dan kultus Manson untuk sebagian besar militer dan Patty Hearst- pembajak memaksa perilaku seksual, seperti selibat dan pergaulan bebas, dan umumnya sebagai lembaga seksual / romantis dari orang-orang yang ingin mengontrol.

yang dilakukan dalam hal ini, tampaknya lebih mungkin bahwa norma seksual dan romantis seperti yang dikembangkan di masa lalu, tidak semua prinsip-prinsip etika dan intuisi moral, tetapi sebagai otoriter yang ingin mengontrol populasi.

Jadi tanyakan pada diri Anda … Anda dalam penggunaan kekuasaan yang otoriter atas orang lain yang diberikan oleh kontrol sosial seperti perilaku seksual? Kemungkinan besar jawabannya adalah “tidak.” Anda mungkin bagian dari populasi yang otoritarianisme ingin mengontrol penggunaan teknik ini. Karena ini begitu, mengapa harus membantu untuk memperkuat atau membuat tertentu setiap bagian dari aturan ini? Mengapa membantu mereka yang ingin mengontrol dan memanipulasi Anda? Jika Anda hanya seorang oportunis tentang hal-hal ini dan jika kita menghargai kebebasan, maka Anda perlu memeriksa upaya untuk mengontrol dan memanipulasi siapa pun, dan karena itu jelas bahwa manajemen seksual / standar romantis ini harus melawan mereka pada dasar ini

Jadi jangan khawatir tentang anak-anak mereka. perkembangan moral mereka akan tertunda, dan Anda melihat orang-orang menunjukkan hubungan romantis mereka di masyarakat. Mereka hanya akan bekerja prospek untuk memasukkan satu set baru fakta.

Anda mungkin ingin khawatir tentang, namun, berapa banyak keyakinan seperti ini, dugaan isu-isu moralitas dan etika, di bawah pemeriksaan akan manipulasi otoritarianisme mencoba untuk menggunakan beberapa kecenderungan manusia untuk mengontrol orang . pada aku tahu aku punya banyak kehidupan dewasanya menghabiskan melanggar massa ide dengan budaya saya dan keluarga mengirim saya, dan terima kasih kepada penyebaran ini palsu, ide kontrol dalam era kita, aku tidak akan pernah benar-benar dapat aktif bekerja untuk menjaga mereka keluar dari kontrol pikiran saya. Ini adalah salah satu alasan mengapa saya berkomitmen begitu kuat dengan filosofi, rasionalitas, logika, dan di atas semua kebenaran; Tanpa komitmen tersebut, keyakinan palsu dan merusak menghancurkan saya hampir setiap tingkat dibayangkan. Saya benar-benar percaya bahwa perlu komitmen yang sama dari mayoritas penduduk untuk setiap reformasi nyata atau dunia cleaner politik eksis. Kita harus lebih peduli kebenaran dan kebebasan, seluruh kebenaran dan semua kebebasan-kekuasaan atas orang lain.

Bagaimana palsu atau merusak kepercayaan yang Anda miliki yang ditempatkan di sana oleh orang lain yang berusaha untuk mengendalikan dan menggunakannya? Berapa banyak keyakinan atau ide-ide yang merusak Anda palsu hidup Anda hanya politik, agama, ekonomi dan sosial dasar “pemimpin” manfaat berusaha untuk mempertahankan kontrol? Berapa banyak keyakinan atau kepercayaan yang merusak palsu ditransfer ke orang lain dalam upaya untuk mengendalikan mereka? Jujurlah dengan diri sendiri jika tidak bagi saya … seberapa banyak Anda tahu, bukti atau alasan di balik itu adalah transfer ah-th gemetar sedikit, retweet atau belajar lainnya? Bukti apa memiliki perhatian Anda, karena tidak memenuhi rencana Anda? Apa bukti meyakinkan untuk mengabaikan karena agenda lain bagi Anda untuk melakukannya tidak cocok?

Bagaimana kita bisa tahu apakah keyakinan kita curiga tentang orang ini? Salah satu cara adalah dengan menggunakan emosi kita sebagai panduan. hal sederhana fakta (yaitu 3 persegi 9) tidak memiliki emosi yang terkait dan biasanya diambil untuk diberikan tak terbantahkan. Meskipun bukan tes yakin, itu adalah tempat yang baik untuk memulai: sebagai agama, ada banyak emosi yang terlibat dan menantang di ruang publik, kemungkinan menjadi sekitar ide yang baik skeptis dan mulai mencari bukti dan argumen untuk pembentukan keyakinan. Jika masalah adalah salah satu kebal terhadap penyelidikan seperti laporan diri (yaitu “Saya merasa sakit di jari saya”) secara inheren anekdot (yaitu “saya makan siang dengan orang asing kemarin”) atau metafisik (yaitu “realisme nomor yang benar “), maka Anda masih hanya alasan pemandunya, sehingga Anda harus sangat berhati-hati menerima premis yang salah dan untuk berkenalan dengan kesalahan logis kognitif dan berbeda, Anda bisa menipu.

Akhirnya, jika semua masih meninggalkan Anda pasti hal-hal ini, tanyakan pada diri sendiri pertanyaan sederhana ini: “Siapa yang diuntungkan dari saya percaya pernyataan ini:.” Cobalah untuk melihat masalah ini dalam beberapa konteks mungkin di kedua besar dan kecil, politik dan pribadi. Jika orang atau kelompok yang menguntungkan sebagian besar dari Anda percaya persyaratan kontroversial adalah orang yang sama atau kelompok yang ada di tempat pertama pada pernyataan yang meragukan, maka Anda harus sangat curiga terhadap klaim ini.

kejujuran tersebut dapat menjadi beban. Upaya untuk semua palsu, manipulatif dan sering berbahaya kepercayaan diri dan pesan yang kita terima dari dunia di sekitar kita dapat terkena tertahankan. Tapi saya percaya itu benar-benar diperlukan. Tidak hanya keamanan harus dibuat antara indera kita dan pikiran kita, untuk setiap ide Anda menerimanya, kita harus tegas jauh dari ide-ide berbahaya yang sudah mapan tes. Jika kita ingin dunia yang bebas di mana setiap baik secara moral dan bertanya moralitas imbalan, kita tidak bisa membiarkan keyakinan tersebut dalam diri mereka sendiri, kita bisa menikmati godaan keyakinan ini pada orang lain sampai, tidak peduli bagaimana cara terbaik untuk “penyebab” mungkin tampak. Ada “taktik buruk” tidak peduli seberapa baik “menargetkan”; kesetiaan kita kepada satu sama lain dan diri mereka sendiri dimulai dengan kesetiaan pada kebenaran.

Saya tahu orang-orang Anda dengan anak-anak perempuan bisa menyakitkan, tetapi hanya untuk menjelaskan konsekuensi nyata dari seks yang tidak bertanggung jawab dan terletak di sebelah kiri (tidak ada yang memiliki celana bantal dalam hidup Anda). Statistik menunjukkan bahwa hasil terbaik timbul dari pendidikan yang sebenarnya tentang seks, hubungan, penyakit menular seksual, kontrol kelahiran dan kehamilan. Beberapa ketidaknyamanan yang sangat terbatas sekarang dapat menyelamatkan nyawa penderitaan kemudian untuk semua pihak yang terlibat.

Saya juga menyadari bahwa orang-orang religius percaya melampaui argumen etis saya tidak ada artinya karena teologi mereka menentukan etikanya. Untuk TEI, intuisi moral fakta tentang dunia, dan logika tidak sampai ke tugas menjawab pertanyaan-pertanyaan etika dan atau sepenuhnya digantikan oleh seluruh kerangka epistemologi, metafisika dan etika oleh agama mereka. Untuk TEI, saya ditanya pertanyaan yang sama, selama itu Anda dan orang-orang yang berbagi keyakinan bahwa dengan ini besar, “Siapa yang diuntungkan Anda percaya ini?” menikmati agama Anda. Tapi seperti Paus dalam kehidupan negara pendeta mereka sendiri sendiri untuk membeli pesawat yang membuat titik politik dengan kematian pengikut mereka atau kepemimpinan rahasia setelah jejak seorang penulis fiksi ilmiah dengan sejarah etika dipertanyakan, saya pikir Anda mungkin ingin keyakinan

& amp; kantor untuk mempertimbangkan kembali; nbsp;

Puasa “Tapi apa yang akan saya katakan anak-anak saya?”. Seksualitas dan Otoriterisme pertama kali muncul di NealAlanSpurlock.com.


komik xxx 2015

Andrew Bolt tidak rasis, tapi … – Tambor (Australian Broadcasting Corporation)

memperluas koalisi untuk mengubah hukum diskriminasi ras dimulai setelah kolumnis Andrew Bolt ditemukan melanggar mereka atas komentarnya tentang aborigin Australia.

Sumber: Andrew Bolt tidak rasis, tapi … – Tambor (Australian Broadcasting Corporation)

Filed under: Andrew Bolt Tagged: berpura-pura viktimologi  border =

Sebuah sudut berbalik – Everton, tapi masih mil untuk pergi

Jika lagu klasik tentang Amerika terakhir :. “Apa bedanya hari

Nah, tujuh hari bukannya

Sedikit lebih dari seminggu? Optimisme sekitarnya Everton Football Club telah turun ke keluarga rendah baru.

Salah satu modal dihilangkan Piala dalam keadaan kontroversial oleh Manchester City dan mendekam di tempat 12 di Premier League, pisang kulit berpotensi Carlisle United menjauh Piala FA dasi dan dua pertandingan liga yang sulit pada mencari tim kinerja rendah.

dapat menjadi kejutan, mengingat sifat toffee yang menjadi terbalik, membuat mereka tiga pertandingan yang sulit dengan sukses besar.

Kemenangan 3-0 di Brunton Park dengan cepat diikuti dengan dua kemenangan lagi atas Stoke City dan Newcastle United dengan skor yang sama.

bagian ke babak kelima turnamen untuk mendaki enam terkenal di dunia enam poin untuk tempat kedelapan di liga dan sembilan gol tanpa balas.

Sebuah pekerjaan dilakukan dengan baik.

Tapi blues tidak di rumah dan kering oleh bentangan imajinasi saat ini.

Manajer Roberto Martinez menderita tekanan dalam beberapa pekan terakhir dari penggemar dan media sama, dengan banyak dari mereka kepalaku” berusaha untuk sebagian besar membuat tim kavaleri penuh bakat, gaya, potensi dan pengalaman.

dan seperti musim lalu, serta waktu sebagai bos Athletic Wigan, pembalap Spanyol berhasil menyulap sistem yang menyeimbangkan mengalir bebas , menyerang pertahanan gaya tekad baru ditemukan.

kembali ke kebugaran penuh kapten tim Phil Jagielka, gelandang James McCarthy dan bek Seamus Coleman, termasuk tak kenal lelah widemen Aaron Lennon dan Tom Cleverley dan kiper cadangan kemungkinan diberikan Joel Robles – dengan tidak adanya Tim Howard terluka – memiliki peningkatan yang luar biasa dalam ketahanan Everton di belakang

Tapi pengalaman harus lebih. Sebuah perubahan sementara personil dan taktik Evertonians benar-benar percaya bahwa Martinez adalah orang untuk membawa mereka ke depan

 martinezstoke

mantan manajer Swansea City benar dipertanyakan ketika pulih Howard di tempat Oaks musim lalu, meskipun nomor dua permen menjaga tiga lembar bersih di bounce dalam ketiadaan Amerika Serikat -. Sebuah kinerja yang mencapai berusia 25 tahun lebih di minggu terakhir

Martinez juga harus berhati-hati untuk menjadi jengkel garis empat lebih kuat dan tanpa, tentu berbakat John Stones mengambil risiko yang tidak perlu di sepertiga terakhir blues.

Dia akan menemukan cara berpikir yang sementara dalam teori kemenangan melihat Everton membuang poin berharga pergi kemenangan dan kapan harus berubah karena kurangnya regulasi berburu dan barisan belakang keropos.

Semacam berkat dalam tabel Premier League itu musim ini begitu padat yang hanya pengkabelan dua kemenangan dengan Everton liga mengambil pandangan yang jauh lebih optimis.

Tapi ini hanya sedikit miring berubah.

Pertemuan membawa pulang melawan West Bromwich Albion dengan cepat diikuti oleh dasi cangkir untuk Bournemouth dengan Everton -. Kedua belah pihak mengangkat berbagai tes untuk pria biru

Martinez akan melakukannya dengan baik untuk mengikuti sisi mereka menuju ke arah yang benar, bahkan jika ada ambisi toffee untuk mengambil kembali hari-hari kemuliaan tahun 80-an


baju Baju secara online

Pacers reli terlambat, tapi jatuh Kings

INDIANAPOLIS – DeMarcus Cousins ​​25 poin dan 16 rebound untuk musim ini, Darren Collison 24 poin menambahkan untuk musim dan Sacramento Kings diadakan Indiana Pacers 108-106 dari Rabu malam

Regional Rondo memiliki 13 poin dan 16 membantu untuk membantu Kings menang untuk kelima kalinya dalam tujuh pertandingan.

Indiana memiliki kesempatan untuk memaksa lembur, tapi midrange jumper Paul George bangkit kembali dari tepi jurang sebagai sirene terdengar.

Monta Ellis memimpin Indiana dengan 21 poin dan CJ Miles dan George Bukit setiap Pacers 20.The telah kehilangan tiga lurus.

Sacramento membuatnya terlihat lebih awal dengan melompat ke memimpin 64-49 pada babak pertama. Tapi Indiana dibebankan kembali di babak kedua dan akhirnya memimpin 106-104 Ellis ‘tiga sedikit lebih dari dua menit untuk bermain. Kings menjawab dengan empat poin lurus, dan tidak memungkinkan Pacers menang lagi.

Pacers kecil wajah bulat Cousins ​​tempur kuat pusat dominan dan Collison dan Rondo mengurus perimeter.

Dengan turun minum, sepupu dan Rondo sudah ganda ganda dan Collison pendekatan musim dengan skor tinggi .

Pacers masih berhasil berjuang di babak kedua.

Mereka pertama tujuh poin, memotong defisit delapan, sedekat 71- 70 di tengah dari kuartal ketiga dan trailing 84-82 setelah tiga

Tapi berjuang raja hanya untuk lead time -. di Ellis ‘3 dari sudut -. dan mereka mengakhirinya dengan mencetak empat poin terakhir dan memaksa George berjalan di off-balance jumper


vidio Bokep

Hello. Selamat tinggal. Tapi kebanyakan, terima kasih.

Apakah itu hanya satu tahun, empat bulan kami telah bersama-sama? Sepertinya lebih. Mungkin itu karena itu seharusnya menjadi anjing kami sepanjang waktu.

Gus Bantuan Liga Dalmatian dari Tulsa dan asuh kami pulang pada 15 Mei 2014. Ini adalah pria yang lebih tua, tipis dan sangat tenang. Ekornya tidak goyang. Matanya mengikat kita.

Orang tua itu cepat didorong keluar dari van, yang hampir tidak repot-repot untuk berhenti di Mannford, api OK. Jika Anda perlu menarik diri dari Dalmatia, Anda harus melakukannya di stasiun pemadam kebakaran, kan? Petugas pemadam kebakaran diminta untuk mengambil korban melihat, bukan? Tidak, itu adalah kode dari api?

Oh, tunggu. Tidak. Tidak, itu tidak benar-benar

Anjing tua itu dipindahkan ke tempat penampungan hewan Mannford -. Sangat kecil, tanpa embel-embel kennel bangunan. Orang yang bertanggung jawab untuk kontrol hewan tahu bahwa anjing ini akan melakukannya dengan baik di sana, dia prospek akan suram. Berkat keajaiban Facebook, foto anjing dengan cepat. Saya pikir Jim dan aku sama-sama melihatnya. Aku tidak heran jika Jim semuanya akan jatuh ke terburu-buru untuk mendapatkan anjing. Tentu saja itu akan dan itu. Ini adalah keren seperti itu.

Anjing tua, Jim nama Gus buru-buru berlindung langsung ke dokter hewan untuk pemeriksaan dan foto, maka rumah makan yang baik, mandi, dan perhatian dan kasih sayang.

Kenalkan usia Gus suatu tempat di sekitar “lebih tua dari kotoran.” Tidak perlu secara khusus pada titik tertentu dalam permainan kehidupan, kan? Kedua telinganya kerut dan bekas luka, mungkin dari hematoma masa lalu yang disebabkan oleh infeksi telinga. Dia memiliki murmur jantung diucapkan bahwa tiga jenis obat yang dibutuhkan, dan ia kekurangan gizi. Tidak ada yang kita tidak bisa menangani.

Gus beradaptasi dengan kehidupan di ekor Anda Win Pertanian sangat cepat. Kebutuhannya sederhana … memberi saya tempat yang empuk untuk berbaring, memberi saya dua kali sehari, memberi saya obat saya, dan memberikan saya sedikit perhatian setiap hari.

anjing biasa, Gus tidak sangat menerima hal-hal yang membuat kebanyakan anjing pusing. Tidak ada atau “yang ingin pergi untuk berjalan-jalan” “apa yang memperlakukan, akan” istirahat bercanda ia merindukan. Mainan tersentuh di kakinya. Untuk waktu yang lama kami tidak melihat dia gemetar ekor. Kadang-kadang akan terlihat benar melalui Anda, hampir seolah-olah dia buta, tapi ia tidak. Dia tidak menyalak. Dia tidak bermain. Tapi dia tidak punya menggosok kembali baik menikmati.

Dia mencintai rutin. Dia mencintai untuk makan. Dia mencintai memperlakukan ditawarkan secara kebetulan dan dapat mengambil kue ujung jari jika Anda tidak hati-hati, tapi itu hanya semangat dan tujuan yang buruk. Dia benar-benar memiliki tulang berarti dalam tubuhnya

Saya bercanda memanggilnya Raymond, berdasarkan sifat Dustin Hoffman dalam film Rainman . Saya tidak tahu apakah anjing tidak bisa autis, tetapi pada berbagai tingkatan, Gus terlihat di dunia kecil Anda sendiri sebagian besar waktu.

Sesekali, kita akan melihat untuk melihat kepribadian di Gus. Dia akan menemukan jalan untuk Anda, hanya untuk bersandar pada kakinya tertidur di kaki Anda mengusap telinga kecil. Dia diam-diam akan datang kepada Anda, matanya tiba-tiba waspada dan terkait. Saat ini dengan Gus selalu istimewa.

Saya tidak tahu apa yang mungkin menyebabkan perilaku yang tidak biasa. Saya sering bertanya-tanya apakah dia menjalani hidupnya hanya sendirian dengan sangat sedikit kesempatan untuk berinteraksi dengan orang-orang. Atau mungkin dia puppyhood penyakit yang membuatnya terganggu. Atau mungkin itu hanya Gus Gus. Kita tidak akan pernah tahu. Itu tidak terlalu penting. Eksentrisitas nya benar-benar hanya ini menarik dengan cara yang aneh sendiri.

Gus terjebak di rumah kami dan hidup cukup mudah. Dan kemarin kami membantu untuk mendapatkan dia keluar dari kehidupan ini. Melemahnya tulang gagal. Penuaan otak mulai bermain trik pada dirinya. Jantung tuanya mulai berjuang meskipun enam pil sehari.

Gus, karena semua anjing senior yang Foster dikenal selama bertahun-tahun mengingatkan kita bahwa ada sukacita pada anjing mencintai dalam semua tahap kehidupan. Tidak perlu untuk mendapatkan anjing sebagai anak anjing untuk bergabung anjing untuk menghargai setiap saat dengan anjing ini. Ini tidak perlu dekade dengan anjing baginya untuk menjadi bagian khusus dari kehidupan Anda dan keluarga Anda. Hidup

Apa Gus “hilang sebelum ia datang ke kami, saya berharap Jim dan saya lebih dari dibuat untuk itu dalam 16 bulan kita telah datang untuk cinta ini. Dan pada akhirnya, Gus memiliki dua orang dengan dia untuk mengingatkan dia bahwa dia penting, indah, putra tercinta.

Sebagai imbalannya, kami diperlakukan untuk sedikit terakhir menunggu ekornya.

Terima kasih Gus manis. Kami mencintaimu.


Streaming porno

Hatiku baik-baik saja, tapi mata saya berdarah

TL; DR: heartbleed buruk, tapi itu bukan akhir dari dunia. OpenSSL tidak rentan karena freelists mereka dan akan terus menjadi rentan tanpa mereka.

Kami merasa bahwa masih tidak cukup komentar heartbleed, sehingga menulis lagi. Tidak seperti banyak tempat-tempat lain, kita tidak akan berbicara tentang TLS, atau mengapa kami percaya bahwa ekspansi jantung adalah orang bodoh. Sebaliknya, kami berniat untuk fokus pada dirinya sendiri dan, lebih khusus, kesalahan untuk itu data sensitif yang bocor.

Pertama, saya katakan bahwa sejauh kesulitan berjalan, kerentanan heartbleed tidak ada yang istimewa, tapi itu tidak berarti itu mudah untuk menemukan. Semua kesalahan yang mudah dikenali ketika seseorang menunjukkan mereka kepada Anda. 20/20 belakang di akhir. Rick dan Anti ibu di Codenomicon dan Neil Mehta di Google saja ditemukan kesalahan. Neil cukup untuk memeriksa posisi sehat ini sebelum ia pergi di udara (terima kasih kepada Neel!) Apapun perasaan Anda tentang pengungkapan kerentanan, Anda harus berterima kasih kepada mereka untuk menemukan kesalahan dan memberi kita semua sesuatu yang menarik untuk dibicarakan.

Semua kode dalam posisi ini dengan OpenSSL-1.0.1c, aku bekerja di mesin virtual tua dengan Apache. Pertama, mari kita membahas beberapa struktur data OpenSSL yang paling penting. Untuk diskusi ini, tingkat “atas” dari struktur SSL , yang didefinisikan di ssl.h , dan ssl_st ke typedef . Dalam struktur ini adalah pointer ke S3 Ketik SSL3_STATE , yang merupakan typedef ssl3_state_st . Dalam struktur ini adalah struktur lain, seperti SSL3_RECORD , yang kita sebut sebagai RREC . The SSL3_RECORD mengandung Jenis dan panjang nilai-nilai di antara daerah lain. The SSL3_STATE struktur juga berisi RBUF , dan WBUF Ketik SSL3_BUFFER . The SSL3_BUFFER struktur berisi pointer ke data buf , dan County / diimbangi / meninggalkan Peserta melacak penggunaannya. Buffer ini dialokasikan dan sering dilepaskan selama pertukaran TLS. Untuk meningkatkan kinerja, para pengembang menulis implementasi daftar bebas OpenSSL terpisah untuk penyimpanan. Ini adalah di atas meja daftar, rupanya para dewa, tetapi sangat mudah untuk memahami (lebih di bawah ini). Memori bebas sebenarnya adalah dua daftar, satu untuk buffer read ( RBUF ) dan satu untuk menulis buffer ( WBUF ). Daftar ini tersedia melalui SSL_CTX struktur yang berisi wbuf_freelist dan rbuf_freelist , masing-masing. Kami mengacu pada SSL_CTX struktur melalui pointer ke SSL struktur. Jerez beberapa pseudo-kode untuk membuatnya kurang membingungkan. Beberapa variabel dipotong untuk singkatnya

 {SSL SSL_CTX * CTX struktur. SSL3_STATE * S3; {} Struktur SSL_CTX SSL3_BUF_FREELIST wbuf_freelist; Rbuf_freelist SSL3_BUF_FREELIST; {} Struktur SSL3_STATE SSL3_BUFFER RBUF; / * Baca IO goes here * / SSL3_BUFFER WBUF; / * Rekam IO goes here * / SSL3_RECORD RREC; / * Setiap diterjemahkan record goes here * / SSL3_RECORD WREC; / * Periksa dari sini * /} {struktur SSL3_BUF_FREELIST size_t chunklen; len int unsigned; SSL3_BUF_FREELIST_ENTRY * kepala; Struktur SSL3_BUFFER} {unsigned char * buf; / * Setidaknya SSL3_RT_MAX_PACKET_SIZE byte * lihat ssl3_setup_buffers () * / size_t len; / * Ukuran penyangga * / INT Bias; / * Ketika 'copy' * / INT Kiri; / * Jumlah byte yang tersisa * /} struktur SSL3_RECORD {/ * g * Jenis / INT; / * Rekam Jenis * / / * * RW / panjang int unsigned; / * Jumlah byte yang tersedia * / / * g * / unsigned int Off; / * Offset baca / tulis "BUF" * / / * * RW / unsigned char * data; / * Pointer ke data record * / / * * RW / unsigned char * I / *, di mana byte decoding adalah * / / * g * / unsigned char * PC / * Gunakan hanya dengan dekompresi -. Thanos () ed * /} 

Jadi sekarang kita memahami beberapa struktur dasar memungkinkan kita untuk menyelidiki Heartbleed're kerentanan dilarang untuk membaca dalam pelaksanaan OpenSSL TLS detak jantung. The fungsi tls1_process_heartbeat bertanggung jawab untuk menganalisis pesan detak jantung TLS. Di 2586 pointer garis ditugaskan beban x adalah pointer ke struktur jenis SSL . Struktur ini berisi sebuah pointer ke S3 SSL3_STATE . Struktur yang ditunjukkan oleh S3 adalah array dari SSL3_RECORD jenis yang kami sebut sebagai RREC . Indeks P sekarang menunjuk ke record pertama. Dalam Garis 2593 nilai panjang diekstrak dari catatan dan ditugaskan untuk payload [1]. Di 2610 garis memori ditugaskan untuk pesan balasan. Panggil OPENSSL_Malloc mengalokasikan cukup memori (19+ payload) byte, nilai kembali ditugaskan untuk indeks clipboard . On line di 2616 disebut memcpy disalin ke pl (menunjukkan catatan jenis dan panjang bidang) di bps (buffer kita hanya dibebankan ke baris di 2610) adalah persis jumlah byte yang dapat digunakan

 2584 tls1_process_heartbeat SSL (* S) 2585 2586 {unsigned char * P = & amp; amp; Amp;. & Amp; Amp; Gt S; s3- & amp; amp; Gt; rrec.data [0] * PL; 2587 hbtype singkat unsigned; 2588 simbol payload INT; 2589 int mengisi unsigned = 16; / * Gunakan minimal padding * / 2590 2591 / * Baca jenis dan panjang payload pertama * / 2592 * p ++ = hbtype 2593 n2s (P, payload); PL = p 2594; 2595 2596 jika (S dan GT; msg_callback) 2597 S dan GT; msg_callback (0, S & amp; amp; gt; versi, TLS1_RT_HEARTBEAT, 2598 dan amp; S dan GT; s3- & amp; amp; gt; rrec.data [0], S & amp; amp; gt; S3 - & amp; amp ; gt; rrec.length, 2599 tahun, dan S gt; msg_callback_arg); 2600 2601 jika (== TLS1_HB_REQUEST hbtype) 2602 2603 {unsigned char * buffer * BP; 2604 INT R; 2605 2606 / * Mengalokasikan memori untuk jawaban, ukuran 1 byte 2607 * Tipe 2 byte lagi panjang pesan kargo, dan 2608 * beban lebih padding 2609 * / 2610 penyangga = OPENSSL_malloc (1 + 2 + beban + fill); 2611 bp = Buffer; 2612 2613 / * Masukkan jenis respon, panjang, copy beban * / 2614 * Uap ++ = TLS1_HB_RESPONSE; 2615 S2n (payload, BP); 2616 memcpy (BP, persegi, payload); 2617 BP + = beban; 2618 / * random bantalan * / 2619 RAND_pseudo_bytes (BP, upholstery); 2620 2621 R = ssl3_write_bytes (dengan TLS1_RT_HEARTBEAT, buffer, 3 + payload + padding); 

Dengan demikian, kesalahan adalah bahwa ukuran record pl belum untuk poin yang sesuai dengan nilai muatan. Mengirim pesan detak jantung TLS dengan nilai lebih besar dari ukuran sebenarnya dari rekaman akan menyebabkan memcpy membacakan rekaman dan kembali ke yang disimpan dalam memori setelah perekaman kepada pengguna. Kesalahan ini sederhana dan telah didokumentasikan dengan baik di tempat lain. Tapi mari kita mengambil langkah mundur dan fokus pada OPENSSL_malloc Panggilan. OPENSSL_malloc adalah makro yang memanggil CRYPTO_malloc mem.c . CRYPTO_malloc Panggil malloc_ex_func , yang merupakan pointer ke fungsi yang dapat diatur dalam pelaksanaan OpenSSL memanggil alokasi memori lain:

 static void * ( * malloc_func) (size_t) = Thanos; static void * default_malloc_ex (size_t Dalam pembangunan file *, int line) {return malloc_func (Nm); } Static void * (* malloc_ex_func) (size_t, char * konstruksi berkas, INT line) = default_malloc_ex; 

Jika Anda melihat prototipe fungsional di atas, kita dapat melihat bahwa default_malloc_ex kembali malloc_func , yang merupakan pointer ke fungsi menunggu ... Anda ... Thanos . Ini mungkin datang sebagai kejutan bagi Anda, tetapi tampaknya ada beberapa kebingungan di internet yang terkena memori ketika memulai kesalahan ini. Lebih pada bahwa dalam beberapa paragraf.

Jadi kita tahu CRYPTO_malloc dapat dikurangi untuk panggilan ke Thanos , dan membuat default. Di sinilah data kami ditulis sebelum , tetapi tidak di mana kita membaca di . Untuk memahami mengapa data rahasia yang bocor, kita harus memahami bahwa freelists menyimpan catatan dari mana untuk mengambil data. Jika kita melihat SSL_CTX_new kita lihat kode berikut, yang menetapkan freelists pertama. Sebagian besar anggota diinisialisasi ke 0, dengan pengecualian wbuf_freelist dan rbuf_freelist , ditugaskan untuk nilai yang dikembalikan dengan memanggil OPENSSL_malloc .

 1677 SSL_CTX * SSL_CTX_new (SSL_METHOD konstruksi * met) 1678 ... 1827 {#ifndef OPENSSL_NO_BUF_FREELISTS 1828 RET & amp; amp; Gt; freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT; 1829 RET & amp; amp; Gt; rbuf_freelist OPENSSL_malloc = (sizeof (SSL3_BUF_FREELIST)); 1830 ketika (RET & amp; amp; gt;! Rbuf_freelist) 1831 go ERR; Ribuan RET 832 & amp; amp; Gt; rbuf_freelist- & amp; amp; Gt; chunklen = 0; 1833 RET & amp; amp; Gt; rbuf_freelist- & amp; amp; Gt; Len = 0; 1834 RET & amp; amp; Gt; rbuf_freelist- & amp; amp; Gt; Kepala = NULL; 1835 RET & amp; amp; Gt; wbuf_freelist OPENSSL_malloc = (sizeof (SSL3_BUF_FREELIST)); Jika 1836 (RET & amp; amp; gt;! Wbuf_freelist) 1837 {1838 OPENSSL_free (RET & amp; amp; gt; rbuf_freelist); 839 Ribu pergi ERR; 1840} 1841 RET & amp; amp; Gt; wbuf_freelist- & amp; amp; Gt; chunklen = 0; 1842 RET & amp; amp; Gt; wbuf_freelist- & amp; amp; Gt; Len = 0; 1843 RET & amp; amp; Gt; wbuf_freelist- & amp; amp; Gt; Kepala = NULL; 

ini menyoroti entri pertama di rbuf_freelist dan wbuf_freelist , memanggil OPENSSL_malloc , kita tahu, panggilan ke Thanos . Jadi kita tahu bahwa memori punggung mereka daftar awalnya terisolasi dari Thanos , bahwa ia hidup di sisi lain dari buah biasa dipilih oleh kode yang disebut Thanos langsung . Potongan-potongan ditambahkan ke blok bebas menggunakan freelist_insert dan diekstrak dari blok bebas menggunakan freelist_extract . Jika freelist_extract fungsi pertama disebut List chunklen 0 (lihat di atas), yang berarti bahwa garis 688 tercapai, meninggalkan THT dan Hasil = NULL , yang berarti bahwa panggilan untuk OPENSSL_malloc on line 698 akan terjadi. Ini hanya mengembalikan sepotong tumpukan didorong Thanos . Jika kondisi ini terpenuhi, maka daftar gratis bit yang tersedia tersedia untuk digunakan, yang sesuai dengan ukuran yang diinginkan. Blok ini dilewatkan kembali ke pemanggil, dan ukuran daftar berkurang satu jika itu adalah bagian terakhir dalam daftar, chunklen reset ke 0.

 678 static void * 679 freelist_extract (SSL_CTX * CTX, for_read INT, INT SZ) 680 {681 SSL3_BUF_FREELIST * Daftar; 682 SSL3_BUF_FREELIST_ENTRY * EAC = NULL; 683 void * hasil = NULL; 684 685 CRYPTO_w_lock (CRYPTO_LOCK_SSL_CTX); 686 = Daftar for_read? ctx- & amp; amp; Gt; rbuf_freelist: ctx- & amp; amp; Gt; wbuf_freelist; 687 jika (list = NULL & amp; amp; amp;! & Amp; amp; amp; sz == (INT) daftar-& amp; amp; gt; chunklen) 688 THT = daftar-& amp; amp; Gt; kepala; 689 jika (THT = NULL!) {Daftar-690691 & amp; amp; Gt; Kepala ent- = & amp; amp; Gt; menutup; Hasilnya = 692 THT; 693 jika (--list- & amp; amp; gt; Len == 0) 694 daftar-& amp; amp; Gt; chunklen = 0; 695} 696 CRYPTO_w_unlock (CRYPTO_LOCK_SSL_CTX); 697 if (hasil!) 698 = menghasilkan OPENSSL_malloc (SZ); 699 mengembalikan hasilnya; 700} 

Jika pemanggil dilakukan dengan sepotong yang diekstrak dari daftar panggilan freelist_insert diproduksi. Fungsi ini memeriksa untuk melihat apakah ukuran yang diminta adalah sama dengan daftar chunklen , atau jika daftar chunklen 0 cek lain untuk melihat apakah daftar pakaian sudah freelist_max_len (32 secara default) dan lebih dari ukuran sizeof (SSL3_BUF_FREELIST_ENTRY) . Jika kondisi ini kemudian puas dengan daftar chunklen ditetapkan pada nilai yang diminta (yang mungkin telah 0 jika tidak digunakan sebelumnya), THT diatur untuk sepotong yang dimasukkan, Berikutnya pointer diatur ke kepala , kepala daftar didefinisikan sebagai THT , ukuran daftar meningkat, dan akhirnya, MEM pointer diatur ke NULL. Jika kondisi ini tidak terpenuhi, pertama MEM akan free'd memanggil OPENSSL_free on line 725.

 702 703 statis kekuatan freelist_insert (CTX SSL_CTX * INT for_read, SZ size_t, void * MEM) 704 {705 SSL3_BUF_FREELIST * Daftar; 706 SSL3_BUF_FREELIST_ENTRY * THT; 707 708 CRYPTO_w_lock (CRYPTO_LOCK_SSL_CTX); 709 = Daftar for_read? ctx- & amp; amp; Gt; rbuf_freelist: ctx- & amp; amp; Gt; wbuf_freelist; 710 jika (list = NULL & amp; amp; amp;! & Amp; amp; amp; 711 (SZ == daftar-& amp; amp; gt; chunklen || daftar-& amp; amp; gt; chunklen == 0) & amp; amp; amp; & amp; amp; amp; 712 daftar-& amp; amp; gt; Len & amp; amp; lt; ctx- & amp; amp; gt; freelist_max_len & amp; amp; amp; & amp; amp; amp; 713 SZ & amp ; amp; gt; = sizeof (* THT)) {714 715 daftar-& amp; amp; Gt; chunklen = SZ; 716 = THT MEM; 717 ent- & amp; amp; Gt; Berikutnya daftar-= & amp; amp; Gt; kepala; 718 daftar-& amp; amp; Gt; Kepala = THT; 719 ++ daftar-& amp; amp; Gt; Len; 720 MEM = NULL; 721} 722 723 CRYPTO_w_unlock (CRYPTO_LOCK_SSL_CTX); 724 jika (MEM) 725 OPENSSL_free (MEM); 726} 

memori bebas dapat membantu mempercepat kinerja koneksi OpenSSL, ukuran penyangga khusus telah meminta berulang kali. Memori bebas (membaca dan menulis), tidak peduli apa isi dari potongan-potongan yang pelanggan atau menelepon mereka. Buffer ini biasanya setup oleh ssl3_setup_buffers (yang merupakan ssl3_setup_read_buffer dan ssl3_setup_write_buffer ), dan akses ke s3- & amp; amp; Gt; RBUF , dan akhirnya lulus kembali melalui ssl3_release_read_buffer dan ssl3_release_write_buffer . Oke, jadi, sekarang kita mengerti, berbasis SSL bebas blok (s).

Jadi mengapa semua ini menarik ketika datang ke heartbleed? Nah, api Internet konsep kode untuk bug yang dapat ditelusuri data sensitif andal sesi dan kunci seharusnya rahasia. Untuk memahami bahwa ada kebocoran, kita hanya perlu melihat kami SSL dan GT; s3- & amp; amp; Gt; wbuf.buf dan SSL dan GT; s3- & amp; amp; Gt; rbuf.buf pointer. Tentu saja, hal itu dapat disimpan di blok bebas sepanjang sisi potongan lain dengan ukuran yang sama persis. Kita juga tahu bahwa ruang bebas memiliki ukuran maksimum, yang merupakan 32 secara default. Dengan demikian, cara sederhana untuk memulai catatan skrining dari daftar ini adalah dengan hanya menambah daftar beberapa koneksi atau membuat beberapa permintaan dari berbagai ukuran. Karya terbaru karena daftar berisi hanya potongan-potongan dengan ukuran tertentu.

Jadi, untuk menggunakan OpenSSL daftar bebas untuk catatan ini, mereka masih mengandalkan memori dikembalikan oleh Thanos , yang berarti bahwa mereka dapat hidup berdampingan memori disimpan dan digunakan oleh komponen lainnya seperti server Web yang menggunakan OpenSSL. Itu sebabnya kita melihat data rahasia ketika mereka menyebabkan kesalahan. Alasan lain mengapa kita bisa bocor data sensitif adalah bahwa OpenSSL mendekripsi catatan ini "di tempat." Ini berarti bahwa SSL-write buffer yang diterjemahkan dalam lokasi saat ini di memori.

Saat ini beberapa perdebatan tentang bagaimana untuk mengurangi itu melunak distributor tumpukan standar OpenSSL keamanan, memasukkan daftar bebas Anda sendiri. Pada dasarnya saya setuju dengan pandangan ini.

  • Sebagai permulaan, daftar memori bebas yang didukung oleh sistem Thanos (default). Mereka tidak menyadari kerentanan mereka sendiri Thanos () dari awal.
  • pelaksanaan daftar bebas dan sama proyek dapat ditemukan dalam aplikasi yang paling cukup kompleks Anda berjalan pada desktop Anda sekarang.
  • Kerentanan ini akan tetap terlibat dan akan terus bocor bagian sensitif dari memori dengan atau tanpa blok bebas.
  • Menariknya, jika Anda ingin kebocoran data dari memori tumpukan global yang tersedia adalah Anda harus mendapatkan sekitar pertama.

Poin di atas gravitasi yang diambil penting untuk memahami kerentanan operasional dan global [2].

Kesimpulannya, heartbleed buruk tapi panik lakukan. Kode OpenSSL dapat menjadi berantakan, tapi itu jauh kerentanan eksekusi kode agak dalam beberapa tahun terakhir bahwa tidak ada yang membayar banyak perhatian. Internet masih di sini, Anda masih bisa melihat dengan aman e-mail Anda, tidak ada yang peduli, dan banyak makan

Ditulis oleh: .ChrisRohlf

[1] Nama panjang "biaya" variabel adalah sosiopat batas

[2] dalam pelatihan C / C ++ analisis kode sumber kami yang canggih, kami berbicara banyak tentang alokasi memori, dan bagaimana hal itu mempengaruhi tingkat keparahan error. Kami fokus pada apa objek yang dialokasikan di memori, sehingga sangat penting untuk memahami bagaimana siklus hidup mereka dikelola, dan benda-benda lain dan struktur data dikelola di samping mereka.


elect10

Ini akan menjadi musim kampanye yang panjang excrutiating … tapi ………… .. *

 Juga tersedia di eBay untuk penawar tertinggi

Juga tersedia di eBay kepada penawar tertinggi

* TAPI … memotong excrutiating jika ada beberapa titik terang. Kartun editorial yaitu politik yang saya benar-benar menyukainya. Saya berpikir tentang hal itu hari ini karena saya memiliki percakapan dengan orang asing di dokter hari ini dan ia menyebutkan bagaimana hampir satu tahun dan beberapa bulan sampai pemilihan presiden yang sebenarnya. Saya pikir dia akan menangis too……………………………………………………………………………………………………………….. Pokoknya, ia mengatakan ia sangat marah bahwa musim kampanye dimulai segera setelah akhir kampanye musim lalu berakhir dan jika saya ingat benar, ia menangis. Jadi, untuk meyakinkan dia, saya berkata, “Ya, kau benar, tapi saya pikir sisi positif dari hal-hal.” ………………………………………….. ……. .. “As (sob) yang tidak.” Dia replied…………………………………………………………………………………………… Jadi saya Sez ……. “kartun editorial politik … ..especially mereka Donald Trump.” …………. Dia masih tidak yakin apa yang saya maksud, jadi aku harus resor untuk taktik “cinta yang kuat” dan mencabut kamera digital lama saya dan menunjukkan slide show dari kartun Saya mencatat sejauh ini. Dan kampanye ini hanya terjadi untuk beberapa bulan (tahun terlihat seperti itu) telah sangat komik disimpan ………………… … ………………………… … Dan seperti yang kita semua tahu, setidaknya bagi kita dengan pikiran bisnis diverifikasi Anda ingin membuat titik ……… apa kan cara yang lebih baik daripada untuk membuat kartun lucu ……………….. ……………. ……………… .. Setelah menonton kartun, ia berhenti menangis, dan saya merasa jauh lebih baik. Mengingat bahwa itu menunggu di ruang tunggu dokter untuk kolonoskopi …………………………….. yang ………………. ..

Ups ..........

Oops ……….

Apa yang dilakukan setengah lainnya, saya benar-benar santai, karena “I” adalah NOT………………………………………………………………………………………………. Semua Orang. Saya memutuskan bersama-sama untuk berbagi dengan Anda beberapa yang terbaik (menurut saya) kartun editorial untuk kamera saya masuk ke kelebihan kartun … ..which Saya menduga itu akan memberikan, seperti yang saya sebutkan sebelumnya, masih ada sekitar jahat “POLITIK penurunan tahun CAMPAIGNING………….(sob)………………………………………………………………………………………….. Oh ………………… kartun kolonoskopi lain … .. (tidak bisa menahan)

 Sniff ..... Aku merobek karena saya mendengar lagu ini

Sniff. .. ..aku selalu robek ketika saya mendengar lagu ini