Similar documents
Sophos Anti-Virus UNIX or Linux startup guide

LinuxDeviceDriver2003-PDF.PDF


joho07-1.ppt

untitled

debug ( ) 1) ( ) 2) ( ) assert, printf ( ) Japan Advanced Institute of Science and Technology

t20s3-fn09.pdf

Linuxデバイスドライバ.PDF

tutorial_lc.dvi

Microsoft Word - C.....u.K...doc

MINI2440マニュアル

Armadillo-9 ソフトウェアマニュアル

Red Hat Enterprise Linux ES (v. 3)


appli_HPhi_install

PRIMERGY Econel 100 オンボード アレイコントローラ<RAID 1> フリーOS動作確認情報

% finger apt-get kernel-package, libc6-dev, gcc, make, bin86, bzip2, libdb3-dev, libncurses-dev, fakeroot

OpenAM 13 インストールガイド

(2 Linux Mozilla [ ] [ ] [ ] [ ] URL 2 qkc, nkc ~/.cshrc (emacs 2 set path=($path /usr/meiji/pub/linux/bin tcsh b

Oracle HTML DB 導入ガイド

Microsoft Word - esm_update_jp.doc

r08.dvi

ohp03.dvi

Linux XScreenSaver T020074

I 2 tutimura/ I 2 p.1/??

ohp08.dvi

Microsoft Word - FreeBSD_LDPRELOAD002.doc

RedHat OpenFOAM OpenFOAM ver 2.3 RedHat(RHEL)

untitled

0みなみ2012年1月1・14P.indd

untitled

C ( ) C ( ) C C C C C 1 Fortran Character*72 name Integer age Real income 3 1 C mandata mandata ( ) name age income mandata ( ) mandat


r07.dvi

2 1. Ubuntu 1.1 OS OS OS ( OS ) OS ( OS ) VMware Player VMware Player jp/download/player/ URL VMware Plaeyr VMware

ohp07.dvi

防災マップ作成システムの開発業務基本設計書

更新履歴 版数日付更新内容作成者 初版 2014/05/18 第 2 版 2016/04/08 l 3.1. ポートの開放 で 600/udp への l incoming を 600/udp からの incoming へ訂正 Globus Toolkit のバージョンを から 6.0 へ

Microsoft Word - PSB導入ガイド_ docx

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

3.2 Linux root vi(vim) vi emacs emacs 4 Linux Kernel Linux Git 4.1 Git Git Linux Linux Linus Fedora root yum install global(debian Ubuntu apt-get inst

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

Appendix

Gfarm/MPI-IOの 概要と使い方

PowerGres on Linuxマニュアル

第5回お試しアカウント付き並列プログラミング講習会

IP L09( Tue) : Time-stamp: Tue 14:52 JST hig TCP/IP. IP,,,. ( ) L09 IP (2017) 1 / 28

: CR (0x0d) LF (0x0a) line separator CR Mac LF UNIX CR+LF MS-DOS WINDOWS Japan Advanced Institute of Science and Technology

橡Pro PDF

bhj_2008_FFR_EXCALOC.pdf

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() 2 double *a[ ]; double 1 malloc() dou

MINI2440マニュアル

C

ソフトウェアについて Rev 年 1 月 16 日 このマニュアルでは標準でインストールしているソフトウェアの入手元 インストール方法の概要 インストール場所 についてご案内致します ABySS

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() malloc 2 #include <stdio.h> #include

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

WebSphere Application Server V5.0 for Linux Ver. 1.11

HITACHI Gigabit Fibre Channel (SUSE Linux Enterprise Server IOCard-FP2-Z-199(1)

Red Hat Enterprise Linux AS (v.3 for IPF) Update 3

SOC Report

昨年度までの研究紹介 および 研究計画

PowerGres on Linux HAマニュアル

Promise FastTrak100 Japanese Manual

Installation Guide for Linux

Minimum C Minimum C Minimum C BNF T okenseq W hite Any D

Copyright 2011, Oracle and/or its affiliates. All rights reserved. U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integra

Apache Web Server 2 Compaq ActiveAnswers Deskpro Compaq Insight Manager Fastart Systempro Systempro/LT ProLiant ROMPaq Qvision SmartStart NetFlex Quic

r03.dvi

untitled

Copyright Oracle Parkway, Redwood City, CA U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated softw

AutoTuned-RB

Untitled

A Responsive Processor for Parallel/Distributed Real-time Processing

Northern Lights Server

Copyright 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved. U.S. Government Rights Commerci

プログラムローダを用いた 関数の置換により Stack-based Buffer Overflow攻撃を 緩和する手法の提案と実装

I117 II I117 PROGRAMMING PRACTICE II 2 SOFTWARE DEVELOPMENT ENV. 2 Research Center for Advanced Computing Infrastructure (RCACI) / Yasuhiro Ohara yasu

大統一Debian勉強会 gdb+python拡張を使ったデバッグ手法

INR-HG5579a_Netshut_Guide_Linux-Solaris_.doc

LetItB Installation Manual - Japanese version

:30 12:00 I. I VI II. III. IV. a d V. VI

DAQ-Middleware 開発環境の準備

NVR Quick Setup Guide_v2.book

:30 12:00 I. I VI II. III. IV. a d V. VI

#include <stdio.h> unsigned char x86[] = { 0x8b, 0x44, 0x24, 0x04, // mov eax,[esp+4] 0x03, 0x44, 0x24, 0x08, // add eax,[esp+8] 0xc3 // ret }; int ma

ex12.dvi

install

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main

スライド 1

ESMPRO/DeliveryManager

SCore と escience の install と 設定について 理化学研究所 亀山豊久

名称未設定

Intel Memory Protection Extensions(Intel MPX) x86, x CPU skylake 2015 Intel Software Development Emulator 本資料に登場する Intel は Intel Corp. の登録

034_01_p12.pdf

エラー処理・分割コンパイル・コマンドライン引数

NI P1200 Release Notes Cover

PowerGres on Linuxマニュアル

CentOSv2_furoku

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

Transcription:

1.... 1 2.... 1 3. STACK SMASHING PROTECTOR... 2 3.1.... 2 3.2. SSP... 2 3.2.1. SSP... 2 3.2.2. SSP egcs... 3 3.3. SSP C... 7 3.3.1. glibc... 7 3.3.2. glibc spec... 7 3.3.3. glibc... 8 3.4. SSP... 9 3.4.1.... 9 3.4.2. spec... 11 3.4.3.... 12 3.5.... 13 4. LIBSAFE... 14 4.1.... 14 4.2. LIBSAFE... 14 4.2.1. Libsafe... 14 4.2.2. RPM... 15 4.2.3.... 16 4.3. LIBSAFE... 17 4.3.1.... 17 4.3.2.... 17 4.4. LIBSAFE... 18 4.4.1.... 18 4.4.2.... 19 5.... 21. -i

...22. -ii

1. Stack Smashing Protector Libsafe 2 2. Stack Smashing Protector Libsafe 2 2 2 Stack Smashing Protector Libsafe C C Stack Smashing Protector 1.. -1

3. Stack Smashing Protector 3.1. Stack Smashing Protector SSP SSP SSP 3.2. SSP SSP SSP gcc gcc SSP gcc 3.2.1. SSP SSP Red Hat Linux 6.2 1 egcs-1.1.2-30p (gcc ) Intel SSP egcs-1.1.2-30p FreeBSD Red Hat 2 1 Red Hat Linux 6.2 egcs 2 Red Hat FreeBSD [1]. -2

3.2.2. SSP egcs SSP egcs SSP egcs egcs egcs 6. 1) egcs egcs ftp://ftp.redhat.com/pub/redhat/linux/6.2/ja/os/i386/srpms/egcs-1.1.2-30.src.rpm # rpm -ivh egcs-1.1.2-30.src.rpm egcs SPEC # ls /usr/src/redhat/sources egcs-1.1.2-addressof.patch egcs-1.1.2-asm.patch egcs-1.1.2-cpu.patch egcs-1.1.2-davem.patch egcs-1.1.2-expr.patch egcs-1.1.2-fold.patch egcs-1.1.2-integrate.patch egcs-1.1.2-linux.patch egcs-1.1.2-strlen.patch egcs-1.1.2-warn.patch egcs-1.1.2-tar.bz2 egcs-libstdc++-compat.tar.gz egcs-1.1.2-gcse.patch # ls /usr/src/redhat/specs egcs.spec. -3

2) SSP SSP SPEC http://www.trl.ibm.com/projects/security/ssp/redhat62/egcs.spec.patch # mv egcs.spec.patch /usr/src/redhat/specs SSP http://www.trl.ibm.com/projects/security/ssp/redhat62/egcs-1.1.2-protector.patch # mv egcs-1.1.2-protector.patch /usr/src/redhat/sources 3) egcs (SPEC ) /usr/src/redhat/specs egcs # cd /usr/src/redhat/specs # patch p0 < egcs.spec.patch 4) egcs egcs # rpm -bb --buildpolicy redhat /usr/src/redhat/specs/egcs.spec. -4

# ls /usr/src/redhat/rpms/i386 cpp-1.1.2-30p.i386.rpm egcs-1.1.2-30p.i386.rpm egcs-g77-1.1.2-30p.i386.rpm egcs-objc-1.1.2-30p.i386.rpm egcs-c++-1.1.2-30p.i386.rpm libstdc++-2.9.0-30p.i386.rpm 5) egcs egcs # rpm -Uvh --force /usr/src/redhat/rpms/i386/egcs-1.1.2-30p.i386.rpm 6) SSP gcc (test.c) #include <stdio.h> #include <string.h> #include <sys/types.h> #include <stdlib.h> char shellcode[] = " xeb x1f x5e x89 x76 x08 x31 xc0 x88 x46 x07 x89 x46 x0c xb0 x0b" " x89 xf3 x8d x4e x08 x8d x56 x0c xcd x80 x31 xdb x89 xd8 x40 xcd" " x80 xe8 xdc xff xff xff/bin/sh"; char large_string[128]; int contains_null_bytes(caddr_t addrp) { uint addr = (uint) addrp; return!(addr & 0xff && addr & 0xff00 && addr & 0xff0000 && addr & 0xff000000); }. -5

void foo() { char buffer[96], *p; int i; long *long_ptr = (long *) large_string; printf("press any key to continue..."); getchar(); for (p=buffer; contains_null_bytes(p); p++); if (contains_null_bytes(p)) { printf("we can't find an acceptable address that doesn't contain n"); printf("a zero byte. Giving up. n"); exit(-1); } for (i = 0; i < 32; i++) *(long_ptr + i) = (int) p; for (i = 0; i < sizeof(shellcode)-1; i++) { large_string[i] = shellcode[i]; } strcpy(p, large_string); return; } int main(int ac, char *av[]) { foo(); return 0; } % gcc -o test test.c %./test % tail -n 1 /var/log/message Jan 8 14:57:46 hostname test: stack smashing attack in function foo. -6

3.3. SSP C SSP C SSP gcc C C glibc glibc 2.1.3 3.3.1. glibc glibc ftp://ftp.redhat.com/pub/redhat/linux/6.2/ja/os/i386/srpms/glibc-2.1.3-15.src.rpm # rpm ivh glibc-2.1.3-15.src.rpm # ls /usr/src/redhat/sources glibc-2.1.3.tar.gz # ls /usr/src/redhat/specs glibc-2.1.spec 3.3.2. glibc spec SSP glibc SPEC http://www.trl.ibm.com/projects/security/ssp/redhat62/glibc-2.1.spec.patch # mv glibc-2.1.spec.patch /usr/src/redhat/specs. -7

/usr/src/redhat/specs glibc # cd /usr/src/redhat/specs # patch p0 < glibc-2.1.spec.patch glibc SSP http://www.trl.ibm.com/projects/security/ssp/redhat62/glibc-2.1.3-propolice.patch # mv glibc-2.1.3-propolice.patch /usr/src/redhat/sources 3.3.3. glibc glibc # rpm -bb --target i686-redhat-linux /usr/src/redhat/specs/glibc-2.1.spec # ls /usr/src/redhat/rpms/i386 glibc-2.1.3-15p.i386.rpm glibc-profile-2.1.3-15p.i386.rpm glibc-devel-2.1.3-15p.i386.rpm nscd-2.1.3-15p.i386.rpm glibc # rpm -Uvh --force /usr/src/redhat/rpms/i386/ glibc-2.1.3-15p.i386.rpm. -8

3.4. SSP SSP SSP gcc Linux 2.1.3 3.4.1. ftp://ftp.redhat.com/pub/redhat/linux/6.2/ja/os/i386/srpms/kernel-2.2.14-5.0.src.rpm # rpm ivh kernel-2.2.14-5.0.src.rpm # ls /usr/src/redhat/sources README.kernel-sources ibcs-2.1-981105.tar.gz ibcs-2.1-locking.patch ibcs-2.1-rh.patch installkernel ipvs-0.9.7-2.2.13.patch kernel-2.2-buildasm.sh kernel-2.2.14-alpha-boot.config kernel-2.2.14-alpha-smp.config kernel-2.2.14-alpha.config kernel-2.2.14-i386-boot.config kernel-2.2.14-i386-smp.config kernel-2.2.14-i386.config kernel-2.2.14-i586-smp.config kernel-2.2.14-i586.config kernel-2.2.14-i686-smp.config linux-2.2.14-ide-cd-shutup.patch linux-2.2.14-ide-probe.patch linux-2.2.14-iobuffix.patch linux-2.2.14-ipvs-template.patch linux-2.2.14-joyfix.patch linux-2.2.14-lfs-headers.patch linux-2.2.14-lfs.patch linux-2.2.14-loop.patch linux-2.2.14-lucent-hang.patch linux-2.2.14-mediagx.patch linux-2.2.14-megaraid.patch linux-2.2.14-moremaestro.patch linux-2.2.14-msdos-fixup.patch linux-2.2.14-nautilus-srm.patch linux-2.2.14-network-fixes.patch linux-2.2.14-newagpdist.patch. -9

. -10 kernel-2.2.14-i686.config linux-2.2.14-nfs-fix.patch kernel-2.2.14-propolice.patch linux-2.2.14-nfsattack2.patch kernel-2.2.14-sparc-boot.config linux-2.2.14-nobfddep.patch kernel-2.2.14-sparc-smp.config linux-2.2.14-oom-hang.patch kernel-2.2.14-sparc.config linux-2.2.14-plip-fix.patch kernel-2.2.14-sparc64-boot.config linux-2.2.14-psi-update.patch kernel-2.2.14-sparc64-smp.config linux-2.2.14-rpc.patch kernel-2.2.14-sparc64.config linux-2.2.14-scsi-blacklist.patch ksymoops-0.7c.tar.gz linux-2.2.14-scsi-devs.patch linux-2.2.12-3c90x.patch linux-2.2.14-security-a1.patch linux-2.2.12-piii-xor.patch linux-2.2.14-security-a2.patch linux-2.2.12-piii.patch linux-2.2.14-security-a3.patch linux-2.2.12-bigmem-initrd.patch linux-2.2.14-security-a4.patch linux-2.2.12-bigmem-raw.patch linux-2.2.14-shmem-overwrite.patch linux-2.2.12-cpq-mdh.patch linux-2.2.14-sigio.patch linux-2.2.12-ipvsfix.patch linux-2.2.14-sigkill.patch linux-2.2.12-limits.patch linux-2.2.14-sk98-fix.patch linux-2.2.12-peerbus.patch linux-2.2.14-sound-update.patch linux-2.2.12-symversion.patch linux-2.2.14-sparc-config.patch linux-2.2.13-ioapic.patch linux-2.2.14-sparc-cpu-bug.patch linux-2.2.13-aic7xxx-5.1.22.patch linux-2.2.14-sparc-cpu-bug2.patch linux-2.2.13-aic7xxx-5.1.23.patch linux-2.2.14-sparc-cpu-bug3.patch linux-2.2.13-aic7xxx-5.1.24.patch linux-2.2.14-sparc-fixes.patch linux-2.2.13-aic7xxx-5.1.25.patch linux-2.2.14-sparc-lockd.patch linux-2.2.13-aic7xxx-5.1.26.patch linux-2.2.14-sparc-mmap.patch linux-2.2.13-aic7xxx-5.1.27.patch linux-2.2.14-sparc-nfs.patch linux-2.2.13-alphamsnd.patch linux-2.2.14-sparc-raid.patch linux-2.2.13-bigmem-dcache.patch linux-2.2.14-sparc-syscall.patch linux-2.2.13-bigmem-no-lfs.patch linux-2.2.14-sparcacenic.patch linux-2.2.13-bigmem.patch linux-2.2.14-sparcswift.patch linux-2.2.13-smart2-1.0.6.patch linux-2.2.14-sunpartshaddap.patch linux-2.2.14-82596-crash.patch linux-2.2.14-sunqe.patch linux-2.2.14-megaraid.patch linux-2.2.14-timersync.patch linux-2.2.14-acenic041.patch linux-2.2.14.tar.gz linux-2.2.14-agphjlfixes.patch linux-autoconf.h

linux-2.2.14-aic7xxx-5.1.28.patch linux-modversions.h linux-2.2.14-alpha-exception.patch linux-version.h linux-2.2.14-alpha-ramdisk.patch module-info linux-2.2.14-alphasym.patch linux-2.2.14-blkdev.patch linux-2.2.14-bonding.patch linux-2.2.14-cyclades-smp.patch linux-2.2.14-duh.patch linux-2.2.14-eepro100.patch linux-2.2.14-eepropre7.patch linux-2.2.14-elf-loader.patch linux-2.2.14-emu10k1.patch linux-2.2.14-fb-modules.patch pcmcia-cs-2.8.8-network.script pcmcia-cs-3.1.3-3com.patch pcmcia-cs-3.1.4-xircom.patch pcmcia-cs-3.1.8-config.patch pcmcia-cs-3.1.8-script.patch pcmcia-cs-3.1.8.tar.gz raid-2.2.14-b1.gz raw-2.2.13-rh61.diff rhkmvtag.c linux-2.2.14-i386-asm.patch # ls /usr/src/redhat/specs kernel-2.2.14.spec 3.4.2. spec SSP SPEC http://www.trl.ibm.com/projects/security/ssp/redhat62/kernel-2.2.14.spec.patch # mv kernel-2.2.14.spec.patch /usr/src/redhat/specs. -11

/usr/src/redhat/specs # cd /usr/src/redhat/specs # patch p0 < kernel-2.2.14.spec.patch SSP http://www.trl.ibm.com/projects/security/ssp/redhat62/kernel-2.2.14-propolice.patch # mv kernel-2.2.14-propolice.patch /usr/src/redhat/sources 3.4.3. # rpm -bb --target i686-redhat-linux /usr/src/redhat/specs/kernel-2.2.14.spec # ls /usr/src/redhat/rpms/i386 kernel-headers-2.2.14-5.0p.i386.rpm kernel-ibcs-2.2.14-5.0p.i386.rpm kernel-pcmcia-cs-2.2.14-5.0p.i386.rpm kernel-smp-2.2.14-5.0p.i386.rpm kernel-source-2.2.14-5.0p.i386.rpm kernel-2.2.14-5.0p.i386.rpm kernel-utils-2.2.14-5.0p.i386.rpm kernel-boot-2.2.14-5.0p.i386.rpm kernel-doc-2.2.14-5.0p.i386.rpm # rpm -Uvh --force /usr/src/redhat/rpms/i386/ kernel-2.2.14-5.0p.i386.rpm. -12

3.5. # rpm --rebuild buildpolicy redhat src_package_name c SSP gcc SSP mkisofs-1.8-2.src.rpm popt-1.4-1.src.rpm usernet-1.0.9-2.src.rpm xpilot-4.1.0-1.src.rpm. -13

4. Libsafe 4.1. Libsafe Libsafe C 4.2. Libsafe Libsafe Libsafe SSP 4.2.1. Libsafe Libsafe Red Hat Linux 6.2 3 Intel Libsafe 2.0-16 3 6.2. -14

4.2.2. RPM Libsafe RPM Libsafe http://www.research.avayalabs.com/project/libsafe/src/libsafe-2.0-16.i386.rpm # rpm -ivh libsafe-2.0-16.i386.rpm /lib/libsafe.so.2.0.16 /usr/doc/libsafe-2.0 /usr/doc/libsafe-2.0/copying /usr/doc/libsafe-2.0/changelog /usr/doc/libsafe-2.0/email_notification /usr/doc/libsafe-2.0/install /usr/doc/libsafe-2.0/libprelude /usr/doc/libsafe-2.0/readme /usr/doc/libsafe-2.0/doc/* /usr/doc/libsafe-2.0/exploits/* /usr/doc/libsafe-2.0/tools/* /lib Libsafe /usr/doc/libsafe-2.0/exploit /usr/doc/libsafe-2.0/tools Libsafe RPM Libsafe Libsafe. -15

Libsafe Libsafe # /usr/doc/libsafe-2.0/tools/libsafe-install.sh -r 4.2.3. Libsafe Libsafe http://www.research.avayalabs.com/project/libsafe/src/libsafe-2.0-16.tgz % tar -zxvf libsafe-2.0-16.tgz % cd libsafe-2.0-16 % make % su root # make install Libsafe [y] [n] Type y for installing libsafe system wide?[default n] Libsafe /lib man RPM exploits tools. -16

4.3. Libsafe Libsafe 4.3.1. libsafe-install.sh RPM /usr/doc/libsafe-2.0/tools tools # libsafe-install.sh -i -i -r 4.3.2. LD_PRELOAD sh % LD_PRELOAD=/lib/libsafe.so.2 % export LD_PRELOAD csh % setenv LD_PRELOAD /lib/libsafe.so.2 LD_PRELOAD Libsafe. -17

setuid LD_PRELOAD setuid Libsafe Libsafe -fomit-frame-pointer 4.4. Libsafe Libsafe 4.4.1. Libsafe Libsafe RPM /usr/doc/libsafe-2.0/exploits exploits % t1 strcpy sh Libsafe. -18

4.4.2. Libsafe Libsafe RPM /usr/doc/libsafe-2.0/exploits exploits % canary-exploit fprintf sh Libsafe. -19

. -20

5. Stack Smashing Protector Libsafe 2 DoS. -21

[1] How to build RedHat Linux with stack protection, http://www.trl.ibm.com/projects/security/ssp/buildredhat.html [2] Manpage of Libsafe, http://www.research.avayalabs.com/project/libsafe/doc/libsafe.8.html [3], LinuxWORLD, 2002 Jun.. -22