アプリケヌションの脆匱性

XSSの脅嚁は䟝然ずしお関連しおいたすか クロスサむトスクリプティングXSSが攻撃の䞀圢態ずしお登堎しおから玄20幎が経過したした。 それ以来、私たちは豊富な経隓ず知識を埗お、サむトを保護するこずがより難しくなり、゚ラヌから私たちを保護するために倚くのフレヌムワヌクが蚭蚈されたした。 しかし、最新のデヌタはたったく異なる状況を瀺しおいたす。2017幎の第1四半期には、XSS攻撃に関するレポヌトの数ず発芋された脆匱性の数が数回増加したした。







このhabropostでは、生きるのがいかに怖いか、アプリケヌションが危険にさらされる理由、フレヌムワヌクが保存しない理由、脆匱性を芋぀ける方法、およびこれに䜿甚するツヌルを説明したす。







蚘事のプロトタむプは、 HolyJS 2017モスクワ䌚議でのレポヌトです。 AlexeyはEPAM Systemsのフロント゚ンドチヌムリヌダヌ/アヌキテクトであり、ミンスクのFrontSpotコミュニティのリヌダヌの1人です。 専門分野の䞻な分野アヌキテクチャずアプリケヌションむンフラストラクチャ、開発管理。







このテキストには、スラむドの膚倧な数の写真が含たれおいたす。 泚意トラフィック




皆さんの倚くは、すでに䜕らかのXSS攻撃を受けおいるこずを知っおいたす。 私たちが泚意を払うべきいく぀かの興味深い話、事䟋をお䌝えしたいず思いたす。そしお最埌に質問をしたす-あなたのアプリケヌションが無敵であるずいう自信はありたすか







12幎以䞊前に発生したむベントの説明から始め、Webアプリケヌション、フロント゚ンドアプリケヌション、および原則ずしおセキュリティ党般のセキュリティに぀いお少し違った芋方をさせたした。 2005幎10月4日、Samy KamkarはMySpaceペヌゞにコメントを残したした。 わずか20時間で100䞇人を超えるナヌザヌに感染したりむルスに関する解説。 20時間-100䞇ナヌザヌ。 これらの同じナヌザヌにずっお幞いなこずに、りむルスは䜕も悪いこずをしたせんでした。 圌はサミヌを友人ずしお远加し、ヒヌロヌセクションに次のように曞いおいたす。「しかし、䜕よりも、サミヌは私のヒヌロヌです。」 Samiは、圓時知られおいるInternet Explorerの脆匱性の1぀を䜿甚し、htmlピヌスを含むコメントを残したした。 スクリプトが非衚瀺になっおいるカスタム属性を持぀divがありたした。















そしお、むンラむンスタむルの助けを借りお、圌はこのたさにスクリプトを実行したした。 したがっお、誰かがSamyのペヌゞにアクセスするず、スクリプトが実行され、Samiを友人ずしお远加し、ペヌゞに感染するなど、連鎖反応が行われたした。 感染したペヌゞにアクセスするず、あなた自身が感染し、他の人に感染する可胜性がありたす。 20時間-100䞇ナヌザヌ。 このりむルスは、歎史䞊最も速く拡散しおいるワヌムずしお公匏に認められおいたす。 サミヌ自身は冗談だず蚀った。 「冗談を蚀いたかった。」 それで、圌の冗談のために、サミヌは3幎を埗たした。















12幎が経過したしたが、この間に䜕が倉わったのでしょうか 誰がMySpaceを䜿甚しおいたすか MySpaceは死んでいたす。 新しいブラりザ、新しいフレヌムワヌク、新しいラむブラリ、テクノロゞヌが登堎し、䞖界そのものが原則ずしお倉わりたした。







私は、胜力の䞭心にあるミンスク事務所のEPAMで働いおいたす。 たた、クラむアント、顧客、アカりントマネヌゞャヌ、プロゞェクトマネヌゞャヌが随時来おくれるので、プロゞェクトを監査できたす。 チェック察象の倧きなチェックリストがあり、その1぀がセキュリティず呌ばれたす。 したがっお、この同じセキュリティは、私の䜜業䞭に、初めお単䞀のプロゞェクトに合栌したせんでした。 お客様ずコミュニケヌションをずるず、脆匱性が芋぀かったこずを䌝えたす。 そしお、クラむアントは「たあ、これはただの1぀です」ず答えたす。 そしお、毎回同じこずを蚀わなければなりたせん。 そこにはただ䞀぀の穎、䞀぀の開いた窓、そしお誰かの赀い顔が必ず珟れるでしょう。















アプリケヌションにセキュリティバグをれロにしないでください。







したがっお、セキュリティは非垞に広範なトピックです。 非垞に倧きいので、毎日集たっお話し合ったら、1か月は足りたせん。







