Notice: Undefined variable: contentRead in /var/www/www-root/data/www/knizh.ru/funcs.php on line 681

Notice: Undefined variable: row in /var/www/www-root/data/www/knizh.ru/funcs.php on line 719

Notice: Trying to access array offset on value of type null in /var/www/www-root/data/www/knizh.ru/funcs.php on line 719

19 �������� ������, ���������� ������������ �������� ������ �����

����. ��� ������� ��� ���������������� ����������� � ������ ���� �� ���� �����.

-����

�� �������

����� ������ �������� ������� ���������� �� ������������ ������������ ����������� � ������ �� ����������� ������������ � Microsoft Corp. �������� ��������� ����������� ��������� ������ ����� �Writing Secure Code� (���������� ����������� ����). �� ����� ��������� � ��������� ����� ������� �Basic Training� �������� ���� Security & Privacy Magazine� ��������� ����� �� ������� ��������� �Processes to Produce Secure Software� (��������� � ������������ ����������� ������������ ������������), ����������� ������������ National Cyber Security Partnership ��� ������������ ������������ ������������ (Department of Homeland Security). ������ ������������ ����������� ����� ���������� ����������� ������������ ������������ �Microsoft, ����� ��������� ������� ����� ������� ��������� � ��������� ���������� ����� �������� ���������� ��������, �������� � �������� ����� ����� ������������ ������� ����.

����� �������, ������ ���������, � ��������� ����� �������� ������� ������������ �������� � �������� Webroot Software. �� ����� �� ������� ��������� ����������� ���������� ������������ � ������������� Microsoft, ������������ ����������� Microsoft Office, ����� � ������� ���������� Trustworthy Computing � ������� ������ ������� ������� ������������ ����� � Microsoft. ����� �������� ��������� ���� �Writing Secure Code� � �Assessing Network Secu�rity� (������� ������������ ����), � ����� �������������� ������. � ������� ��� �� ����� ������ �������� ������ �� ����� ����� ���������.

���� ����� ������ ��� �������� 19 ��������� ��������� ��� ��������� ��������. ���� ���� ������� �������� ������� �������� ���������� � ��� � ������ ��������� �����. ���� �������� ����������� � ����������� ���������� �������� Secure Software (www.securesoftware.com). �� ���� �� ������� ������ ����� �� ������������ ������������ ����������� �Building Secure Software� (��������� ����������� ������������ ������������), � ����� ���� �Network Security and Cryptography with OpenSSL� (������������� � ����������������� ������ � �����. ������ �� ������ ���������� OpenSSL�) � �Secure Programming �������� (�������� ��� ��������� ���������� ��������). �� �������� �������� ������� �������� CLASP, ����������� �������� �������� ������������ � ���� ���������� ��������. ���� ������� � ������������ ��������� ����������� � ������������ �������� � ��������� ��������� ��������. ������ ���� ������� ��������� ����������������� � ����������� �������� ����� ��������� � �������� �������� ���������� � ��������� ��������� ���������������� (Cyberspace Policy Institute). ���� ������ �������� ������ �������� � ������� ������������ �������� � ������������, � � ��������� ����� �� �������� ��� ����������� ������������ ��� ����� � ��������.

� ������� ����������

���� ���������� �������� ������� ��������� �� ������������ ������������ ����������� � �������� Symantec Corporation. �� ����������� ������ �� ������������ ���������, � ������ ������� ������ �������� ������ ������ ������� ������������� � ����� ��������� ���������� ����������, ������� ��������� ����� � ������������ ���������� ������� �� ������� ��������. �� ��������� 20 ��� ���� ������� ��� ������� ������������� ������������ ���������. �� ������������� � Symantec �� ��������� ������������, ��� ���������������������� � �������� ��������������� ������ ������ ���������, ���������� ���������� ��������� � �������, � ��������� Microsoft, IBM, Tektronix, Step Technologies. Screenplay Systems, Quark � Continental Insurance. �� ������� ������� ������� ��������� � ������� �������������� ������� � ������������ ��������������� ���������, ���� ��������.

����� �. ����� ����� ��� ���������� ����������������� ������������ ������� ���������� �������� ��� ������ � ���������� ������, � ��� ����� ����� ������� � ����������� � ������� ������� ������������. �� ������� � ���������� ����� �Software Inspection: An Industry Best Practice� (���������� ��������: ��������� ����), � ����� ���� �Ada95: The Lovelace Tutorial� � �Secure Programming for Linux and UNIX HOWTO� (�������� ����������� ���������������� ��� Linux � UNIX�). ��������� � �������� ���������.

�����������

� ������ ������ ����������� ����� ������������� � ����������������� ��������� �����. ������ �� �������, ��� ��������� ����� ����� ���� ���, ��� �� ��� �����������������. �� ����� ���� ��� ���� ������������ ���������. ����������� ���������� ������ ���������� � �� ����������� ����������� ����� ��������� ��������, ��� ����� ������� �� ������ ���� � ������� ����������� ����� ��������� ����������� �����. � �� ��������� ���������� �� ��, ��� ��� ��� �������� ���������.

����� ���� ������������ ����������� ����� ��������� ������, ���� ������� ��� �������� �� ���, ��� ����� �����, ���, �� ������� ����, �� ������������� ��������� ������������. ��� ������ ������ � ������� ����������������, ��� ����� ��������� � ��������� ������������ � ����� ������ ������������. ����������� ��� ����� ���������: �� �������� ����� �������, � ����� ������ ����� ������������, ����� ������� ����� �� ������������, �� ������������ ������, ������������ ���������� ��������� � ������� ������������ ���.

���� ����� ��������� ����������� ������ ����������������� ���� ������, �� ����� ������ ���� �� �� ������ � �� ����� ��� ��������. �� ����� ���������� ���������� ������, ������������� ���������� ������ �� ������������ ������ �� ������ ��, ��������� ����� ������������� ��������, �� ��� ��� ������ ������� �� ������� ��������������� ��������� ������������. � ���� �� ���� ������������ ��������� �������� �������� � ���������� ����� ������ �� ����� ��������� �� ���������� ������� ���������� ������������ ������������ �����������.

���������� ���� ������, ����������� � ������������,�� ���������� ������ ��� ����������� ������ �������� ������ ����������. � ���� �������� ��� ����� ��������, ���, ���� ��� ���� ����� ������ ���������� � ����� ���, ����� ��������� ����� ��� ���� �����. ��� �� �������� � �������� ��������� � ������������!

���� �� ����� �������� ��������� � ����� ������ ������, ��������� � �������������, �� ������ ��������� ������� �� ������������� � ���������� ������������, ������������ �����������, � ��� ���� ������ �������� �����������. � ������������ ������������ ����������� �������� ������ �������� ����, � ��� ����� � �������� ���������� �������. �� � ������� ����������� �� ����������� � ������� ���� ���������, � ���������� ������������� ��������� ����� ���������� ������ �������, ������ ������� ��� ������ �������� �������� ����� �������� � ������������ ��������. ���� � ���, ����� �������� �������� �������� ��������, ������� �������� ���������, � �� ������� �������������� ������ ���������� ������ ������������.

� �������� ����������� ������ � ������������ ������������ ������������ � �������� ����� ����� ��������� �������� 19 ������� ������������. �������������� ������ ��� ������� ��������� ������������� ��� � ����������� � ��� �������, ������� ���� ����� �������� ������������, �� �� �� ��� ��������� � ����� ��������. � ��� ����� ������ ������. � ��� ���������� ������ �������, �� ������� ����������������������� ������ ���������� � ������ �������, � ������ ������������, ��� �� ��������� ������ ������������� ���� �������. � ����� ����� ��������, ��� ������� �������� ������: ����������� ������� ���� ��� ������������. �������� ������� � ������� ������� � ������, ������ ����� �����������, ��� ����, � ���� ������� �� ���� ������. ������ ��������� �������� ������, ����� ����������� ������ �������� ������ �������� ���������������� ��������, �� ������� �������� ������������ ����������� ��������. �������, ��� ���������� ������������� ������ ��� ����� � ������������� �� ��� ���������� �������������� � ������, � �������� �� ��������� ������������.

���� �����,

������ ���������

������ ������������ �����������������

������������ ������������ ������������

����� �����, ���������,

21 ��� 2005 �.

�������������

��� ����� � ��������� ��������� �������������� ����� ������. �� ���������� ��� �� ��, ��� �� ����� ������ � ������������ ������������ ������������ (� �����) �� ����� ��� ���������, ����� �������� �������� � ��������� ������������ ������������ �����������. �� ����� �������� ��������������� ��������� ������������ � ������� ������������ �� �������, � ������� ��� ������������� ��������� ��������� ����, �� �� �������� � �� ����������� �����������: ������ ������� (David Raphael), ����� ����� (Mark Curphy), �������� ���� (Rudolph Arauj), ����� ���������� (Alan Krassowski), ������ ������ (David Wheeler) � ����� ������ (Bill Hilf). ��� ����� �� ���������� �� ��� ������������� ����������� ������������ McGraw�Hill. ������� ������� ���� ���: ����� �������� (Jane Brownlow), ��������� ���� (Jennifer Housh) � ����� �������� Qody McKenzie).

��������

� 2004 ���� ���� �����, ����� ��������� ������ ������������ ����������������� ������������ ������������ ������������ ���, �������, ��� ����� 95% ���� �������� ��������, ����������� � ������������, ����������� �� 19 �������� ������, ������� ������� ������ �������. �� �� ������ ���������� �������� ���� ���������������� ����������� � ��������� �������� ����������� ������������ ����������� � ����������� ��������������� ����, �� � ��� ��� ���������, �� �������� �������� �������� ������ � ����������� �������� ���������������� ������ � ����� ����������� ����.

���������� ����������� ������, ���������� ������������, ������� � ���, ��� ��������� �� ����� �����, � ���������� ����� ����������� ���������� ������� ����� ���� �������� �����������������. ����� Blaster ���� ���������������� ���� ������ ����� � ���� ������� ����.

���� ���������� �������� ���� ����������� ���� ����� ������, ��, ��������, ��� ������� �� ���: �������� ���� ����������������, ������� ��������� �� �������� ������� ��������� ����������, ��� ������ ������� ������ ���. ���������� ����� ���������� � ���, ��� ��������� ���������� ����������� �����������, �� � ������ ��������� ����� �������� �� ��� ���� ������ �������, � ������� ��������������. � ��� �� ���� ����������� � ���������, ������� � �������������� �����, � ������� ��������������� �� ��� �������� ��������.

������� ��� ���� ������, �� ��������� �������������� ��������� ������, ������� �� ��������� �� ���������� �� �����.

��������. �� �� ������� ����� �� ������ ��������. ����� �� �� ������� �� ���������� � ���� ���, �� �������� ��������� � ������ ����� �����. ������ �����, �� ������ ������ ������� ���� ������ ����������� � � ���������� �����. ������� �� ���������� � ����, ����� ����� ������ ���������� ����� ���� ������ � ������.

���������. ��� ��������� ����������� �������: ���������������� ������������� �� ������, �� ������ ������� ����� ��������� �� ������. ��� �������� ���� �� ����� ������������.

��������������������. �������� � ��� �����, ����������� ����� ����� ������� �������������� ���������, ���������� ��� ����������� ������ ������������ ������ � ��������, ���������� �� ������ ������. �� ������, ����� ��� ����� ���� ������� ���� �������������, ������� �������������� ������� ��������� � ����������� ��������� ������������ ������.

�����������. ��������� ����������� �������: �� �������� ������� ������ � ����������, ������� ���������� �� ������ ������.

��������� �����

� ������ ����� ����������� ���� ��������� �����. �������� ��� ����� �� �����������, �� ����� ������� �� ���������� � ������ �����. ����� ������� �� �������:

�� ��� ������� ����� � ������� ��������, � ������� �����������, ������ ������ ������ ��������� ������;

���� ���������� ������������ � ����������� ���� ��������; �������������� ������, ������� ������� �� �����;

������������� ����� ����� � �������� ������, ������������ ������� �����;

�������� ���������� ���� � ���������� ������� ������ � ����������, ���������� �� ������ ������ � ���������� �� ������ ����������;

���� ������ ������ � �� ��� ����� ������ ����� �������� �������� ��� ������ � ��������� �������� ������;

���������� ������ �� ����� ������� ���� ��� ��� �������: ��� ����� ����� � ����� ����. �� ��������, ��� ������������ � ���� �������, ������� ��������� ������ ���� ������ ������� � �� ����;

������������� � ����������� ����������� � �������� ������������, ������� �������� ���������� �������� ���������������� �����;

�������� �� �������� ����� � �������� ������� ������� �����, ������ �� ���� ������ �������� ����������� � ������ (Common Vulnerabilities and Exposures � CVE) (www.cve.mitre.org). ������ BugTraq (www.securityfocus.com) ��� ���� ������ ����������� � ���������� � ��������� ��������� �������� (Open Source Vulnerability Database) (www.osvdb.org). � ������ ������ �� �������� ���� �����������. ����������: ���� �� �������� ��� ���� ������, �������������� ������ �� ������ � 15 ������� 2005 ���� �� ������� CAN � ���� ������ CVE � �������� ������������� �� ������ CVE. ���� ��� ��������, �� ��� ������ �� ����� ������ �CAN�� ������� �������� ������� �� ��������������� ����� CVE. ��������, ���� �� �� ������� ����� ������ CAN�2004�0029 (������ Lotus Notes ��� Linux), ���������� �������� CVE�2004�0029;

����������� ����� � ��� ��������� ������, ����� ���������� �� �����. � � ���� ������ �� ������������� �������� ��� ������ ������;

��������������� �������� ����� � ������ ����, ������� ����� �����������. ��� �� ���������� ������, �� ������ ���������� ��������������� ������������� ��������, ���� �� �� ������� ���������;

������� �������� � ��� ��������� ������, ������� �� ���� ������ �� ������ ��������� ����������: ����� ����, ������ � �����;

������� � ��� ������������ ����� �����, ��������������, ��� �� ������ � ��� ����� ����������. ����� ���������� ������ �������������, ��������������� � ��������� �������� ��� ��������� ������ ��� ������� ������������� ����. �� ������� ������������� �������� ����� �������! ���������� ���� ������ ������� ������� � ���������� �.

���� ������������� ��� �����

��� ����� ���������� ���� ������������� ������������ �����������. � ��� ������� �������� ���������������� ������, ���������� � ��������� ������������, � ����� ������� �� ���������� �� ����, ��� ��������� ����� �������� ���������. �� ������� ����� �������� �������� ��� ����������� �� ����, �� ����� ����� ������, ���� �� �, �++, Java, �#, ASP, ASP.NET, Visual Basic, PHP, Perl ��� JSP. ��� ��������� � ������������ �������� Windows, Linux, Apple Mac OS X, OpenBSD � Solaris, � ����� � ����� ������������� ����������: �������� ��������, ������� �������� ��� ������������� Web. ������ ������, ������������ �� ������� �� �� �����, �� �� ������������ �������, �� �� ���������. ���� ��� ��� �����������, �� ������������ ���������� ����� ������.

����� ����� ������� ���������

��� ��������� ������, ������� �� ��������. �������� �� �������, ���� ������� �� ������, ��� ��� ��������� �������� � �������.

�� ��� �� ���� �����, ������� ���������� ���� ��������� ����� � ��������� �����, ������� �����, ����� � ������ ������� �� ������ � ���, ��� ���������� ������ ��� ������ ����� ����������������, ����� �� � ����� ����� ���������� (Web � �. �.).

��� �������, � ������� ���� ������������ ��� ��������� �������������� � ��������� ����� ������.

���� ������������� ������������ � ������� 6, 12 � 13.

���� �� �������������� �������� C/C++, �� ������� �������� � ������ 1, 2 � �.

���� �� �������������� ��� Web � �������������� ����� ����������, ��� JSP, ASP, ASP.NET, PHP, CGI ��� Perl, �� ������������� � ������� 7 � 9.

���� �� �������� ���������� ��� ������ � ������ ������, �������� Oracle MySQL, DB2 ��� SQL Server, �������� � ����� 4.

���� �� �������������� ������� ������� (���������������, ����� Web � ������), �� ��������� ���� ������ 5, 8, 10, 14 � 15.

���� � ����� ���������� ������� ������� ������������ ������������ ��� ������, �������� �������� �� ����� 8, 10, 11, 17 � 18.

���� ���� ��������� �������� � �� Linux, Mac OS X ��� UNIX, ������� �������� � ����� 16.

���� � ����� ����������� ����� �������� ��������� ������������, ��������� �� �������� ����� 19.

�� ��������, ��� ��� ����� �����, ��������� � ������ ��� ��� ������� ������� ���� �������� ������������ �� ����������� ���� ��������������������� � ����� ������������, � ����� ������, ��� ��� ���������� ��� ���������������� ����� � ��������� ��� ������������� ��������. ��������, ��� �� ������� ����� ������ �������� ����������.

����� ������, ����� �������, ���� �����, ���� 2005 �.

���� 1.

������������ ������

� ��� ������� ����

��� ����� ����, ��� ������������ ������ � ��� �������� ���� �������������� ������ ����������������. ��������� ��� ������, ��� � ����� ������������� ������ � ���������� � ������ ���������� ��������� ����������, � � �������������� ����� �������� ������ ������ � ������. � � �++ ������ ������ ������ �������� �� ������������ ������.

������ ������, ������������ ���������, ����� ��������� �������� ������ � ������, �� ������������� ����������� ������, �� ���� � ��� ������ ������, ���������� � ���� �� �������. ���� �� �������� ���������� ������� � ��������� �������, �� ���������� �� � �������� ����� 2. ��� ���� ���������� ��� �� �������� �����������, ����� ���������� ��������� ������ � ������������ ������� ������ �� ��������� ���������� �������. � ���� ��������� ��� �� ���� ������������ ������������ ������, �� ���������� ����� � ���� ������.

����������� ������������ ������ ����� ����� ��� ������ � �� ����� ��������� �� ��������� ����������� ������� �������� ��� �����������, � ���� ���������� �������� �� ����� ������������ � ������� ������� ������� (root, Administrator ��� System), �� � ��� ���� ������������ �������� � ������� ��������������. ���� ��������������� ���������� � ��� ������� ������, �� ������ ����� �������� � ��������������� �����. ������ ���������� ������� ����������� ������������� �������������� ������ � ������� finger, �� ��� � ��������� � �finger������ ������� �. ������� (��� ������ ������ �������). �������� ��, ��� ����� ���� ��� � 1988 ���� �������� ��� ��������� �� ������, �� ��� ������ ��������� �������� ������������ ������, �� � ������ ������� ���������� ��������� � ������ ���� ������� � ����� ������ ����������.

���� �����, ����� ������, ��� ����� ������ ����������� ���� ��������� � ����������� �������������. ������ �� ����� ���� ��� �������� ������, ������� �� ������ ����������, � ������, ��� ���������� ����� �������������� �� � ��� �++, ����� ��������� ���� ��� �� �������� ����� ��������. ����� ���� �����, ������� ���� ������ �������������, ��� ������ ���������� ���, ��� ������� ������� ��������� ���������, � ������� ���� ������������ �� ���� ������� (off�by�one overflow). ���� ����� ������, ����� ������������ ������������ ��������� ������, �� ��� ���� ��� �����, ��������� ����� ��������� ����������� ���������, ����� ��� ������ �� �������� �������������.

������������ ����� �����

���� ����� ������������ ������ ����������� � ����������, ���������� �� �, �������� �� ���� ������� � �++. ������ ������ ����������� ����� � ������������ ���������, ��������� ��� ��� ������ ������� ����������������� ����������. �� ��������, �++ ��� �� �����������, ��� � �, ��������� ������� �� ���� �����. �� ������������� ����������� ���������� �������� STL ��������� ������ ���� ������������ ������ �� �������� � ��������, � ����� ������� ���������� �++ �������� ������������ �������� ��������� ������. ���� ���� ���� ��������� ���������� �� ������ �, �� ��� �� ����������� ������������ ���������� �++, ����� �������� ��� ����� ������ ������.

� ������ ����� �������� ������, ����������� �����, ����������� ��� �� ����� ������� ������� � ������, ���� �� ��� � ���������� �������������� �������������������. � ����� �����, ��� Java, �# � Visual Basic, ��� �������� ��������� ���, ������� � ��������� ������ �� ������� � ������ �� ������ ������ � ������ (� ����������� ������). ����� ����� �������, ��� � ����� ������ ������������ ������ ����������, �� ���������� ���� �� �������, ��� ��� ���� ������� ����� ��������. ���� � ����������� ����� ��� ����� ����������� �� � ��� �++, � ������ � ���������� ����� ����� �������� ������������ ������. ��� ���� ������������� �������� �������� ����������� � ���, ��� �� ������� ������ ��� ��� ��������������� ����� ������ ���������� � ������������ �������, � �� ������ ����� ��������� �������� �� � ��� �++. ���� �# ��������� ������ ����������� ��������� .NET, ������� ������������ ������� � ������� ��������� ����� unsafe. ��, ��� �������� �������������� � ������������ �������� � ������������, ����������� �� C/C++, �� ������������ ��������� ����������� ��������� ������� ��� C/C++ ������. ���� ���� �� �������������� ��������������� �� ������ �������� ������, �� ������������� �� ����������� �������� ������, ������������ ������� �����������, ���� �� ������ ����� ������� ������������ � ��� ������.

�� �� ������ ��������� ������������� ������ ������, ������������ ������� ���� ������������ ������, ������ ����, ��� � �� ����� ��������� ����������� ������ ������.

��� ���������� ������������

������������ ���������� ������������ ������ � ��� ��������� �����. � ����������������� ��������� ���� ������������ ��� �������� ����������� ���������� (��������, ����������). ����� ��������� ����� ����� �������� �� ������� �, ��������� ����� ��������� � ����������� ��������� �86 ��������, ���� �� ����� ������ � ������� ���������� �������� ��� ���������� ��������. ���, � ����� �� ���������� ������ ��� ��������� ����������. ������ �� ����������� �������� ���������� ��������������� � ����������������� ������������ ������, ���������� �� ����. ����� ����� ������� � ������������ ������������ ������, �� ���� ����� ����� � ���� ������������ ������ � �����. ���� �������� � ���, ��� ���� ���������� �������� ������ �� �������� �������, ��������������� � �����, �� ��������� �������� ����������� �������� ����������� ����������. � ��� ��� �������� ������, ���� ���� ���������� � �������������� ����������� ������ �� ������ ����������.

��������� ������: ������ �� ���������� ������������ ����� �������� ������� ��������? �������� ��������, �� ������� ���� ��������, ����� ���� ��, ������� �� 64���������� ��������� Intel Itanium, ��� ����� �������� �������� � ��������. �� ����� �������� �� ��������� � ������� �������� �������������, ���� �� ������ ������ ��� ���� ������ ��������������, ��� ��������� �64 � ����� ������ ������ ����������.

����� ����� ��������, ������ �� �� ��������� �� �����, �������������� ������� �������� �������� � ����������� ������ ������ � �������. ���� � ���, ��� ��� ������ ���������� ������������������ ��������������� ������ ������������ ������. �������� ����������: ������ ������������ ����� ��������, � �������� ��������������� ������������, �� ����� �������� ������, � �������� ����� ���� � �� �������������� �����. ������ �������� ������ ���� ������������� ����������� �++ � ������������ ����������� ��� ���� ������������ ��� ������ �� �������� � ������������� ��������. ��������, � Web�������� Internet Information Server (IIS) 6.0 ��������� ���� ������� ������ ���������� � �������������� ��������� �������; ���� �������� ����������� ���� ������, ��� ���� �������� ���� �������, ���� � ��� ���� �������� ���� �� ���� ������������ ������. ���� ��� ������� ������� ��� ���, � �� ��� ���� ����� ������ ����� ������� �� ���� ������������ �� ������ ��������� � ��������� � ��� �������������. ��������� ����������� ����������� ����� �������� � ���������� ��������, �� �++ ������ ����� ��������� ����� ����������� ���.

�� �������� ������, ���������� ������.

tinclude <stdio.h>

void DontDoIhis (char* input)

{

char buf[16];

strcpy(buf, input);

printf("%s\n� ,�buf);

}

int main(int argc, char* argv[])

{

// �� �� ��������� ���������

// � ���� ��� ������� �� ���������, � ������� ������������

// ������� strcpy?

DontDoThis(argv[l]);

return 0;

}

������������� ��� ��������� � ���������, ��� ����������. ��� ������������ ����� ������ ����������, ������� ���������� ������� � �������� �������� �����. ������� ���������� ��������� �� �������� ����� �������� �������, ��� DontDoThis, �������� ���� ��� ���������� ������ ���� ���, ������� ����������� ����� ���� ���������. ��� ��� �������� ���� ��������������� ����� ������� strcpy:

0x0012FEC0� �8� fe 12 00 .. <� ����� ��������� buf

0x0012FEC4� �4 18 32 00 .2. <� ����� ��������� input

0x0012FEC8� d0 fe 12 00 .. <� ������ ������ buf

0x0012FECC� 04 80 40 00� .<<Unicode: 80>>@.

0x0012FED0� el 02 3f 4f���� .?0

0x0012FED4 �66 00 00 00��� f� <� ����� buf

0x0012FED8� e4 fe 12 00���� .. <� ���������� �������� EBP

0x0012FEDC� 3f 10 40 00� ?.@. <� ����� ��������

0x0012FEE0� c4 18 32 00��� .2. <� ����� ��������� DontDoThis

0x0012FEE4� cO ff 12 00���� ..

0x0012FEE8� 10 13 40 00� ..@. <� �����, ���� �������� main()

��������, ��� ���� ������ ������ ���� (�� ������� ������� � �������). ���� ������ ���������� �� ���������� Intel �� ������ ��������� �little�endian�. ��� ��������, ��� ������� ���� �������� � ������ ������, ��� ��� ����� �������� �3f104000� �� ����� ���� �������� 0x0040103f.

� ������ ���������, ��� ����������, ����� ����� buf �������������. ����� ����� �� buf ��������� ����������� �������� �������� EBP (Extended Base Pointer � ����������� ��������� �� ����). ��� �������� ��������� ����� �����; ��� ������ �� ���� ������� ��� �������� ����� �������. ���� ��������� ������ �������� �������� ��� �������� ������, ������������ � ������ 0x0012fe00 (��������� ���� ���������� ������ �������), �� ��������� �������� �� ����� ������ � �������� ���������� ���� ����������� ���.

���� �� �������������� ������������� �� ���� ����, �� ��������� ����� ������ ����� ��������. ���� ����� ��������� ������ �������� �������� ��� ���� ��������� � �������� � �����, ����� �������� ��������, ����������� ����� ������ ������������� ����, �� �� ����� ����� ������������ ������ ������������ ������, ������������ ��������� ���������. �������, ��� ������������ ��� (��� ������ �������� shell������, ������ ��� ���� ����� ������ ��������� � �������� ������ � �������� (shell)) ������������� ��������� ������ � ���������������� ������. ��� �������� ������, ��, ������ ������, ��� ����� �������� � ����� ����� ����� ���������. �� ������������, �������, ��� ������������ ��������� ������ ����� ��������� �������.

����� ���� ��� ����� �������� ���������, � ������������ ���������� ����������� ��������� ��������� �������. ���� ������� ����� ��������� ������� ������� ������������ ���������� �� ���������, �� ����������� ����� ��������������� �����������. ��� ������� ����� � ����, �������� ������������� ����� ������� ������ � ������������� �����, ��� ��������� Stackguard �������� ������� (Crispin Cowan), ��������� ProPolice, ���������������� IBM, � ���� /GS � ����������� Microsoft.

��� ������, �� ������������ ���������� ��� ������� ��� ����������� �������� �������� ��� ����� �����������, � ��� ���� ���� ����� ������� �������. ���� � ����� �������� ������ ������ �++ � ������������ ���������, �� ������ �������� ������� ���������� �� ����������� �������; ����� ������ ���� ����� ���������������. ���� ����� �� ���������� ������� �������� ��������� �� �������, ��� ����� ������ � ������� �������� (��������, � X Window System ��� Microsoft Windows), �� ���������� ����� ��������� ����� ����������������������� ������ �������� �������� ��� �����������.

���� ��������� ���������� �������� ����������� ���������� ����������, ������� ������, ��� �������� ��������� ��� ������ ��. ���������� �������������� ����� ������������� � ��������, ���������� ������������ � ������. � ����� ������ �� ���������� �������, ����� ��� ��������� ����� ������� ��� ���� ��������� ����� �� ��, ����� ���������, ��� ��������� ���� ��������� ������ ��, ��� ����� ���. ���� ��������� ����� �������� ������, ���������� ������, ����� ��������� �� �� ����� ��������� �������. ����� ������ ����� ������� �� ��, ����� ���� � ����� ��������� ���������� � ������� ������. � ��� ������� � ����� �������, ��� www.metasploit.com, ����������� � ��������� ������� ������� shell����, ������� ����� ������ ��� ������ � ��� ���� �������� ������ ������� �� ������������� ������.

���� �� ����������� ��������, ����� �� ������� �������� ��� ������� ���������, ��, ������ �����, ���������� ����� ����� ��������. � ����������� ������ ����� ���� ��������, ��� ��������� ���� �������, ���� �� ������������ ��������� (��� ��������� �� ����� ������� ������������ �������), ����� �������� ��� ��� ��������. ����� ����� ����� � ������������ ����������, ��� ��� ���������� ������������ �������� ����������.

������, ����� ����, � ���, ��� ����� ���������� � ��������� ������! ������� ��� ���������, ��� ����������� � ����� ��������� �������� ���� ������ ��������� � � ����������� ������, ��������� � �������������. ����� ����� ����� ��� ���� ������� ������� ������������� ��������� ����� ������. � ��������� ������� ������� ������ �������, � �� ��������� 20 ������������� (�������� ������� ������ ������ ������������), �����, ����� �� ���������� ������, ��������� ������������ ������� �������� �������������� ����, ��� ��� ��� ����� �������� ��������. ����� �������� �� ������������ ��������, ��� �������� ������������� ����, ��� ����������� ������������ ��� ������ ������������ � ��� ������ ���� �� ������������. ������� �� ������� ���� �������!

���������� �������� ���� ��������������� ����� ��������� ���������. �� ����������� ������� ���������� ������ �� ����� ������������ ������������� � ���, ���������� �� ������ ��������� ��������� ��������� ��� ������, ����� ��������� ����, ��������� � ����������� �, ��� ���������, ��������������� ��������.

�������������� �����������, ����� ������������ ������ � ���� �� ��� ������, ��� ������ � �����. ��� ���������� �����������. ����������� ���������� ���� �������� ��� �� ��������������� �������, ��� � ����,�� ���������������� � ����������� ������ �������� ������. ����� ����� ��������� �������� ���� ��������� ������ ��������� ����������� ����� �� ���������� �� �� ������. ������ ����� �� ���� �������� ������. ������� Matthew �shok� Conover � Oded Horovitz ����������� ����� ����� ����������� �� ��� ���� ��� ��������� �Re�liable Windows Heap Exploits� (��������� �������� ������������ ���� � Win�dows�), ������� ����� ����� �� �������� http://cansecwest.com/csw04/csw04�Oded+Connover.ppt. ���� ���� ��� �������� ���� �� ��������� ���������, � �������� �������� ������ ����� ���������� ��������� �� ������� ��� �� ����������, � ������� ������������ ����������. �������� ������������ ������������ ���� ��������� ������������ � ������� �����, ������ �� ��� ���� �� ����� ���������������� ��������� ������.

����������� C/C++

� ���������� �� ������ C/C++ ���� ����� �������� ����������� �����. ��� ������, ���������� finger������ �������:

char buf[20] ;

gets (buf) ;

�� ���������� �������� ������� ������� gets ��� ������ �� ������������ ����� ��� ����� ����������� �����. ����������� ������ ����� fgets. ��������, ������ �� ������������ ������ ������� ������������ � ��� ��������������� �������� strcpy (��. ���������� ������). � ��� ��� ��� ����� ����������� �� ������������:

char buf[20];

char prefix[] = "http://";

strcpy(buf, prefix);

strncat(buf, path, sizeof(buf));

��� ����� �� ���? �������� � ��������� ���������� ������� strncat. �� ����� �������, ������� �������� �������� � ������, � �� ����� ����� ������. ��� ��� ���� ���������������� ���, ���������� � ������������:

char buf[MAX_PATH];

sprintf(buf, "%s � %d\n", path, errno);

���� �� ������� ���������� ��������� �������, ������� sprintf ����� ���������� ������������ ���������. ��� Microsoft Windows ���� �������� ��������� � ����������� ������, ��������� � ����������� sprintf ��� ����������� ����������������. ����������� ��. ���������� MS04�011 (������ ������ ��������� � ������� ������� ��������).

� ��� ��� ������:

char buf [ 32] ;

strncpy(buf, data, strlen(data));

��� �������? � ��������� ��������� �������� ����� �������� ������, � �� ������ �������� ������!

��� ���� ������ ����������� � ��������� � �� ������ ������� ����� ������ ��������. ���� �� ��������� � ���������� ASCII, �� ����� ���� ��� �������, �� � ��������� Unicode ���� ������ �������������� ����� �������. ��� ������:

_snwprintf(wbuf, sizeof(wbuf), �%s\n�, input);

��������� ������������ ��������� ����������:

bool CopyStructs(InputFile* pInFile, unsigned long count)

{

unsigned long i;

m_pStructs = new Structs[count];

for(i = 0; i < count; i++)

{

if(!ReadFromFile(pInFile, &(m_pStructs[i])))

break;

}

}

��� ����� ����� ���������� ������? �������� new[] � ����� �++ ������ �������� �� ��, ��� ����� ���:

ptr = malloc(sizeof(type) * count);

���� �������� count ����� ��������� �� ������������, �� �������� ������ ��� ���, ����� ��� ��������� �������� ������������. ����� ����� ������� ����� ������� �������� �������, ��� ����������, � ��������� ������ ��� �����������. � ����������� �++, ������� ����� ������������ � ������� Microsoft Visual Studio 2005, ����������� ���������� �������� ��� ����������� ������ ���� ������. ����������� �������� ����� ���������� �� ������ ����������� ������� calloc, ������� ��������� �������� ����� �� ��������. � ���� � ������� ��������� ������ ������, ��������� � ������������� ����� �����: ������ �� ���� ��� ������������, � ��������� �� ������������ ������. �� ��������� �� ���� �� ��������� � ����� 3.

��� ��� ��� ����� ��������� ������������ ������:

#define MAX_BUF 256

void BadCode(char* input)

{

short len;

char buf[MAX_BUF];

len = strlen(input);

// �������, �� ����� ������������ strcpy ���������

if(len < MAX_BUF)

strcpy(buf, input);

}

�� ������ ������, ��� ������, �� ��� ��? �� �� ����� ���� ����� ������ �� ������. ������ �� ������� �� ���������� ������������ ����� ����� � ����� 3, � ���� �������, ��� �������� ������ ����� ��� signed int. ���� ����� ������� ������ (������ input) ��������� 32�, �� ���������� len ������ ������������, ��� ����� ��������� �� ���� int � ����������� ����� � �������� ������ MAX_BUF, ��� �������� � ������������. ��� ���� ������ ���������, ���� ����� ������ ����������� 64�. � ���� ������ �� ����� ������ ��������: len ����������� ��������� ������������� ������. �������� ������ ����������� � ��������� ���������� ��� �������� �������� ��� ������� ��� size_t. ��� ���� ������� �������� ����������� � ���, ��� ������� ������ ����� �� ������������� �����. ��� ��� ����� ��������� ������������ ���:

const size_t MAX_BUF = 256;

void LessBadCode(char* input)

{

size_t len;

char buf[MAX_BUF];

len = strlen(input);

// �������, �� ����� ������������ strcpy ���������

if(len < MAX_BUF)

strcpy(buf, input);

}

����������� �����

� ���� ������ ����� ������� ������������ ����� �����. ���� �� ��������� ��������� ������ ������������ ������ ����� ������������� ������� ������ �� �������� ��������� strn� ��� ���������� ������ ����������� �� ���� ������, �� ����� ����� �� ��������� �������������� ������.

������ ��� ������ � ��������� ������� ����� ���� ����� �� ������, ��� ������������ ������, ���� ������������� � ������� ������ �� ��������. ������ ����� ������ ������ �� ������� �� � ������ ��������.

��������� ������������ ������ �������� ������ � ������ ��� �������� ������ �� �������. ���� ��������� ������ ����� ��� �������� ��������� ������ ������� � �� �� ���������, ��� �� ����������� ����������� ���������, �� �������� ������ �� ������������� ������ � ������. ��� ���� �� ������ ���������� ����� ���������� ���������, �� ����� ���� ������� ��������� ������� ������, � ��� ������ �� ��� ��� ���� ��������������� ������������ ������.

��� ������ ������

��� �� ��� ����� �������� �������� � ������ �������:

����� ������� ������, ���� �� �� ����, �� ����� ��� �� ��������� ������;

�������� ������ �� �������������� ���������� ������� ������ �� ���������� ���������;

������������� ������������ ������� ������ �� ��������;

������������� �������������� �������� ��� ���������� ������� ������ ��� ����� ��������� ������ � ���.

��������� ������ �� ����� ������� ����

���������� ����������� ����� ����� �� ����� ������� ���� ����� ���� ��� ������ �����, ��� � ����� ������. ����� ����� ���������������� ��� ������ ������������ ������� ������ �� ��������. ���� ����� � ����, ��� �� ������ ����� ����� ����, ��� ������� ���������� ���������, �� ��� ���� ����������, ��� ������ ����� ���������� ���� � ���������� �������. ����������� ���������, ����������� ��� ����������� ���� � ����� �������� ������������� �� ���������� �������, ������ ����� ��� (�� ����� ������� �� ����� ����� ��������, �������� ��� ����������� ������), ���� ��� �������� ��������� ����������� ��������� ����� ����������.

�������� ����� �����, ��������, ������� ���������� ������ �����������. ���� �� ��������� ���������� ������� strcpy, strcat, sprintf � �� �������� �� ������������ ������, �� ���������� ������ ��� ����� � ����, ��� ��� �����������. �� ������ � ����, ��� ��������� ���������� ��������� ��� �������� �������������� ���������� ������� ���������� ��� ����� �.

������� �������� ������������ ����. ����� ������ ��� ������, ����� ������� � ����������� ������������ �����, � ��� ������ ���� � ����� 3. ������ ����� � ��������� ���� ����, ��� ������������ ��������� ������, � ����� ���������, � ������� ����� �������������� �������� ���������� ������ ������.

��������� ������ ������� � ���, ����� ����������, ��� ������������ ��� ����������� �� ������������ ������, ������� � ����� ����� � ���������� � ����� �� ���� ��������. ����� ����� �����, ��� ������ ����� �������������� ���������.

������������

����� �� �������� ����������� ������� �������� ����������������� ������������ (fuzz testing), ����� �� ���� �������� ������������� ������. ���������� ��������� ����� ������� ����� � ������������ �� ���������� ����������. �������� �������� �� ���� �����������: ������ ��������� ������������ �������� ������� ������ �������� ����. ��������, � ����� ����� ��������� �����������, ��� ����� ������� ������ ������ ���� ������ 260 ������, � � ������ ����� ���������� ����� ������ 256. ���� �� �������� �� ���� ����� ������� ������, �� ���, �������, ����� ����������, �� ����� ������� ����� � ���������������� ��������� ����� ������ ��������. ����� �������� ����� �����, ��������� ��� ������������ ������� ������ ��� ������� ������ ��������� �������.

����� ����� �������� �� �����, ��� ������������ ����� ������ ����� ��������. �������� ����� ���, ����� ��� �� ��������������� ������, � ������ �������� ��������� �� ����������� ������������ ������: ��������� ������������ ������, ����� ����� +1 = 0.

��� ������������������ ������������ ����� ������� ����������� �������� ������ ���������. � ���������� ������ ����� ��������� �����������, ������� �������� ����� ���������� ��������� � ����� �������� ���������� �������, ��� ������� �������� �������. � ����� �������, ����������� ����������� �������� � ���������� ������ ���������� ��� ��� ����������� ����� �����. � ����������� �� ������������� �������������� ������ � ������������ ������� �� ������ ����� �������� ����� ������� �������� ����������� ����.

���� �� ����������� ����������� ��� �������� ������� ������, �� ����� ����� ������� �� ����� �����:

assert(len < MAX_PATH);

� ���������

if(len >= MAX_PATH)

{

assert(false);

return false;

}

������ ������� ����������� ��������� � ������� ��������� ������� ����������� ������ ��� ������ � �������, �������� AppVerifier ��� Windows (��. ������ � ������� ������� ��������). ��� �������� ������� ������, ��������� � ��������� ��� �������������� ������������� ������.

������� �� �������� �����

���� ��������� ��������� ������� ������������ ������, ������ �� ���� ������ �������� ����������� � ������ (CVE) �� ����� http://cve.mitre.org. ���������, ��� ����� �� �������� ��� ���� ������, � ���� CVE �� ������� �buffer overrim� ���������� 1734 ������. ����� �� ���������� CERT, � ������� ��������������� ����� ������ ���������������� � ��������� ����������, �� ���� �� ������� ��� 107 ����������.

��������: 12 ��

������ ��������� ������ �����:

��������� ������������� ������������������ ����������� � ������������ ����� XX ����, ������� �������...
������� ���������� ������������ ��� ������������ � 2007 ����. ����� ����, ��� ���������� ��������� �...
����� ��������� ����������� �������� ������� �������, ����������� �����, �������, ���������, �������...
� ����� ������ �������������� � ��������� �������� ����� ��������� �������� ����� ���� � ���������� ...
����������� �������� ������ � ������������, ����� ������������� �������������� ������������, �������...
������ ��������, ������ ����������� ����������� ���������� ��������� � ����, ����� �������, ��������...