All streams
Search
Write a publication
Pull to refresh
20
0
Send message
Мешает отсутствие разницы давлений. Газ не «идет» просто так, потому что ему захотелось. Чтобы газ «вышел вперед» — давление в камере сгорания должно стать больше, чем в компрессоре. Чтобы давление в камере сгорания стало больше, чем в компрессоре — что-то должно помешать воздуху в ней расширятся при нагревании. А ему ничего не мешает, там сзади большая дырка в сопло с парой лопаток турбины по дороге. И все, что нарасширялось, свищет через эту дырку наружу. Свищет с огромной скоростью что позволяет раскрутить турбину.
И еще, почему нагретый воздух выходит через турбину в сопло, а не в сторону компрессора? За счет того, что там больше объем? Ведь по сути в камере сгорания горит топливо и нагревает воздух, который расширяется и выходит куда-то.


Воздух разогревается и расширяется. При этом давление у него остается тем же, что было на выходе из компрессора — это изобарический процесс. Чтобы воздух выходил в компрессор — давление в камере сгорания должно быть больше давления в компрессоре.

В сопле давление меньше, чем в камере сгорания, и расширяющийся воздух уходит в него. Турбина по дороге не слишком эту разницу давлений компенсирует — она раскручивается за счет огромного объема выходящего воздуха, а не за счет большого перепада давления.

Clipboard Ring по Ctrl+Shift+V/Ins был еще Visual Studio 2003, а первый Resharper вышел в 2004, так что еще непонятно, кто у кого эту фичу позаимствовал. В Win 10, кстати, есть системный Clipboard Ring, по Win+V.
для видны названия стримов умеет выдавать стандартный dir /r или Get-Item ... -Streams *
Судя по всему, это часть Attachment Manager (по крайней мере ZoneId), того самого, который показывает предупреждения при открытии скачанных файлов. Он отключается через Group Policy.
В винде хром точно так же пишет данные о скачивании в стрим с именем Zone.Identifier, вместе с отметкой, что файл скачан с интернета:
> Get-Item .\streams.zip -Stream *
...
Stream : Zone.Identifier
Length : 164

> Get-Content .\streams.zip -Stream Zone.Identifier
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://docs.microsoft.com/en-us/sysinternals/downloads/streams
HostUrl=https://download.sysinternals.com/files/Streams.zip


И при этом проводник еще и отслеживает файлы после распаковки:
> Get-Content .\streams64.exe -Stream Zone.Identifier
[ZoneTransfer]
ZoneId=3
ReferrerUrl=C:\Users\****\Downloads\Streams.zip
У вас в статье — официальный перевод с agilemanifesto.org/iso/ru/manifesto.html. Agile manifesto — это весь текст манифеста, а только процитированные в статье четыре пункта.

То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева.
это такая же часть манифеста, как и предложения с «важнее». А не какое-то дополнительное «личное толкование». Нужно очень сильно постараться при переводе, чтобы превратить «мы не отрицаем важность согласования условий контракта» в «контракт не нужен».
Поменяйте галеру (аутсорс, работу на госструктуры) на нормальную продуктовую контору. Будет и нормальная зп, и возможность принимать решения не только в коде, и свобода от корпоративного духа. Аджайл тут как бы вообще ни при чем. При старом добром водопаде гребсти ничуть не легче.
Вся проблема в том, что вы считаете что в манифесте правая часть противопоставляется левой. Это просто проблема перевода / восприятия слова «важнее». Прямо в манифесте, 5-й строчкой написано
That is, while there is value in the items on the right, we value the items on the left more.

Вы же восприняли слово over / важнее как «вместо».

По пунктам примерно так:

1. Individuals and interactions over processes and tools. Это не «пренебрежение регламентами», это «если команда считает, что будет лучше работать с другим регламентом и инструментами — надо менять регламент и инструменты, а не давить на команду»
2. Working software over comprehensive documentation. Это просто утверждение, что ситуация «работающий продукт с не совсем полной документацией», лучше чем «неработающий продукт с полной документацией». Там нет утверждения, что документация не нужна.
3. Customer collaboration over contract negotiation — это не «контракт не нужен». Это «если в процессе разработки оказалось, что в контракте закреплены нереальные, противоречивые или устаревшие требования — то стоит руководствоваться реальными требованиями, поговорить с кастомером, поменять контракт. И менять контракт. И заодно „надо активно пинать кастомера на предмет изменения требований“. А не дописывать без обсуждения промежуточных результатов до самого релиза.
4. Responding to change over following a plan — это не про техническую возможность внесения изменений. И не про отсутствие плана. А про то, что если ситуация поменялась и идет вразрез с планом — то стоит учесть изменения. А не слепо следовать плану.

Сам по себе Agile Manifesto — это „манифест здравого смысла“. В нем достаточно очевидные утверждения, которые не накладывают жестких ограничений на процесс. Можно делать водопад, но при этом следовать принципам Agile. Можно делать SCRUM, но при этом не следовать Agile почти никак.
Тест в вашем приложении-примере проходит на 2.2.0, судя по всему, исправлено.

А, ну это многое объясняет. Если написать на сервере код, который выполняет user input как код на C# — то, внезапно, user input можно будет выполнить как код на C#. Так и стоило бы написать прямо в статье, а упоминания Partial — выбросить как не имеющие отношения к уязвимости.

Я и не воспринимают эту статью как мануал по зеродеям. Пока я воспринимаю этот кусок статьи как "разработчику показалось".


Вот что реально происходит:


  1. Пользователь делает запрос в контроллер, отдает строку "@..."
  2. Контроллер отрисовывает View, спускает ему строку "@..."
  3. Внутри View встречается Partial View, после чего снова происходит запрос на контроллер, который отвечает за отрисовку частичного представления. В качестве параметра контроллеру отдается строка "@..."
  4. Partial View отрисовывает строку "@..."
  5. Готовый Partial View возвращается в основной. Основной отрисовывает результат рендера Partial — строку "@...".
  6. Пользователь видит на экране строку "@...".

При этом в видео видно, что пользователь получает на экране не строку "@...", а "admin". В какой момент, по вашему мнению, строка вида "@..." выполняется и превращается в "admin"?


Я же не предлагаю обсудить "обыгрывание пунктов" или "ошибки в человеческой логике". Вы(?) в статье заявили, что имеет место вот такой-то эффект. Я утверждаю, что такого эффекта нет, код не выполняется, и узявимости (не узявимости в asp.net, а узявимости в конкретном приведенном вами коде) нет.


Ответ, которого я бы ожидал для подтверждения существования уязвимости (в примере из статьи, не в asp.net) — это код, который можно было бы скопировать и запустить. Который делал бы то, что видно на видео — хоть как-то выполнял переданный пользователем код. А не мутного "невоспроизводимого" видео видео без исходников. У вас есть такой пример? Или только домыслы?

В каком смысле «какая разница что сделать на серверной стороне?».

Если на серверной строне написать код для вывода содержимого — будет выведено содержимое модели, как строка. Если на серверной строне написать код для вывода свойства из View Bag — будет выведено значение свойства из View Bag.

Вы можете вывести результат выполнения @((2 + 2).ToString()) если вы — разработчик и вы прямо вписали этот код в страницу Razor, а не спустили в виде модели. Тогда этот код выполнится и отрендерит на страницу строку «4». И это не уязвимость.

В примере из поста — вы, как атакующий передаете на сервер строку "@((2 + 2).ToString())" и получаете в выходном html строку "@((2 + 2).ToString())". Что строка "@((2 + 2).ToString())", что «qqq» — без разницы, она выводится как статический контент, а не выполняется как код. И это тоже не уязвимость.

При этом на видео, якобы, возникает ситуация, когда атакующий передает на сервер строку "@((2 + 2).ToString())", и получает на странице результат выполнения ее как кода на C#, «4». И это было бы уязвимостью, если бы такая ситуация реально возникала. Но она не возникает. Ни при прямом выводе @model, ни при косвенном, через PartialView.

