touzoku

17 ноября 2015, Tokyo, Japan

# Вторник 22 твита

Привет! Немного запоздало в эфире появляется @MaratVy (англ. твиттер про инфосек) или @touzoku (русск. твиттер про Японию)

13:13

Я работаю security инженером в японской интернет-компании Ракутен. В России она больше известна брендом Viber (недавний acquisition).

13:16

На этой неделе мы поговорим про: безопасность фронтенда и клиентской части, фреймворки, работу в японских компаниях и японских школьниц :-)

13:18

Разумеется, смело задавайте вопросы. Как говорится, よろしくお願いします! orz

13:18

Я как знал, что выбрал правильный коллективный твиттер! “@sushkazzlo: @jsunderhood давай сразу про японских школьниц!”

13:21

Учебник "Я открыла глаза на функциональное программирование!". И снизу подпись: "Ну и отстойный код ты пишешь". pic.twitter.com/WmaVKNMS5t

13:28

Ладно, к профессиональным темам: с чего начать фронтэнд-инженеру изучать безопасность? Ответ: с фундаментальных основ — Same-origin policy!

13:31

Вся браузерная безопасность строится вокруг концепта SOP и безопасных способов этот концепт нарушать.

13:33

Второй столп браузерной безопасности: DOM. Правильно организованное разделение кода от контента исключает вероятность XSS уязвимостей.

13:35

Мягко говоря, японцы сложные, но жить можно. “@Kreozot: Ну вот вопрос про отношения как раз. Хотелось бы подробнее про этот аспект.”

13:38

Есть такое “@DevArtem: Я вот слышал, что если не отработал на компанию N лет, то не видать тебе плюшек и уважания сотрудников и начальства.”

13:38

Ну и стандартный опрос для затравки разговора, ггг... Какой фреймворк по-вашему безопаснее?

13:41

Каждый день я буду советовать одну must-read книжку по безопасной разработке. #1 в моем списке: The Tangled Web. amazon.com/Tangled-Web-Se…

13:46

По этой книжке задают вопросы на собеседованиях в Гугл на позицию Information Security Engineer. Ее нужно обязательно прочитать всем.

13:47

Ну и в нагрузку к книжке, каждый день по рекомендованной научной статье с последних конференций. Сегодня: usenix.org/conference/use…

13:56

Не будет вам спуску :-) “@alex_ivantsov: я думал на этой недели будет тишина, чтобы отойти от прошлой...”

13:57

Ладно, все хотят японок. Вот вам видео из соседней геймдев компании "Кибер Агент". youtube.com/watch?v=nCNI3J…

14:05

Кибер Агент имеет славу компании молодых хипстероватых сотрудников. Даром что прям в центре тусовочного района Сибуя расположены.

14:06

Видео танцующих сотрудниц Кибер Агента напомнило вот это видео youtube.com/watch?v=5rcIsH… Ладно, что-то я отвлекся…

14:10

Универсального чеклиста нет “@SilentImp: Есть какой то чек-лист, который позволяет обнаружить наиболее широко распространенные проблемы?”

14:20

Многие рекомендую OWASP, но я его не люблю. Он слишком generic, быстро устаревает и не следует современным концептам.

14:21

Я обычно собираю чеклист под проект в зависимости от стека. По крупицам из всяких docs.angularjs.org/guide/security@SilentImp: А твой личный?”

14:31

# Среда 46 твитов

@jsunderhood на самом деле опрос показывает не то что хотел автор. Я вот кликнул реакт только потому что его фанат и хейтер ангуляра
0:35

Я уже понял, что опрос не про безопасность получился, а про любовь. И что Реакт это не фреймворк :-)

0:36

Пока все спят, расскажу про то, как попал в Японию. Step 1: Закончил ЮУрГУ по специальности "Теория управления": всякая лапласова математика

1:31

Step 2: Заинтересовался security еще в школе, начал тусить с единомышленниками, играть в CTF (команда More Smoked Leet Chicken).

1:33

Step 3: Начал учить японский for fun (to exercise my brain). Подал на японскую правительственную стипендию MEXT: ru.emb-japan.go.jp/EDUCATION/PROB…

1:35

Что удивительно, прошел. По ней можно выбрать любой вуз, ну я и выбрал Токийский университет. Закончил магистратуру, решил в Ракутен пойти.

1:36
@jsunderhood давно закончил юургу?
1:36

В 2009 году, в Тодай поступил в 2011 (стипендию рассматривают год).

1:37

Где-то с 3 курса ЮУрГУ до 2 года в Тодае я работал в Информзащите пентестером. 5 лет хакал банки всякие и телекомы. В основном сети и веб.

1:39

Мой диплом, если кому интересно. Сумбурно написан немного, но идея мне до сих пор нравится repository.dl.itc.u-tokyo.ac.jp/dspace/handle/…

1:41

Если вкратце: то я предлагал включать SSL CA в браузеры на основе их репутации, которая считается из их продаж зафиксированных в блокчейне.

1:44
@jsunderhood "в блокчейне" это тот, который у Bitcoin?
1:46

. @way2bariton да, но сейчас я склоняюсь к менее распределенным вариациям блокчейнов (с разрешенными майнерами).

1:47
@jsunderhood расскажи как тебе в Японии, 3 главных впечталения
10:14

. @raxpost Первые 3 впечатления от Японии: чисто, безопасно, непонятно.

10:16
@raxpost @jsunderhood странно, что еще не создан ресурс с рассказами о релокации наших разработчиков.
10:17

. @abrosimov создан, почему :-) @abroadunderhood

10:17

Голосовалка про безопасность React vs Angular 2 почти закончилась. Но все проголосовали "какой фреймворк мне больше нравится".

10:19

Забавно что все так любят React. На самом деле Angular 2 намного безопаснее. В нем можно использовать только статические темплейты.

10:20

Статические темплейты исключают возможность XSS целиком.

10:21

Была интересная вики на тему безопасности фреймворков, но что-то ее обновлять перестали code.google.com/p/mustache-sec…

10:23
@jsunderhood как ты относишься к TypeScript? Будущее за статической типизацией?
10:24

. @greybax TypeScript это "полустатическая" типизация а ля питон или руби. Непонятно зачем она нужна: при компилировании баг не выловишь

10:25

А валиться с эксэпшенами в рантайме это садизм по-моему.

10:26

Окей, твиттер. Квиз тайм. Назовите в реплай 4 HTTP security хэдэра, которые нужно включить на каждом современном сайте. Можно сокращенно.

10:31
@jsunderhood потому что ты так и не ответил, почему нужно выбирать из одного фреймворка.

Я попросил выбрать из двух, т.к. я не спрашивал "какой самый безопасный"

@jsunderhood потому что ты так и не ответил, почему нужно выбирать из одного фреймворка.

10:32
@jsunderhood бля

Не думаю, что nginx поймет такой хедер...

@jsunderhood бля

10:33

Можно не четыре называть, а сколько получится. Подсказка: у многих есть слово Security в названии.

10:37
Даже странно, что до сир пор нет @fullstackunderhood в дополнение к @jsunderhood, @cssunderhood и @backendsecret.

Нужно @robinhoodundertheredhood #съюморнул

Даже странно, что до сир пор нет @fullstackunderhood в дополнение к @jsunderhood, @cssunderhood и @backendsecret.

10:40

И в догонку к квизу всеми любимый опрос! Что безопасней использовать для коммуникации между разными origins?

10:48
@jsunderhood почтовых голубей и морзянку на коротких волнах

Главное, чтобы в соответствии с RFC1149!

@jsunderhood почтовых голубей и морзянку на коротких волнах

10:51

Интересно, никогда не было шанса сразу на такой куче народа проверить свои гипотезы относительно понимания веб-безопасности.

10:53
@jsunderhood но ведь реакт - это всего лишь рендерилка компонентов. Какой же это фреймворк? Фремворки это эмбер, релей, ангуляр.

Рендерилка — это самый важный кусок в безопасности.

@jsunderhood но ведь реакт - это всего лишь рендерилка компонентов. Какой же это фреймворк? Фремворки это эмбер, релей, ангуляр.

11:07
@jsunderhood @raxpost что непонтяно? ну точнее, что самое непонятное?

Самое непонятное было сначала, что японцам надо мычать в ответ. Аидзучи называется.

@jsunderhood @raxpost что непонтяно? ну точнее, что самое непонятное?

13:24
@jsunderhood рассажи все же пересекаешься ли ты как то с tor/freenet/etc? И в каком ключе?

Особо не пересекаюсь

@jsunderhood рассажи все же пересекаешься ли ты как то с tor/freenet/etc? И в каком ключе?

15:03

Вторая книжка из моего списка по безопасности веб-приложений: amazon.com/gp/aw/d/111802…

15:31
@jsunderhood есть ли какие то учебники/ресурсы, которые не только расскажут как безопасно, но и покажут какие есть уязвимости и как их…

Рекомендую начать с Damn Vulnerable Web Application. dvwa.co.uk Можно и попрактиковаться в хакинге

@jsunderhood есть ли какие то учебники/ресурсы, которые не только расскажут как безопасно, но и покажут какие есть уязвимости и как их…

15:34

Еще вот мой коллега бывший классный секурити контест сделал сто лет назад, и до сих пор актуально. Там много веба: ahack.ru/contest/

15:38

Сегодняшняя научная статья про тайминг атаки на браузеры. Можете использовать, чтобы свой adtech подкрутить :-) securitee.org/files/timing-a…

15:45

Про HTTP заголовки для secuirty: несколько людей знают больше 4-х заголовков, еще несколько смогли назвать три.

15:48

Советую прогнать свой сайт через securityheaders.io и поглядеть каких не хватает.

15:49

Самый важные заголовоки для фронтэндов — это Content Security Policy, X-Frame-Options, X-Content-Type-Options, и X-XSS-Protection.

15:52

Как их правильно выставить лучше всего посмотреть на выдаче yandex.ru. В Яндексе ребята шарят в безопасности.

15:53
@jsunderhood и сколько оно обходится в месяц? Сколько вообще в месяц обходится жизнь в Токио на 1 человека?

Рядом с работой у нас снимают приличные квартиры за 150000 йен в месяц. Около 60 кв.м. Дорого, конечно, но это Токио

@jsunderhood и сколько оно обходится в месяц? Сколько вообще в месяц обходится жизнь в Токио на 1 человека?

15:55

Средние зарплаты в Токио не очень высокие. Около $80K в год (до налогов) — это зарплата, после которой говорят "жизнь удалась".

16:00

# Четверг 15 твитов

@jsunderhood X-Content-Type-Options=nosniff? А что, кто-то ещё автодетектит Content-Type?

Inernet Explorer все еще детектит

@jsunderhood X-Content-Type-Options=nosniff? А что, кто-то ещё автодетектит Content-Type?

0:57
@jsunderhood @mista_k @touzoku еще есть CORS:
Allow-Control-Allow-Origin: * и все, привет родителям ;)

Да, но этот хэдэр наоборот ставить НЕ нужно :-)

@jsunderhood @mista_k @touzoku еще есть CORS:
Allow-Control-Allow-Origin: * и все, привет родителям ;)

0:59

32% предпочитают JSONP над CORS. Советик: не пользуйтесь JSONP ваще никогда, это тупо хак. CORS был придуман, чтобы решить эту проблему.

5:34

Единственный плюс JSONP — он работает в старых IE. Если у вас современный сайт, не пользуйтесь JSONP.

5:35
Делаю полезные заметки по следам @jsunderhood pic.twitter.com/EqIEW9BFgD
12:53
@Barlog_M @jsunderhood ну я думаю по собственной воле его и не используют. А вот если API не поддерживает cors?

Значит надо дописать поддержку CORS?

@Barlog_M @jsunderhood ну я думаю по собственной воле его и не используют. А вот если API не поддерживает cors?

13:54

Важная заметка про хэдэр X-XSS-Protection. У него есть 3 значения: 0, 1, и 1; mode=block. Правильней всего использовать последнее.

13:56

Если же где-то сломалось что, то лучше вырубить его нафиг (выставить ноль). Единица — самый рискованный вариант.

13:57
@jsunderhood ну если api не твой? Например VK.com

Ну тогда либо ругаться на них, либо принять риск (они, наверно, знают что делают).

@jsunderhood ну если api не твой? Например VK.com

13:58
@jsunderhood @a66at @mista_k @touzoku * ни к чему плохому не приводит, куки/auth не передаются. Да, даже при allow-credentials: true.

Зависит от того, что выдает ручка. Если прогноз погоды, то, конечно, можно что угодно ставить в CORS.

@jsunderhood @a66at @mista_k @touzoku * ни к чему плохому не приводит, куки/auth не передаются. Да, даже при allow-credentials: true.

14:29

Рекомендованная статья сегодня cure53.de/es6-for-penetr… Вообще Mario @0x6D6172696F Heiderich — это один из моих кумиров в плане вебсека.

14:48

Развивая тему крутых веб-безопасников. Топ ресерчеры: @hasegawayosuke @kinugawamasato. Классный еще slideshare.net/muneakinishimu…

14:53

Удивительно, из четырех самых крутых XSS-еров, три японца и один немец. В остальных секурити темах японцы явно проседают.

14:54
@a66at @jsunderhood @mista_k @touzoku анонимно, без кредов (basic auth/cookies). Где импакт?

Например, накрутить голосовалку на сайте. Или подгрузить сайт из корп. сети жертвы.

@a66at @jsunderhood @mista_k @touzoku анонимно, без кредов (basic auth/cookies). Где импакт?

15:27
@jsunderhood больше похоже на какое-то супер исключение, учитывая, что CORS используют обычно для API. Но ок, пусть будет так.

Еще есть целая пачка timing атак на кэшируемый контент.

@jsunderhood больше похоже на какое-то супер исключение, учитывая, что CORS используют обычно для API. Но ок, пусть будет так.

15:34

# Пятница 7 твитов

А где сегодня все @jsunderhood , @backendsecret ?
13:13

Я хочу начать писать про TLS, и как его разворачивать на фронтэнде, но пятница, десять вечера. Коллеги из Испании и Германии приехали...

13:15

так что задавайте вопросы, буду отвечать :-)

13:15
@jsunderhood кем ты станешь когда вырастишь? ;)

Когда я вырасту, я стану grammar nazi. Вырастешь! Вырастешь!!!

@jsunderhood кем ты станешь когда вырастишь? ;)

13:55
@jsunderhood первый вопрос, что такое TLS?

Transport layer security. Кривоногий протокол, придуманный Netscape :-)

@jsunderhood первый вопрос, что такое TLS?

13:57
@jsunderhood отстань. Я тут играю роль бессмертного пони. Да ещё и в пятницу! :)

Давайте играть в силиконового ослика Федю :-) И каменное лицо. RT если читал журнал Хакер в 12 лет под партой.

@jsunderhood отстань. Я тут играю роль бессмертного пони. Да ещё и в пятницу! :)

14:03

# Суббота 30 твитов

@jsunderhood в чем его кривость? @aod_toxic

Один костыль затыкает другой, куча легаси, софт написан криво, нет четкой спецификации state machine

@jsunderhood в чем его кривость? @aod_toxic

7:31
@jsunderhood как ты любишь отдыхать в Японии? Был ли на лисоферме?

На лисоферме?! Не был. Люблю выездые активные виды спорта: open water, бег, вел.

@jsunderhood как ты любишь отдыхать в Японии? Был ли на лисоферме?

7:32
@jsunderhood нравятся тебе японки? Японцы?

Нравятся точно так же, как и любые другие расы и национальности.

@jsunderhood нравятся тебе японки? Японцы?

7:32
@jsunderhood что рекомендуешь посмотреть в Японии при случае?

Рекомендую полуостров Идзу летом, очень там классно. Или в горы, где-нибудь в Нагано.

@jsunderhood что рекомендуешь посмотреть в Японии при случае?

7:34
@jsunderhood японцы правда такие извращенцы!? Или ты сейчас покупаешь женское нижнее бельё?))

А что в этом плохого? :-)

@jsunderhood японцы правда такие извращенцы!? Или ты сейчас покупаешь женское нижнее бельё?))

7:35
@jsunderhood увлечение секурити откуда пошло? Из ][?

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

@jsunderhood увлечение секурити откуда пошло? Из ][?

7:36
@jsunderhood Эскейпинг - в шаблонизаторе, на клиенте/на сервере, по умолчанию On/Off? ;)

В новых фреймворках типа Angular 2 больше нет понятия "эскейпинг" даже. Просто данные биндятся как текст.

@jsunderhood Эскейпинг - в шаблонизаторе, на клиенте/на сервере, по умолчанию On/Off? ;)

7:36

Напишу про TLS. При разворачивании веб-морды важно спроектировать фронт так, чтобы он работал ТОЛЬКО через TLS.

13:15

Например, часто можно увидеть совет включать js вот так: <script src="//cdn.something.com/blah.js">. Забудьте этот рецепт.

13:17

Свой сайт выкатывать только через https, включая все ссылки. Mixed content — это самая частая ошибка фронтов и головная боль инфосеков

13:19
@jsunderhood что конкретно плохо? В смысле не безопасно? Почему

Потом сложно апгрейдить до TLS. Бывает, что для TLS домен другой (например, у google analytics).

@jsunderhood что конкретно плохо? В смысле не безопасно? Почему

13:20

Какие алгоритмы и версии TLS правильно поддерживать на сервере? Отвечает Александр Друзь^W^W @ivladdalvi m.habrahabr.ru/company/yandex…

13:23

Так что проверяйте свой сайт на ssllabs.com и если там меньше "A" стоит, то шлите статью на Хабре своим админам.

13:24

Еще есть огромная секция изврата — это выбор алгоритма подписи сертификата. Есть 3 опции: RSA+SHA1, RSA+SHA2, ECDSA+SHA2.

13:27

В идеале надо поддерживать все три. Зайдите на ctftime.org через Chrome, увидите ECDSA сертификат. А если через IE, то RSA.

13:28

Проблема в том, что современные веб-серверы не умеют отдавать правильные сертификаты в сложных случаях.

13:30

Например Google Chrome на Windows XP SP1 говорит в Client Hello, что он умеет SHA2. #насамомделенет pic.twitter.com/aTCdoHr2tx

13:34

Или, например, что лучше поддерживать AES_CBC без патча против BEAST или RC4? В cloudflare выбирают второй вариант — RC4 сложнее сломать.

13:36

Поддержка TLS для legacy-клиентов это просто nightmare. Поэтому лучше довериться специалистам и юзать грамотных CDN-щиков.

13:37
@jsunderhood практика показывает, что сложные случаи очень редки :) типовому фронтендеру об этом не нужно даже задумываться

См. мой последний совет :-)

@jsunderhood практика показывает, что сложные случаи очень редки :) типовому фронтендеру об этом не нужно даже задумываться

13:38

По моему скромному мнению, грамотные и дешевые CDN so far — cloudflare и fastly. Расскажите в реплаях, какими CDN вы пользуетесь?

13:42
@jsunderhood fastly до сих пор не умеет ipv6, shame
14:09
@jsunderhood многие IP Cloudflare, к сожалению, в списках Роскомнадзора
14:09
@jsunderhood а про SSL-сертификаты можно? Сейчас стали предлагать бесплатные варианты, можно/нельзя их использовать, почему?

Let's encrypt по-моему прикольная тема. Но непонятно насколько широко он поддерживается уже (еще сам не смотрел).

@jsunderhood а про SSL-сертификаты можно? Сейчас стали предлагать бесплатные варианты, можно/нельзя их использовать, почему?

17:42
@jsunderhood с windows xp sp1 в пору просто рвать соединение
17:43
@jsunderhood или забить на легаси вообще.
17:43
@jsunderhood вот у @kyprizel есть патч для выбора сертификата в nginx в зависимости от состава сертификатов в ClientHello

Но этот патч явно не умеет эвристики в духе "если Хром на ХР СП1" :-)

@jsunderhood вот у @kyprizel есть патч для выбора сертификата в nginx в зависимости от состава сертификатов в ClientHello

17:44
@jsunderhood если сайт ориентирован на Россию и СНГ, пользы от cloudflare не будет

А какие CDN в России популярные?

@jsunderhood если сайт ориентирован на Россию и СНГ, пользы от cloudflare не будет

17:45
@jsunderhood Они только в декабре публик бету запускают.
А их корневой уже вроде как засунули во всех браузерах ну или близко к этому

Помимо браузеров есть Linux trust store, NSS, curl, JDK и прочее добро.. Говорю же, TLS и PKI — это жаба с гадюкой

@jsunderhood Они только в декабре публик бету запускают.
А их корневой уже вроде как засунули во всех браузерах ну или близко к этому

17:47
@jsunderhood Не ахти какой. Даже http/2.0 не торопятся поддерживать. Но хостимся на амазоне и юзаем амазонский же цдн.
17:48

# Воскресенье 19 твитов

Чего-то я забыл книжек советовать каждый день, поэтому сразу несколько за раз. Отличная книжка: amazon.com/Bug-Hunters-Di…

15:20

Вот эту книжку я еще сам не читал, но она свеженькая. Прочитаю на досуге. amazon.com/gp/aw/d/146659…

15:22

А вот эту книжку я читал, но начинающим не советую. Если вы не менеджер security веб-команды, то можно не читать. amazon.co.jp/Threat-Modelin…

15:23

Из статей, что недавно читал, интересно про запаркованные домены (полезно для валидации мыл юзеров) internetsociety.org/doc/parking-se…

15:29

Вот еще статья с NDSS 2015 про тайпсквоттинг. Рекомендую читать и регать созвучные домены со своим :-) internetsociety.org/doc/seven-mont…

15:30

Вообще следите за публикациями NDSS, ACM CCS, Usenix Security, IEEE Security & Privacy. Хотя бы статьи про веб, полезно быть в курсе.

15:31

Читайте меньше Stack Overflow, больше официальной документации, исходных кодов и открытых issue на гитхабе.

15:32

Например, первый же ответ по запросу "how to generate random password javascript" выдает неверный результат. Пароль будет предсказуемый.

15:34

Из издательств, хорошие книги по веб безопасности у No Starch Press, Syngress и Wiley. У O'Reilly почти нет ничего по секьюрити толкового.

15:37
@jsunderhood ой-вей, да куча CISO шарахаются от вопроса: а вы составили модели угроз? Куда там разрабам
15:37

Личная просьба от @kyprizel: "не забудь пожалуйста сказать, что эскейпинг в шаблонизаторе должен быть по умолчанию включен!!! ))))"

15:38

Так что включайте (не выключайте) эскейпинг в шаблонизаторах, избегайте document.write и innerHTML в javascript, и не будет вам XSS.

15:40

Выдавайте все по HTTPS, включите CSP, не добавляйте динамический javascript от всяких левых баннерообменников.

15:41

Выполнив только эти простые шаги, вы обезопасите свой сайт лучше, чем 80% "сайтоделов".

15:43

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

15:44

С переменным успехом на этой неделе с вами был @touzoku (aka @MaratVy), безопасник из Ракутена, Токио. Мы разговаривали про веб-секьюрити

15:45

Спасибо всем большое за комментарии, конструктивную критику и участие в опросах. Если остались вопросы, задавайте, пока акк не отжали :-)

15:47

Я, наверно, не раскрыл тему японских школьниц, но тут нельзя сексистских твитов, так что сорри, пишите в мой личный твиттер.

15:49
@jsunderhood но если очень надо, берите js от левых баннерообменников, но засовывайте его в атрибут srcdoc в iframe с аттрибутом sandbox!
15:49

other