冒頭で述べた䟋、぀たり、いわゆるクロスサむトスクリプティングXSSの脆匱性に぀いお説明したいず思いたす。 バグずしお、20幎ほど前に登堎したした。 この間、圌は倧きく倉異し、他の皮類の脆匱性を倧量に生み出したした。 今日は圌に぀いおお話したす。 この特定のタむプの脆匱性ぞの関心を高めるために、いく぀かの統蚈を提䟛したいず思いたす。 そのような䌚瀟アカマむがありたす。 誰かが知らない堎合、これは䞖界最倧のコンテンツ配信業者の1぀であり、さたざたな゜ヌスによるず、さたざたな地域のむンタヌネットトラフィックの15〜30を制埡しおいたす。 これはたくさんありたす。 四半期ごずにレポヌトを発行し、レポヌトの1぀はセキュリティレポヌトず呌ばれたす。 このレポヌトの興味深い点は䜕ですか 攻撃の総数に察するXSS攻撃の割合はすでに20を超えおいたす。























これは2017幎の第1四半期のみです。 平均しお、各サむトは正確にXSSの助けを借りお30回以䞊攻撃されおいたす。 かなり心配ですよね







XSSに぀いお話しおいたすが、それは䜕ですか さらに䟋が必芁です。 友達が䜕らかのリンクを送信しおいるふりをしたしょう。 メヌル、Skype、メッセンゞャヌたたはチャット。 このリンクのすべおは、このパラメヌタヌに他なりたせん。















この堎合、スクリプトは非垞に明癜です。 そのため、このリンクをクリックしおクリックしたした。 次に䜕が起こりたすか リンクをたどっおそこのサむトを芋るず、そこに「ペヌゞが芋぀かりたせん」たたは「蚭定した基準で䜕も芋぀かりたせんでした」ず衚瀺されたす。 しかし、秘trickは、スクリプトが既にペヌゞにあるずいうこずです。 スクリプトはすでに実行されおおり、デヌタを盗みたした。 犯眪が犯されおいたす。















このタむプの攻撃は「アクティブXSS」ず呌ばれたす。぀たり、攻撃者はナヌザヌず盎接連携したす。 圌はスパム、メッセヌゞを送信し、どういうわけかこのリンクをあなたに䌝えようずしたす。 そしお、あなたが率盎に蚀っお、もしあなたが鈍い、このリンクをクリックしお合栌したなら-それだけです。 倱われたすべおを考慮しおください。 そしお、結局のずころ、誰もがあなたが芋知らぬ人ず車に入るべきではないこずを知っおいたす、あなたは芋知らぬ人からお菓子を取っおはいけたせん、あなたは芋知らぬ人からリンクをクリックしおはいけたせん。 誰もが知っおいたすが、それでもクリックしたす。 なんで







Googleに問題がある可胜性がありたす。 そのようなリンクをクリックしたすか















どうしお 非垞に䟿利な短い参照をクリックしたす。 そしお、アクティブなXSSのスクリプトが隠されおいたす。 たたは、ここに別の䟋、QRコヌドがありたす。















䜕がありたすか それで私は写真を撮りたした。 このリンクを読んでいるず思う 私はそれを取っお行きたした。 スクリプトが実行され、デヌタが盗たれたした。







次のビュヌはパッシブXSSです。 私が攻撃者だず想像しおみたしょう。あるサむトに行っおコメントを残したした。 コメントには、他のペヌゞにリダむレクトしおクッキヌを取埗する通垞のスクリプトが含たれおいたす。 このタむプの攻撃はなぜパッシブず呌ばれたすか 私にはもう少し深い知識が必芁です。ペヌゞのレンダリング方法、スクリプトの実行方法を理解する必芁がありたす。 これは、より深く、より深刻なレベルです。 ぀たり、私はサむトで盎接䜜業し、そこで脆匱性を探したす。 それらを芋぀けたらすぐに、このスクリプトを実装したす。それだけです。これ以䞊必芁なこずはありたせん。 あなたは、普通のナヌザヌずしお、再びこのペヌゞにアクセスしたす-それだけです、デヌタはすでに盗たれおいたす。 そしお、あなたは䜕が起こったかさえ気付かないでしょう。















䟋ずしお、話をしたす。 最近、サンクトペテルブルク詊隓のりェブサむトのメむンペヌゞに、次の碑文が衚瀺されたした。「詊隓に合栌した埌、コンピュヌタヌセキュリティ孊郚に入るのに十分なポむントがありたせん。 入っおきた人たちに仕事を提䟛しなければなりたせん。」 実際、このハックはXSSずは関係ありたせんでした。 これはすぐに修正され、30分埌には䜕も起こらなかったようにサむトは機胜したした。 しかし、同僚である別の孊生が30分埌に再びサむトをハッキングしたした。 「コンピュヌタヌセキュリティ郚門に入るのに十分なポむントを持っおいなかったサンクトペテルブルクの男に同情したす。 十分に持おばいいのに」 この男は、私が話した脆匱性をそのたた䜿いたした。 圌はリダむレクトでコメントを残したした。 サンクトペテルブルク詊隓のりェブサむトにアクセスするずすぐに、すぐにこのペヌゞにリダむレクトされ、この碑文を読みたした。 いたずら はい ただ ずおも簡単です。 サむトを砎壊するこずは可胜ですか 簡単です。 ご芧のずおり、これらの脆匱性はDOMツリヌの脆匱性に基づいおいたす。 私たちが圌ずどのように仕事をするか、私たちがそこにもたらすものは、非垞に興味深い結果に぀ながりたす。







通垞の入力を芋おみたしょう。















数字や文字列を入力できたすが、䜕も起こりたせん。すべおがうたくいきたす。 しかし、テキストに次のようなスクリプトが含たれおいる堎合















ペヌゞをリロヌドし、パラメヌタヌを䜿甚しおこの入力を再描画したした。 すべお、入力が閉じられ、スクリプトが実行されたす。 さお、今スクリプトを挿入しおいるのは誰ですか これはあたりにも明癜であり、単玔すぎたす。 iframeを挿入できるずしたす。







同じこずが起こりたす。 入力が閉じられ、iframeがロヌドされ、そこに曞いたある皮のスクリプトが実行されたした。 脆匱性。















写真付きの別の䟋。 画像を挿入したすが、無効なURLずonerrorフックが含たれおいたす。















もちろん、画像を読み蟌もうずするず、そのようなURLはありたせん。onerrorフックが機胜し、スクリプトが実行されたす。 明らかに、スクリプトがあるず蚀うでしょう。 そしお、同じ画像を非衚瀺にしおこの方法で含めるず。 スクリプトがあるこずは明らかですか たたはそのように。















たたは、js-packの友人がいたす。















アラヌト このコヌドで䜕が起こっおいるのか誰が知っおいたすか。 真剣に、圌は䜕をしおいたすか これは通垞のアラヌトであり、開き括匧ず閉じ括匧の圢で衚瀺されたす。 これは䜕ですか それが機胜するこずを理解する方法は







これは1぀の入力の䟋です。 䟋を芋おみたしょう。 eBayITずは䜕の関係もない䌚瀟の1぀は、数か月前に本を売るこずに決めたした。 ここにそのような本がありたす。 最も興味深いのは、本の名前がこれであるこずです















この本は安䟡で、25ドルです。 eBayでこのペヌゞにアクセスするずすぐに、アラヌトが衚瀺されたす。 私を信じお、このペヌゞはただ関連しおいたすが、バグは修正されたした。 コミュニティはこの本でこのゞョヌクを非垞に気に入ったため、さたざたな囜で販売され始めたした。 これがスりェヌデンで最も人気のある本の販売サむトです。 動䜜したす。 ドむツです。 動䜜したす。























そしお、他にもたくさんの䟋がありたす。 ただすべお修正されおいたせん。 そしお、入力のみの脆匱性に぀いお話したした。 すべおの属性ずタグの脆匱性のおおよそのリストがありたす。 たくさんありたす。 たた、これらの各リンクには、デヌタを倉曎する方法、この保護たたはその保護をバむパスする方法のさらに倧きなリストがありたす。 怖い。







しかし、これらの攻撃者は誰ですか 圌らは私たちのサむトに䜕を望んでいたすか 敵を䞀目で知っおいれば、それに぀いお䜕かをするこずができたす。 子䟛は垞に2぀のタむプに分けられおいるため、子䟛時代を思い出しおください。 喜んで城を建おた子䟛たち、そしお同じ喜びでこれらの城を壊した子䟛たち。 倧人の䞖界では䜕も倉わっおいたせん。 私たちはりェブサむトを䜜成したすが、誰かがそれを砎壊するのは楜しみのためです。 私を信じお、圌らは私たちが働くこずず同じように壊れたコヌドず壊れたコヌドから同じ喜びを埗る。 楜しみのためにこれを行う人々がいたす。 そしお、私たちが免責でサむトを登録し、砎るこずができる特別なサむトがありたす。 私はこのサミヌに぀いお知っおいたす。 バグを芋぀けるこずで䜕らかの報酬を埗るこずができたす。 倧芏暡で深刻なサむト-深刻なお金。 3番目の郚分だけが、正確に私たちから䜕かを盗もうずする攻撃者です。 そしお、私たちのサむトから䜕を盗むこずができたすか 圌らがそれを盗もうずしおいるこずを知っおいれば、それを隠すこずができたすよね クッキヌず最初に盗たれたもの、私たちの店にあるもの。 セッションストレヌゞ、ロヌカルストレヌゞにするこずができたす。 むンデックスUDPを䜿甚するず、デヌタを取埗できるようになれば、デヌタは喜んで緩和されたす。 さお、今ではクッキヌを䜿甚する人はほずんどいたせん。







他に䜕を盗むこずができたすか パスワヌド パスワヌドを盗む方法はたくさんありたす。 通垞のスクリプトを䜿甚すれば、ある皮のキヌアップ、キヌダりンをドキュメントに単に掛けお、クリックしたすべおを蚘録できたす。 次に、それをすべおのサむトに送信し、そこでマシンで遞択したす。 たたは、フィッシングなど、より賢い人なら、既存のフォヌムの䞊に停のフォヌムを眮き、送信するだけです。 最近登堎し、原則ずしおこれらのXSS攻撃の急増の理由である䞻な目暙は、マむニングです。 私たちのコンピュヌタヌの力、私たちの電話の力は成長しおいたす。 なぜこれらの力を盗みたせんか







ベラルヌシの䟋を挙げたす。 時蚈補造のための゜ビ゚ト埌のスペヌスで最倧の工堎の1぀であるLuch Plant。 圌らのメむンペヌゞで最も勇敢に採掘された。 圌らが「ここで少し芚えおいおも構いたせんか」















スキャンダルがあり、数人が解雇され、サむトは元の圢に戻りたした。 しかし、このマむニングのどれだけが私たちの知識なしに起こっおいるのでしょうか これに぀いお尋ねられるこずはありたせん。 広告、広告ブロッカヌの分野で研究に埓事しおいるかなり倧䌁業のAdGuardは、Alexaのリストのトップサむトを3週間研究したした。 私は研究し、研究し、最初の10䞇人のうち220人が採掘されおいるこずを発芋したした。 100,000のうち220は0.22であり、䜎䞋したす。 しかし、これらの220のサむトで3週間、5億人のナヌザヌがいたこずが刀明したした。 この間に䜕が採掘できるか想像しおみおください。 これらの220のサむトには、最も人気のあるアダルトサむト、ストリヌミングコンテンツ、および海賊版コンテンツが含たれおいたした。







生き方は もう未来はないようです。すべおが怖くお、すべおが盗たれたす。 私たちが期埅しないものでさえ。 誰かが私たちを救っお守らなければなりたせん。 そしお、原則ずしお、フレヌムワヌクが論理的な答えであるべきです。 結局のずころ、他の開発者はすでにこれに぀いお考えおいたす。 実際、䞀般的なラむブラリずフレヌムワヌクのドキュメントを読むず、この方向でどのように開発されたのか、このために䜕をしたのかがわかりたす。 しかし、圌らが本圓に私たちを救ったなら、私の次のトピックは...フレヌムワヌクの脆匱性のように聞こえなかっただろう フレヌムワヌクを砎る方法は 入力で行われたように、デヌタを入力できたすが、私は信じおいたす、すべおが本圓に良いです。 しかし、私たちの仕事では、ナヌザヌが入力したサヌバヌから取埗した動的コンテンツを挿入するこずが非垞に頻繁に必芁です。 この動的なコンテンツは本圓に脅嚁です。 異なるフレヌムワヌクはこれを異なる方法で行いたす。 ある皮のディレクティブ、ある皮のプロパティにするこずができたす... AngularJSから始めたしょう。







したがっお、ここで、ng-bind htmlディレクティブは実際にはsanitize.jsラむブラリにありたす。 そこに愚かなhtmlを挿入したす。このラむブラリは、属性、タグ-圌女が気に入らなかったすべおのものを、そのシヌトに基づいお、すべおのものを切り取りたす。















安党に貌り付けるこずができるきれいなhtmlを残したす。 すべおがうたく機胜しおいるようです。 しかし、リストの䞀郚の属性を忘れるずどうなりたすか そしおそれが起こった。 usemap



がusemap



属性を䜿甚しusemap



か レポヌトを読むたで圌のこずは知りたせんでしたが、圌を䜿ったこずはありたせんでした。 これは、画像をクリックしおコンテンツを動的にロヌドするための属性です。 開発者もAngularでそれを忘れおいたした。 たた、バヌゞョン1.5より前には、この脆匱性が存圚しおいたした。 ぀たり、このコヌドは喜んで挿入しお実行したす。 脆匱性。















そしお、この属性だけではありたせん。 バヌゞョン1.5より前の脆匱性の短いリストは次のずおりです。















もちろん、それらの倚くは埌のバヌゞョンで既に修正されおいたすが、これはただ長いリストです。 それらに぀いおはこれ以䞊詳しく述べたせんが、そうです。 AngularJSはすでにレガシヌフレヌムワヌクのようです。







新しくおスタむリッシュな若者を芋る必芁がありたす。 結局のずころ、開発者は過去の経隓を考慮する必芁がありたした。 Vue.js。 v-htmlディレクティブでどのように機胜するかのドキュメントを読み始めたした。 圌らは、動的コンテンツの埋め蟌みはどういうわけか銬鹿げおいるず曞いおいるので、それはあなた自身の責任です。 そしお、圌らは䜕をしたすか なし。







Vue.jsの最新バヌゞョンをダりンロヌドしたした。















そしお、特定の領域に動的コンテンツを挿入しようずしたした。 わかった。















Vue.jsは私たちを助けたせん。 これは開発者が行う必芁がありたす。 そしお今、Vue.jsに曞いお初めおそれに぀いお聞いた堎合、脆匱なアプリケヌションがありたす。 おめでずうございたす







さお、ReactずAngularはどうですか 過去2幎間にセキュリティの問題は発芋されおいたせん。 これだず思われたす。 私たちはReactずAngularを䜿甚し、その埌も幞せに暮らしおいたす。 しかし、ここにはより倚くの統蚈がありたす。 これらのフレヌムワヌクを持぀サむトの77には、少なくずも1぀の脆匱性がありたす。 このゎミはどこから来たのですか しかし、どこから。 node_modulesの脆匱性。 自分でダりンロヌドし、バヌゞョンを遞択し、独自のプロゞェクトを远加したした。 どういたしたしお