По сути, уязвимость на видео — или фейк, или ошибка того, кто видео записал — несохраненный файл, например. Я могу точно такое же видео записать, просто забыв нажать Ctrl+S один раз :) Но это не означает, что уязвимость есть.

Вы автор видео из статьи? Вы можете привести минимальный пример для воспроизведения уязвимости? Если вы не можете привести пример, и не можете даже теоретически обосновать механизм — указать, в каком именно месте и на каком шаге строка будет выполнена как код — то как вы можете утверждать, что уязвимость вообще имеет место?

Про вывод @Model — в статье какой-то бред. Какой калькулятор, какая нагрузка? Это просто вывод строки, только зачем-то очень косвенный.


То же самое, что написать @ViewBag.Html в основной вьюшке. Пример из статьи просто выводит строку


@((Account.Models.User)Session[“User”].Password 

в html. Как строку, не выполняя ее как код.


Возможность получить от пользователя строку и вывести ее на экран — это уязвимость? :)


Что происходит на видео, и почему там выводит admin — загадка. Было бы неплохо увидеть реальную демострацию уязвимости, а не видео + скромное "Попытка воспроизвести не увенчается успехом".


Может быть там просто во вьюшке admin написано. Или даже @((Account.Models.User)Session[“User”].Password. А разработчик после замены на @Model забыл Save нажать.

Карточку wifi поменяйте — они умирают со временем. Только ищите 100% совместимую с ноутом — лучше заранее раскрутить раскрутить и посмотреть модель.
Уходил с bitbucket несколько лет назад (пару средних по размеру репозиториев), оставил там копию. Уходил именно из-за тормозов — как UI, так и push/pull были дико медленные медленные. Никакая бесплатность не стоит таких тормозов. Github по сравнению с ним — неимоверно быстрый.

Сейчас вернулся, открыл один из проектов, померял — src/default загружается 8 секунд. Любой клик, любая навигация по дереву файлов — тоже 8 секунд.

На гитхабе — тот же репозиторий + коммиты за два года — все открывается практически мгновенно.

gitlab — еще медленнее, чем bitbucket?
Это просто пример из предложения по Records. В реальной реализации скорее всего будет использоваться код комбинирования хэшкодов из Tuple / ValueTuple, который поддается оптимизации лучше, чему умножение, и который дает меньше коллизий на больших числах:

// RyuJIT optimizes this to use the ROL instruction
// Related GitHub pull request: dotnet/coreclr#1830
 uint rol5 = ((uint)h1 << 5) | ((uint)h1 >> 27);
return ((int)rol5 + h1) ^ h2;

Под "этих дырок" вы подразумеваете "легко эксплуатируемых дырок известных широкой общественности и разработчикам браузера, которые не торопятся чинить"? — выше же именно это обсуждается. А не просто наличие "каких то дырок". Известных дыр точно десятки? Назовите хотя бы три.

Все, кроме IE. И кроме энтерпрайзных LTSB, где обновлениями заправляет админ. И кроме тех, кто сидит на хроме под Vista / XP. И кроме браузеров, вшитых в необновляемые бюджетные андроиды.

Да и лично мне от ощущения, что у меня в браузере есть дырка, которая будет там еще пару недель, как-то не по себе.
В качестве подтверджения, что размер дырки не имеет никакого отношения к вероятности быстрого ее закрытия — bugs.chromium.org/p/chromium/issues/detail?id=508166
Security: Chrome provides high-res timers which allow cache side channel attacks
Reported by mseaborn@chromium.org, Jul 8 2015

и там же
Jul 15 2015, I have a PoC of the «Spy in the Sandbox» attack that works based on Shared Array Buffers instead of via high-resolution timing.


Конкретную проблему в конретном Chrome зарепортили два года назад. Но PoC на то время позволял всего лишь следить за движениями мышки вне браузера и обнаруживать сетевую активность. Сейчас появился PoC который позволяет через нее читать память процесса, и только после этого производители бразуеров зашевелились и выпустили «патч». Точнее, выпустят через две недели. В виде отключения Shared Array Buffers. В остальных приложениях никто ничего проверять и закрывать не собирается.

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity