FreeBSD

FreeBSD 5.5 RELEASE  [email protected]

1. บทนำ
FreeBSD 5.5-RELEASE เป็น release สุดท้ายของ 5.5-STABLE จากนี้ทีมพัฒนา FreeBSD จะไปมุ่งเน้นการพัฒนา 6-STABLE และ CURRENT ซึ่งใน 5.5-STABLE จะไม่มีการเพิ่ม feature ใหม่เข้าไป แต่จะเป็นการแก้ปัญหาเล็ก ๆ น้อย ๆ รวมอยู่ด้วย ทีมพัฒนาระบบรักษาความปลอดภัยจะให้การสนับสนุนไปจนถึงวันที่ 31 พฤษภาคม 2008

2. What's New

ส่วนใหญ่จะเป็นการแก้ไขปัญหาด้านความปลอดภัยของ 5.4-RELEASE, เพิ่ม drivers ให้สนับสนุน hardware ใหม่ ๆ, เพิ่มคำสั่งหรือ option, แก้ bug, ปรับปรุงซอฟต์แวร์

2.1 Security Advisories
ระบบที่ใช้ Hyper-Threading Technology (HTT) จะมี machdep.hyperthreading_allowed เพิ่มเข้าไปใน sysctl โดยใน FreeBSD CURRENT จะมีค่าเป็น 1 (ใช้ HTT) และมีค่าเป็น 0 (ไม่ใช้ HTT) สำหรับ 4-STABLE และ 5-STABLE

แก้ปัญหาของ tcpdump ที่เกิดขึ้นเมื่อได้รับ packet บางอย่าง

แก้ 2 ปัญหาของ gzip ที่ทำให้ผู้ใช้เปลี่ยน permission ของไฟล์ต้นฉบับได้ และปัญหาเขียนทับไฟล์ต้นฉบับตอนขยายไฟล์

แก้ปัญหาของ ipfw ที่ตรวจสอบ packet บางอย่างผิดพลาด ซึ่งจะเกิดในระบบ SMP หรือ UP ที่มีการใช้ PREEMPTION ใน kernel

แก้ 2 ปัญหาของ bzip2 ซึ่งทำให้เกิด Denial of Service และปัญหาการแก้ไข permission ของไฟล์โดยไม่ได้รับอนุญาต

แก้ 2 ปัญหาของ TCP Stack ที่ทำให้ผู้บุกรุกเชื่อมต่อ TCP ค้างเอาไว้ แล้วสร้างสถานการณ์ Denial of Service

แก้ 2 buffer overflow ของ zlib

แก้ปัญหาความปลอดภัยของ jail ที่สามารถเข้าถึง devfs ซึ่งซ่อนอยู่ได้

แก้ข้อผิดพลาดของ ipsec ซึ่งส่งผลกับการเข้าใช้แบบ AES-XCBC-MAC

แก้ปัญหา temporary file ของ cvsbug ซึ่งทำให้ผู้บุกรุกสามารถแก้ไขไฟล์ขณะเรียก cvsbug ขึ้นมาทำงาน

แก้ข้อผิดพลาดของ OpenSSL ที่ทำให้ผู้บุกรุกสามารถใช้ SSL ล้าสมัยมาโจมตี

แก้ปัญหา temporary file ของ texindex ซึ่งทำให้ผู้บุกรุกจากภายในสามารถเขียนไฟล์ของผู้ใช้ที่เรียก texindex ขึ้นมาทำงาน

แก้ปัญหา temporary file ของ ee ซึ่งทำให้ผู้บุกรุกจากภายในสามารถเขียนไฟล์ของผู้ใช้ที่เรียก ee ขึ้นมาทำงาน

แก้ไข cpio

แก้ปัญหา Memory ของ Kernel

แก้ไขวิธีจัดการ IP Fragment ของ pf ซึ่งสามารถก่อให้เกิดความเสียหายได้

แก้ไขความผิดพลาดของ Selective Acknowledgement (SACK) ใน TCP/IP Stack ซึ่งสามารถทำให้เกิด loop ไม่รู้จบหากได้รับ packet ที่ไม่ถูกต้อง

แก้ไขวิธีจัดการ account ของ OpenSSH ซึ่งส่งผลให้ master สามารถให้สิทธิหรือหยุดการทำงานผู้ใช้ได้

แก้ไข NFS server ซึ่งสามารถทำให้ server ล่มได้ หากได้รับข้อมูลที่มีความยาวเป็นศูนย์

แก้ไขโปรแกรม fast_ipsec เนื่องจากใช้ Security Association ที่ไม่ทันสมัย

แก้ไข opiepasswd ที่ให้สิทธิผู้ใช้แก้ไข OPIE ของ root

แก้ปัญหา asynchronous signal ของ sendmail ซึ่งทำให้ผู้บุกรุกจากข้างนอกสามารถเรียกโปรแกรมของผู้ใช้ที่ส่งเมล์ขึ้นมาท ำงานได้ (ซึ่งมักจะเป็น root)

แก้ปัญหา Kernel ที่ทำงานกับ AMD รุ่น 7, 8

2.2 Kernel Changes

2.2.1 Boot Loader Changes

คำสั่ง autoboot จะไม่ได้รับผลกระทบจากผู้ใช้เมื่อตั้งค่า autoboot_delay = -1

2.2.2 Hardware Support

สนับสนุน Cronyx Tau32-PCI และ CPU แบบ Dual Core โดยใช้ Kenel แบบ SMP

2.2.2.1 Multimedia Support

uaudio สามารถทำงานได้ตามปกติแล้ว

2.2.2.2 Network Interface Support

bge จะรองรับชิป BCM5714 และ 5789

ixgb จะเป็น MPSAFE

ndis สามารถทำเป็น module หรือ compile รวมเข้าไปใน kernel ก้ได้

xl สนับสนุน polling

2.2.3 Network Protocols

นำ if_bridge ของ NetBSD มาใช้ สนับสนุนการทำงาน IEEE 802.1D Spanning Tree Protocol, การทำงานแบบ bridge, การ filter packet, และการกระจายข้อมูล

ifconfig สนับสนุน if_bridge

2.2.4 Disk and Storage

ปรับปรุง twa จากเวปไซต์ 3ware

2.2.5 File Systems

2.2.6 Contributed Software

2.3 Userland Changes

เพิ่ม bsdiff และ bspatch

cmp สามารถใช้ -h เพื่อเปรียบเทียบ symbolic link ได้

gethostbyname, gethostbyname2, gethostbyaddr ทำงานแบบ thread-safe

getnetent, getnetbyname, getnetbyaddr ทำงานแบบ thread-safe

getprotoent, getprotobyname, getprotobynumber ทำงานแบบ thread-safe

getservent, getservbyname, getservbyport ทำงานแบบ thread-safe

kdump สามารถใช้ -s เพื่อไม่ให้แสดงข้อมูลได้

kldstat สามารถใช้ -m เพื่อแสดงสถานะของ module ที่ระบุได้

เพิ่ม stack size ของ libpthread, libthr และ libc_r โดยในระบบ 32 บิต thread หลักจะมี stack 2 MB, thread อื่น ๆ จะมี stack 1 MB ส่วนในระบบ 64 บิตจะมีขนาด 4 MB และ 2 MB ตามลำดับ

netstat สามารถใช้ -h เพื่อแสดงสถิติ

ping สามารถใช้แบบ sweeping ping ในการทดสอบระบบได้

เพิ่ม powerd สำหรับจัดการการใช้ไฟฟ้า

rfccomm_sppd เพิ่ม -c เพื่อระบุเลข channel และสามารถใช้ชื่อต่อไปนี้ได้ DUN (Dial-Up Networking), FAX (Fax), LAN (LAN Access Using PPP) และ SP (Serial Port)

rm สามารถใช้ -I เพื่อให้ยืนยันเพียงครั้งเดียวในการลบ directories หรือมีการลบไฟล์ผ่าน command line ตั้งแต่ 3 ไฟล์ขึ้นไป

sed สามารถใช้ -l เพื่อทำ output line-buffer

sh เพิ่มคำสั่ง times

เพิ่ม snapinfo เพื่อแสดงตำแหน่ง snapshort ของ UFS

2.3.1 /etc/rc.d Scripts

เพิ่ม bluetooth script ซึ่งเรียกใช้จาก devd การตั้งค่าจะใช้พารามิเตอร์จาก /etc/defaults/bluetooth.device.conf ผู้ใช้สามารถปรับค่าเพิ่มเติมได้จาก /etc/bluetooth/$device.conf (โดย $device หมายถึง ubt0, btcc0 และอื่น ๆ)

rc.d/jail สามารถใช้ jail_name_flags ได้แล้ว

2.4 Contributed Software

BIND เปลี่ยนจาก 9.3.1 เป็น 9.3.2

sendmail เปลี่ยนจาก 8.13.3 เป็น 8.13.6

ฐานข้อมูล timezone เปลี่ยนจาก tzdata2005g เป็น tzdata2006g

2.5 Ports/Packages Collection Infrastructure

pkg_add สามารถใช้ -P ซึ่งมีความหมายเหมือน -p เพื่อใช้กับ dependency packages

pkg_add และ pkg_create สามารถใช้ -K เพื่อเก็บ packages ไว้ใน directory ปัจจุบัน

pkg_create สามารถใช้ -x เพื่อทำงานกับ regular expression ง่าย ๆ, -e สำหรับ regular expression ที่ยากขึ้น, และ -G เพื่อเปรียบเทียบ

pkg_version สนับสนุน -I โดยใช้ข้อมูลจาก INDEX เพื่อบอกว่า package ล้าสมัย

pkg_version สนับสนุน -o เพื่อแสดง origin record แทนที่จะเป็นชื่อ package

เพิ่ม portsnap (sysutils/portsnap) เพื่อใช้กับ port tree ซึ่งจะปลอดภัย, ใช้ง่าย, เร็ว, โปรแกรมมีขนาดเล็ก

นำ script สำหรับ Port Collection ออก .. โปรแกรม foo.sh เปลี่ยนชื่อเป็น foo

rc.conf เพิ่ม ldconfig_local_dirs และ ldconfig_local32_dirs

ถ้าไม่ระบุ @cwd ใน pkg-plist ระบบจะใช้ directory ปัจจุบัน

2.6 Release Engineering and Integration

GNOME (x11/gnome2) เปลี่ยนจาก 2.10.2 เป็น 2.12.3

KDE (x11/kde3) เปลี่ยนจาก 3.4.2 เป็น 3.5.1

Perl (lang/perl5.8) เปลี่ยนจาก 5.8.7 เป็น 5.8.8

Xorg (x11/xorg) เปลี่ยนจาก 6.8.2 เป็น 6.9.0

2.7 Documentation

3. Upgrade from previous releases of FreeBSD

สามารถใช้ได้ 3 วิธี

- ใช้ sysinstall

- ติดตั้ง FreeBSD ใหม่

- สั่ง make world

ที่มา :: http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=6110