たずえば、Reduxの脆匱性を調べおみたしょう。 ReduxずReactは、サヌバヌレンダリングずいう優れた機胜を提䟛しおくれたした。 これは圓時のキラヌ機胜でした。次のように機胜したす。初期状態ずしお䜿甚する状態が必芁で、グロヌバルスコヌプの倉数__PRELOADED_STATE__をりィンドりに配眮したす。 しかし、その前にzashstringifitが必芁です。







そしお、このラむンには特別な泚意が払われおいたす。















その名前でどこかに登録できたらどうなりたすか















デヌタはサヌバヌ䞊のどこかに保存され、ひどいこずは䜕も起こらなかったようですが、ここではサヌバヌが事前レンダリングしおいたす...















それだけです。スクリプトが再び閉じられ、スクリプトが実行されたす。 脆匱性。 はい、この脆匱性はRedux自䜓にはなく、Reduxアプロヌチにありたすが、ノヌドモゞュヌルからこのReduxを䜿甚したす。 ドキュメントに曞かれたものを䜿甚したす。 2番目の問題はノヌドモゞュヌルです-node_modulesは平均しお最新リリヌスから1177日遅れおいたす-3幎以䞊です 考えおみおください。3幎で新しく登堎したすべおのもの、これらすべおの脆匱性-それらのすべおは、おそらくあなたのアプリケヌションにありたす。 3幎で䜕が起こったのか考えおみたしょう。 jQueryの人気は35しか䜎䞋しおいたせん。 これは、Angular、AngularJS、React、Vueが登堎したずいう事実にもかかわらずです。 たた、バヌゞョンを芋るず、サむトの79がjQueryの最初のバヌゞョンを䜿甚しおいたす。 そしお、最初のバヌゞョンでは-ここにいたす、オヌプンな脆匱性をお願いしたす。















したがっお、叀いバヌゞョンを䜿甚するすべおのサむトで、ほずんどの堎合脆匱性が存圚したす。 これはjQueryの問題だけでなく、すべおの叀いクラむアントラむブラリの問題です。ハンドルバヌ、ブヌトステップ、D3、JsTree、叀いバヌゞョンのほずんどすべおのラむブラリには少なくずも1぀の脆匱性がありたす。 それらを曎新しおいない堎合、サむトが非垞に叀い堎合は、それを確認するこずをお勧めしたす。







そしお、そのようなパッケヌゞに泚目したしょうbabelcli、jquery.js、mangose、gruntcli、D3.js。 少なくずも䞀床はこれらのパッケヌゞを䜿甚したこずがあるず思いたす。 そしお、これらのパッケヌゞは実際にはbabel-cli、jquery、mangoose、grunt-cli、D3ず呌ばれおいたす。 これは、npm-感染パッケヌゞに最近珟れた倧きな問題です。 攻撃者ずしお、私たちはnpmを盎接操䜜したす。 人気のあるパッケヌゞを探しお、タむプミスをしお、npmで再び埋めるず、人は圌の蚘憶に頌っお、マンゎヌスを1぀の「o」で振り、それを圌のプロゞェクトに持っお行きたす。通知。 これらはたったく同じように機胜したすが、環境倉数はポストむンストヌルCookieで盗たれたす。 NPMはこの問題を非垞に心配しおいたす。 圌はこれらのパッケヌゞを怜玢し、ダりングレヌドし、「0.0.1-security」ず呌びたす。そのため、珟圚パッケヌゞを完党に削陀するこずはできず、残りはreadmeずpackage.jsonのみです。 パッケヌゞをアップグレヌドするず、この問題が発生したすが、そうでない堎合は、環境倉数が盗たれたす。







誰がこれを鈍らせるこずができるず思うなら、ここに䟋がありたす。 私は最近npmリポゞトリに行き、間違ったマングヌスを入力し、その日はさらに21人が退屈しおいるこずがわかりたした。 1か月あたり464人なので、動䜜したす。







私たちのすべおの友人は圌らの敵であるこずがわかりたす。 オフラむンモヌドを維持するには、より倚くのデヌタが必芁になるため、クラむアントに栌玍するデヌタはたすたす増えおいたす。 倚くの堎合、これは䜕らかのセキュリティデヌタになる可胜性がありたすが、それを盗むこずも、䜕らかの分析です。 そしお、デヌタは私たちず戊っおいたす。 䞀郚のパッケヌゞに脆匱性があるNPMは、アプリケヌションに察する脅嚁です。 Reduxの䟋であるサヌバヌレンダリングが誀っお䜿甚されおいたす-これは脆匱性です。







進歩も止たっおおらず、胜力は成長しおいたす。これは、攻撃者にずっお興味深い可胜性がありたす。







単䞀ペヌゞアプリケヌションは、アプリケヌションを䜜成するための優れたアプロヌチです。次に、人々がどのように䜿甚するかを考えおみたしょう。 午前䞭にこのアプリケヌションをダりンロヌドしたしたが、倕方たで再起動したせん。䜕もありたせん。 そしお、どこかに脆匱性があれば、それは終日機胜し、SPAでスクリプトを終日提瀺したした。 SPAを蚭蚈するずきは、さらに泚意を払う必芁がありたす。







キャッシュも私たちず察戊したす。 ミスをしお、圌らから報告され、修正したしたが、サヌビスワヌカヌを誀っお蚭定し、キャッシュを䜿甚しお䜜業を誀っお蚭定したした。 たた、ナヌザヌのキャッシュでは、このスクリプトは匕き続き機胜したすが、この脆匱性はただしばらく残っおいたす。これも問題です。







䜕人がService Workerを䜿甚したしたか ほんの䞀幎半前、私はこれを䜕か新しいこずずしお話したした。 これで、アプリケヌションにService Workerがない堎合、それだけで、リアクティブではなく、プログレッシブではありたせん。 これで、すべおのアプリケヌションに存圚するはずです。







面癜い話をしたす。 私はグヌグルず友達の猫プログラマヌをググリングし始めたした。 圌は非垞にうたくプログラムしおいるので、私はこのgifが本圓に奜きだったので、参照ずしおアプリケヌションに挿入したした。 それは矎しく描かれ、私はそれを忘れお、仕事を続けたした。 しばらくしお、Service Workerのない開発したアプリケヌションで、䞀郚のWorkerがこのドメむンでスピンを開始し、絶えずスピンしおいるこずに気付きたした。 圌はどこから来たの この写真のヘッダヌず応答を分析するず、「Original-Trial」ず「Link」ずいう2぀の興味深い行が衚瀺されたす。















Original-Trial



は、原則ずしお、Googleが実隓技術を䜿甚するための鍵です。 さらに、ナヌザヌの知識がなくおもそれらを䜿甚できたす。 この提案は、フォントず画像の読み蟌みを最適化するために、Service WorkerのForeign Fetchず呌ばれたす。 たた、このService Workerはリンクからむンストヌルできたす。 むンストヌルされ、知らないうちにクロスオリゞンリク゚ストを行うこずができたす。 なに 私は誰も私のアプリケヌションに招埅したせんでした







䜿甚方法Service Workerは、60秒間誰もアクセスしないずフェヌドアりトするように調敎されおいたす。 完党ではありたせんが、プッシュ通知をリッスンするためにサブプロセスのどこかでハングしたすが、原則ずしおは機胜したせん。このService Workerに50秒ごずにメッセヌゞを送信するず、垞に機胜したす。 たたは、別のアプロヌチです。オンラむンにアクセスしお、そこからService Workerのたったく同じコピヌを取埗できたす。これも機胜し、毎分新しいものをダりンロヌドしたす。 これは䜕に䜿甚できたすか そうです、マむニング。 私たちの知識がなければ、バックグラりンドで、垞に動䜜しおいるサヌビスワヌカヌがハングしたす。 この脆匱性は、Chromeの最倧3぀のバヌゞョンで続きたした。 私は䜕に぀ながっおいたすか。 テクノロゞヌは非垞に高速に開発されおおり、適切なチェックなしで非垞に迅速に本番環境に移行するため、それらを䜿甚するのは怖いです。







これに察凊する方法は 戊う方法。 たずえば、マむニングで これらのあいたいな操䜜をすべお远跡しおブロックするような拡匵機胜を配眮できたす。 しかし、圌らが本圓に私たちを助けお助けおくれたなら、次の章は「拡匵は私たちの敵でもある」ずは思えなかったでしょう。 私たちの倚くは広告ブロッカヌを䜿甚しおいたす。 AdBlocker、uBlock、AdGuardなど。 そしお、実際にどのように機胜するかを考えおみたしょう。 コンテンツをアップロヌドするず、これらのブロッカヌはHTML党䜓を登り、そこに広告を含むブロックを非衚瀺にしたす。぀たり、DOMでブロックから隠せず、どこにでも登るこずができたす。 次に、ブラックリストにあるいく぀かのリ゜ヌスからのダりンロヌドをブロックしたす。぀たり、応答ずしおコンテンツセキュリティポリシヌオブゞェクトにアクセスできたす。 その埌、応答自䜓にアクセスしたす。 圌らは応答から盎接広告を含む郚分を切り取るこずができたす。 ぀たり、原則ずしお、すべおが拡匵機胜で利甚可胜です。 しかし、これらの拡匵機胜が誰かの悪い手に枡るずどうなるでしょうか







ここにあなたのための本圓の物語がありたす。 Sergey、Chrome甚の非垞に人気のあるXMLビュヌアヌ拡匵機胜の䜜成者100,000ナヌザヌ















圌はこの物語を共有し、あなたに䌝えるこずを蚱したした。 ひずたび圌に来お、良いお金を提䟛しおくれたした。特別なメタ情報が远加され、ナヌザヌがどこから来たのかを知るこずができるようにリンクを修正する必芁がありたした。 原則ずしお、良いお金、なぜ、無害な修正...そしお、圌がこれらの人々にコヌドを提䟛するずすぐに、拡匵機胜ですべおのリク゚ストを远跡するリク゚ストに䜕らかのスニペットが珟れるずいう苊情がすぐに始たりたした。 この䟋は、これらの拡匵機胜をどれだけ信頌できるかを瀺しおいたす。 結局のずころ、圌らは䜕でも盗むこずができ、䜕でも修正するこずができたす。 もちろん、Sergeyはこの問題を非垞に迅速に修正し、ロヌルバックしたしたが、これは非垞に明らかな話です。 ブラりザのアプリケヌションにある拡匵機胜を信頌しおいたすか







これらの脆匱性にどのように察凊したすか 拡匵機胜が少し怖い堎合は、ナヌザヌを助けたしょう。 どの拡匵機胜がブラりザにあるかをアプリケヌションから刀断できたす。 そしお、これらの拡匵機胜がアプリケヌションに特に害を及がすこずが確実にわかっおいる堎合、それらを識別するこずができたす。 各拡匵子には䞀意のIDがあり、サむトで盎接確認できたす。 さらに、この拡匵機胜のマニフェストを調べお、アプリケヌションから盎接ダりンロヌドできるオヌプンリ゜ヌスがあるこずを確認できたす。















AdBlockの䟋で、これはある皮のカスタムCSSであるずしたしょう。 URLを䜜成し、通垞の方法でロヌドしようずしたす。このリ゜ヌスがロヌドされおいる堎合、拡匵機胜はそれだけの䟡倀がありたす。 ポップアップを衚瀺したす。 そこにひどいものがある堎合は、より速く削陀しおください。そうしないず、すべおが盗たれたす。 ナヌザヌを支揎したす。費甚はかかりたせん。わずか3行のコヌドです。







キャプテンのアドバむス必芁がなければ、ナヌザヌからスクリプトを挿入したり、コメントを挿入したり、タグや属性、スタむルを挿入したり、䜕も挿入したりしないでください。 きれいなコヌドで䜜業したす。 それでもこのような必芁性がある堎合は、フォヌムで自分自身を保護しおください。これらの5文字を​​゚スケヌプするだけで、少なくずも1぀のスクリプトがクラむアントで実行されるこずはありたせん。 5文字は非垞に簡単です。















ただ消毒する必芁がありたす。 原則ずしお、私自身がいく぀かのコヌドを曞くこずができるず思われる堎合、ここに危険なタグのおおよそのリスト、あなたが消毒する必芁がある属性がありたす。















それらの倚くがありたす、私たちはすでに倚くのこずを忘れたした、知りたせん、しかし、それらの倚くがありたす。 十分にテストされたタヌンキヌ゜リュヌションを䜿甚したす。 最も人気のあるHTMLサニタむザヌであるjs-xssもDOMPurifyであり、非垞に人気のあるラむブラリです。 これらは非垞に軜量で、優れたテストが行​​われ、絶えず曎新されたす、コミュニティがサポヌトしおいたす。 たた、オブゞェクトを調べおこれらの点を芋぀けるためにserialize-javascriptがありたす。このラむブラリを䜿甚するず、Reduxの問題を非垞に簡単に解決できたす。







Content-Security-Policy-応答の特別なヘッダヌを䜿甚したす。これは、リ゜ヌスをペヌゞにダりンロヌドするルヌルを蚘述するメタタグずしお䜿甚できたす。 このドメむンから出荷したいず蚀いたす。 スクリプトをロヌドし、ロヌドしたす。攻撃者が自分のドメむンから䜕か他のものをプルしようずするず、これは機胜せず、゚ラヌメッセヌゞが衚瀺され、ブロックされたす。 ドキュメントの詳现は説明したせん。自分ですべおを読むこずができたす。写真のルヌル、スタむル、iframeの操䜜、スクリプトのルヌルに぀いお説明できたす。さたざたな蚭定がありたす。 2番目のバヌゞョンに登堎した新しいチップに぀いお詳しく説明したいず思いたす。 このnonce



は、サヌバヌ偎で生成され、すべおのスクリプトに远加される行です。 ぀たり、攻撃者は䜕らかのスクリプトを挿入したしたが、このナンスは毎回新しいため、スクリプトも実行されたせん。

たたは、2番目の方法-すべおのむンラむンスクリプトのハッシュ和を単玔に蚈算できたす。 このハッシュ量を知っおいるず、スクリプトが突然倉曎されたり、少なくずも1぀のスペヌスが远加されたり、スクリプトの順序が倉曎されたりするず、すべおが実行されず、安党になりたす。















このような゚ラヌメッセヌゞ、開発モヌドがほが衚瀺されたす。 本番では、統蚈を収集したいので、これはあたり䜿甚されたせん。 Content-Security-Policyでは、レポヌトを収集するこずもできたす。 特別なreport-uri



属性により、レポヌトを送信する゚ンドポむントを指定できたす。 Content-Security-Policyの実装をすぐに恐れおいる堎合、これは合理的です。いく぀かの重芁なスクリプトをブロックできるため、本番環境では怖いです。 それらをレポヌト専甚モヌドで接続できたす。ルヌルはたったく同じように機胜したすが、レポヌトはほが同じ圢匏で送信されたす。ブロックされたもの、ブロックされた理由、ルヌル。















Content-Security-Policyは、䞊からあなたを救いたす。぀たり、あなたのコヌドに䟝存せず、ブラりザレベルでもう少し高いレベルで自分自身を保護したす。 叀いブラりザでは、Content-Security-Policyはサポヌトされおいないため、他のヘッダヌを知る必芁がありたす。このリストにあるものよりもはるかに倚くのものがありたす。















぀たり、リク゚ストでのみ送信されるドキュメントからアクセスできないように、Cookieを保存しないでください。 叀いブラりザでさたざたな保護をサポヌトするには、埌で読み、それらを芚えおおいおください。 私たちは開発偎から身を守ろうずしおいたすが、本番環境では䜕をすべきでしょうか この保護を自動化するツヌルが必芁です。







そのようなサむトおよび組織OWASPOpen Web Application Security Projectがありたす。 䜕かをグヌグルで怜玢し始めたら、間違いなくそこにたどり着きたす。すべおの脆匱性に関するすべおの関連情報ず統蚈が収集されたす。 そしお、もしそこにいなくおも、ツヌルの䜿甚に関するアドバむスを求めおいるように思えたす。 したがっお、このサむトにアクセスするず、4幎前のリリヌスである2013幎にダりンロヌドするためのリンクが衚瀺されたす。 䜿甚したすか おそらくない。 2006幎のもう1぀のヒントです。 これはおそらく、Samy Kamkarがハッキングしたずきに起こり、このツヌルが登堎したした。 ぀たり、そこには賢明なこずは䜕もありたせん。 ほずんどのツヌルはWindowsでも動䜜したす。 しかし、最も興味深いのは、そのようにトゥヌラが必芁ないこずです。 CIに埋め蟌みたいず思いたす。 䌁業向けの最も人気のあるCIの1぀はJenkinsです。䟋を挙げたす。 逆説的に聞こえるかもしれたせんが、本圓に䟡倀のある補品の1぀はOWASP自䜓の補品です。䜕らかの理由で他の補品ほどPRされおいたせんが、それをサポヌトしおいたす。 ZAPアプリケヌションプロキシは次のように機胜したす。 Jenkinsの私たちは、このアプリケヌションプロキシを参照する必芁がありたす。 テストモヌドでは、このプロキシはアプリケヌションをテストできたす。 圌はどのようにそれをしたすか 圌は単にアプリケヌションを取埗し、すべおの入力を匷制的に開始し、すべおを連続しお挿入し、挿入されたもの、リブヌトされたもの、発生方法に関するレポヌトを収集し、さたざたな圢匏でレポヌトを送信したす。 さらに、長期的に分析を収集するには、レポヌトを䜜成するためにZAPプラグむンず䜕らかのプラグむンが必芁になりたす。 トレンドなどを構築したす。 マむナス面のうち、特にフロント゚ンド開発者にずっおは、Jenkins CIにプロキシサヌバヌをむンストヌルするこずは非垞に困難であり、アプリケヌションがそれを介しお機胜する堎合はさらに難しいこずがわかりたす。 パフォヌマンスが䜎䞋する可胜性がありたすが、゜リュヌションは最も簡単ではありたせん。 しかし、楜しみのために、ロヌカルにむンストヌルしおサむトをテストできたす。 holyjs-moscow.ruで遊んだこずがありたす。このサむトでは、原則ずしお、単䞀の入力はなく、砎壊するものは䜕もありたせん。 ただし、叀いブラりザの䞀郚のヘッダヌが欠萜しおいるずいういく぀かの掚奚事項がありたす。 ぀たり、ドメむンずこのサむトを䜕らかの圢で統合した堎合、マむニングに䜿甚できたす。















次のツヌルはArachniで、同様の原理で機胜したす。 Jenkinsから、デプロむされたテスト環境のURLを参照し、このArachniに枡す必芁がありたす。 Arachniには優れたCLIがあり、同じこずを行い、アプリケヌションで遊んで、レポヌトを生成したす。 䜿甚する方が䟿利で、軜量で、実装も非垞に簡単です。 さらに、レポヌトの結果を分析し、ビルドを倱敗たたは成功ずしおマヌクするためのText Finderプラグむン、および長期的に分析するための別のプラグむンが必芁です。







しかし、これはすべお動的なチェックです。 コヌドを蚘述し、展開し、チェックしたしたが、すでに䜕か間違ったこずを曞いおいるこずを䜕らかの圢で理解する必芁がありたす。぀たり、静的分析甚の䜕らかのツヌルを含める必芁がありたす。 Googleでグヌグルを開始するず、あるモヌドのCheckmarx、Veracode、SonarQubeが最初の行に衚瀺されたす-高䟡なツヌル、䌁業にずっおは、さらに高䟡です。 2018 , JavaScript , ECMAScript, TypeScript, JSX, - - . ? いや , . ESLint – . Security , , . CI .







, ? , , node-? — Node Security Platform, npm ( npm install nsp



) npm check



– . , , . , . , CI . — , package.json, , , , . , , , Snyk, . npm, , package.json, . , . Snyk , . Lighthouse, Canary, . , , dev tool, , , , , , , . Snyk GitHub, Dependency graph , , . .







, . . , . , . , - .







. , - , .







node_modules, , . Content-Security-Policy, (ESLint).















広告の分。 おそらくご存知のように、䌚議を行っおいたす。 JavaScript — HolyJS 2018 Piter , 17-18 2018 . , ( — ), -, . 芁するに、私たちはあなたを埅っおいたす。 .



All Articles