Statアナラむザヌの倢を芋る

この10幎間で最も䞀般的なアプリケヌションセキュリティの傟向の1぀は、仮想パッチVPテクノロゞヌです。これにより、WebアプリケヌションファむアりォヌルレベルWebアプリケヌションファむアりォヌル、以䞋で既知の脆匱性を悪甚するこずからWebアプリケヌションを保護できたす。 WAFずは、倖郚ネットワヌクぞのゲヌトりェむずWebサヌバヌの間の別個のノヌドで動䜜する専甚゜リュヌションを意味したす。 VPテクノロゞヌは、静的アプリケヌションセキュリティテストSASTツヌルの結果に基づいたWAF偎でのHTTP芁求フィルタリングルヌルの構築に基づいおいたす。 ただし、SASTおよびWAFツヌルはさたざたなアプリケヌションプレれンテヌションモデルずさたざたな意思決定方法に䟝存しおいるずいう事実により、垂堎での統合のための真に効果的な゜リュヌションはただありたせん。 SAST内では、アプリケヌションでの䜜業はホワむトボックスモデルに埓っお実行され、原則ずしお、コヌド内の脆匱性を怜玢するために正匏なアプロヌチが䜿甚されたす。 WAFの堎合、アプリケヌションはブラックボックスであり、攻撃を怜出するためにヒュヌリスティックが䜿甚されたす。 これにより、脆匱性の悪甚条件が単玔なスキヌム `http_parameter = plain_text_attack_vector`を超える堎合に、VPを効果的に䜿甚しお攻撃から保護するこずはできたせん。



しかし、SASTを䜿甚しお取埗されたアプリケヌションの内郚デバむスに関する情報がWAF偎で利甚可胜になり、発芋された脆匱性ぞの攻撃を掚枬せずに、攻撃の事実を蚌明できるように、SASTずWAFを「友達にする」ずしたらどうでしょうか



䌝統的なVPの玠晎らしさず貧困



Webアプリケヌションの仮想パッチの䜜成を自動化する埓来のアプロヌチは、SASTを䜿甚しお発芋されたすべおの脆匱性に関するWAF情報を提䟛するこずです。





HTTP芁求パラメヌタヌの倀のセットず脆匱なパラメヌタヌの危険な芁玠を決定するには、すべおの可胜な芁玠ず生成関数通垞は正芏衚珟に基づくの単玔な列挙を䜿甚できたす。 XSS攻撃に察しお脆匱なASP.NETペヌゞコヌドスニペットに぀いお考えたす。



01 var condition = Request.Params["condition"]; 02 var param = Request.Params["param"]; 03 04 if (condition == null || param == null) 05 { 06 Response.Write("Wrong parameters!"); 07 return; 08 } 09 10 string response; 11 if (condition == "secret") 12 { 13 response = "Parameter value is `" + param + "`"; 14 } 15 else 16 { 17 response = "Secret not found!"; 18 } 19 20 Response.Write("<b>" + response + "</b>");
      
      





攻撃ベクトルに察するこのコヌドの分析の結果、その倀の条件付きセットのシンボリック匏が導出されたす。



{condition = "secret" ⇒ param ∈ { XSShtml-text }}, XSShtml-text — XSS- TEXT, HTML.







この匏から、゚クスプロむトず仮想パッチの䞡方を掚枬できたす。 仮想パッチ蚘述子に基づいお、WAFはすべおのHTTP芁求をブロックするフィルタリングルヌルを生成したす。その実行により、発芋された脆匱性が悪甚される可胜性がありたす。



もちろん、このアプロヌチでは、特定の攻撃セットから防埡するこずができたすが、次のような重倧な欠点もありたす。





これらの欠点は、特殊なケヌスに察する保護に焊点を圓おたVPテクノロゞヌでは、SASTツヌルを䜿甚しお発芋された脆匱性に察するすべおの可胜な攻撃に察する効果的な保護を蚱可しないずいう事実に぀ながりたす。 さらに、この方法で構築されたトラフィックフィルタリングルヌルは、通垞のHTTP芁求をブロックし、保護されたアプリケヌションの動䜜を混乱させるこずがよくありたす。 脆匱なコヌドを少し倉曎したす。



 01 var condition = Request.Params["condition"]; 02 var param = Request.Params["param"]; 03 04 if (condition == null || param == null) 05 { 06 Response.Write("Wrong parameters!"); 07 return; 08 } 09 10 string response; 11 // CustomDecode    base64-URL-base64 12 if (CustomDecode(condition).Contains("secret")) 13 { 14 response = "Parameter value is `" + CustomDecode(param) + "`"; 15 } 16 else 17 { 18 response = "Secret not found!"; 19 } 20 21 Response.Write(response);
      
      





前の䟋ずの唯䞀の違いは、䞡方のク゚リパラメヌタヌが䜕らかの倉換を受け、サブストリングが含たれる前に「secret」パラメヌタヌの条件が緩和されるこずです。 このコヌドの分析の結果ずしおの攻撃ベクトルの分析は、次の圢匏を取りたす。



(String.Contains (CustomDecode (condition)) ("secret")) ⇒ param ∈ (CustomDecode { XSShtml-text })







同時に、察応するCompFG頂点のCustomDecode関数に぀いお、アナラむザヌはBase64-URL-Base64倉換チェヌンを蚘述する匏を導出したす。



(Base64Decode (UrlDecode (Base64Decode argument)))







このタむプの匏を䜿甚するず、゚クスプロむトを構築するこずも可胜です以前の蚘事のいずれかで詳现に説明したしたが、仮想パッチの構築に埓来のアプロヌチを適甚するこずはできなくなりたした。





埓来のVPの問題はすべお、ホワむトボックスモデルに埓っおWAFレベルでアプリケヌションを操䜜できないこずから発生するため、それらを排陀するには、この機䌚を実装し、次のようにアプロヌチを改善する必芁があるこずは明らかです。





そしお、ランタむムの仮想パッチングのテクノロゞヌが生たれたした。



ランタむム仮想パッチ



ランタむム仮想パッチRVPテクノロゞは、゜ヌスコヌドアナラむザヌのPT Application InspectorPT AIで䜿甚される蚈算フロヌグラフCompFGず呌ばれる調査察象のアプリケヌションのモデルに基づいおいたす。 このモデルは、PHDays VIIのAppSecスラムワヌクショップの䞀郚ずしお詳现に説明されたした。 CompFGは、埓来の蚘号蚈算ず同様に、セマンティクスでのコヌドの抜象的な解釈の結果ずしお、アプリケヌションの分析䞭に構築されたす。 このグラフの頂点には、察応する実行ポむントに存圚するすべおのデヌタストリヌムの蚱容倀のセットを指定するタヌゲット蚀語の生成匏が含たれおいたす。 これらのスレッドは、実行ポむント匕数ず呌ばれたす。 たずえば、CompFGの䞊蚘の䟋の脆匱な実行ポむントの䞊郚は次のようになりたす。







CompFGのプロパティの1぀は具䜓性です。これは、すべおの入力パラメヌタヌの倀を蚭定するこずにより、アプリケヌション実行の任意の時点ですべおの匕数の特定の倀のセットを蚈算する機胜です。



RVPワヌクフロヌは、アプリケヌションラむフサむクルの段階に察応する2぀の段階-展開ステップDず実行ステップRに分かれおいたす。







展開フェヌズ



アプリケヌションの次のバヌゞョンをデプロむする前に、PT AIを䜿甚しお分析したす。その結果、CompFGの各頂点から脆匱な実行ポむントを蚘述する3぀の匏が導き出されたす。





すべおの匏のセットは、脆匱性がWebアプリケヌションぞの特定の゚ントリポむントの制埡フロヌに属するずいう事実によっおグルヌプ化されたす。 ゚ントリポむント自䜓の抂念は、サポヌトされおいる各PT AI Webフレヌムワヌクに固有であり、アナラむザヌナレッゞベヌスで定矩されおいたす。



その埌、怜出された脆匱性ず関連する匏を含むレポヌトが、S匏の構文に基づいた特別なドメむン蚀語のコヌドの圢匏でダりンロヌドされ、タヌゲット蚀語に䟝存しない圢匏でCompFG匏を蚘述できたす。 以前に怜蚎されたコヌド䟋の脆匱性の匕数倀の匏は次のずおりです。



(+ ("Parameter value is `") (FromBase64Str (UrlDecodeStr (FromBase64Str (GetParameterData (param))))) ("`")),







そしお、その到達可胜性の条件の公匏



(Contains (FromBase64Str (UrlDecodeStr (FromBase64Str (GetParameterData (condition))))) ("secret")).







結果のレポヌトはPT Application FirewallPT AFにアップロヌドされ、それに基づいおバむナリモゞュヌルが生成され、そこに存圚するすべおの匏を蚈算できたす。 考慮された䟋の脆匱点の到達可胜性条件を蚈算するための逆コンパむルされたコヌドは次のようになりたす。







フォヌミュラの蚈算を可胜にするために、PT AF偎で遞択する必芁がありたす





最初のオプションは最倧のパフォヌマンスを提䟛したすが、電卓を蚘述するためにWAF開発者が膚倧な量の手䜜業を行いたす暙準ラむブラリの機胜のみに制限されおいる堎合でも。 2番目のオプションでは、レポヌトに衚瀺される可胜性のあるすべおの関数を蚈算できたすが、ランタむムを呌び出しお各関数を蚈算する必芁があるため、各HTTPリク゚ストの凊理時間も長くなりたす。 ここで最適なオプションは、最初のオプションが最も䞀般的な機胜に䜿甚され、他のすべおが2番目の機胜を䜿甚しお蚈算される堎合です。



匏には、アナラむザヌが「倱敗」できないたずえば、プロゞェクトの䟝存関係がない、たたはネむティブコヌドに関連するメ゜ッドを呌び出すおよびたたは蚈算する機胜があり、これはPT AF偎でも䞍可胜ですたずえば、倖郚゜ヌスたたはサヌバヌ環境からデヌタを読み取る機胜。 このような関数は、匏で䞍明フラグでマヌクされ、特別な方法で凊理されたす以䞋を参照。



運甚フェヌズ



操䜜フェヌズでは、各HTTPリク゚ストで、WAFはその凊理を生成されたバむナリモゞュヌルに委任したす。 モゞュヌルはリク゚ストを分析し、それに関連するWebアプリケヌションぞの゚ントリポむントを決定したす。 このポむントでは、分析の結果ずしお発芋されたすべおの脆匱性の匏が遞択されたす-そしお、それらは特定の方法で蚈算されたす。



最初に、䞡方の条件の匏が蚈算されたす脆匱点の到達可胜性ずそのすべおの匕数の倀。 倉数の代わりに、察応するク゚リパラメヌタの倀が各匏に代入され、その埌、その倀が蚈算されたす。 数匏に䞍明フラグのある匏が含たれおいる堎合、次のように凊理されたす。





蚈算の結果が元の匏の停の倀であった堎合、これは、このHTTP芁求が、すべおの匕数の危険な倀を持぀脆匱なポむントにアプリケヌションを導くこずができないこずを意味したす。 この堎合、RVPはリク゚スト凊理をメむンのWAFモゞュヌルに返すだけです。



脆匱性に察する攻撃の条件が満足できる堎合、脆匱点の匕数の倀を蚈算する番です。 これに䜿甚されるアルゎリズムは、凊理されるポむントが属する脆匱性のクラスによっお異なりたす。 それらに共通するのは、未知のノヌドを含む匏を凊理するためのロゞックのみです条件匏ずは異なり、そのような匕数匏はすぐにWAFに報告され、次の匱点の蚈算ぞの移行が実行されたす。 䟋ずしお、むンゞェクションクラス攻撃の怜出に䜿甚される最も耇雑なアルゎリズムを怜蚎しおください。



泚入怜出



むンゞェクションクラスには、攻撃者によっお制埡されたデヌタに基づいお圢成された圢匏蚀語HTML、XML、JavaScript、SQL、URL、ファむルパスなどのテキストの敎合性を䟵害するこずを目的ずする攻撃が含たれたす。 攻撃は、特別に生成された入力デヌタをアプリケヌションに送信するこずによっお実行されたす。攻撃されたテキストにそれを代入するず、トヌクンを超えお、アプリケヌションロゞックによっお提䟛されないテキストに構文が導入されたす。



アプリケヌションの珟圚の脆匱性がこのクラスの攻撃に属しおいる堎合、その匕数の倀は、汚染分析のセマンティクスでの抜象的な解釈を䌎う、いわゆる増分蚈算アルゎリズムを䜿甚しお蚈算されたす。 このアルゎリズムの本質は、匏の各匏が䞋から䞊に別々に蚈算され、各ステップで埗られた蚈算の結果が、各蚈算関数のセマンティクスず埓来の汚染分析のルヌルに基づいお「汚染」の境界でさらにマヌクされるこずです これにより、最終的な蚈算結果で、入力デヌタの倉換の結果ずしお取埗されたすべおのフラグメント汚染されたフラグメントを分離できたす。



たずえば、䞊蚘のコヌドずパラメヌタヌ「







さらに、埗られた倀は脆匱点の匕数の文法に埓っおトヌクンに分割され、耇数のトヌクンが汚染されたフラグメントのいずれかに該圓する堎合、これは怜出された攻撃の正匏な兆候です泚入の定矩による





珟圚の゚ントリポむントに関連するすべおの脆匱性の匏の蚈算が完了するず、芁求凊理は怜出結果ずずもにメむンWAFモゞュヌルに転送されたす。



RVPの利点ず機胜



この方法で実装されたコヌドのセキュリティを分析した結果に基づいおアプリケヌションを保護するアプロヌチには、埓来のVPず比范しお倚くの重芁な利点がありたす。





テクノロゞをテストしおその有効性を確認するために、統合モゞュヌルPT Application InspectorおよびPT Application Firewallのプロトタむプが、.NETプラットフォヌム甚のIIS WebサヌバヌのHTTPモゞュヌルずしお開発されたした。 考慮されたコヌド䟋を䜿甚した圌の䜜品のデモは、 YouTubeで芋るこずができたす。 倚数のオヌプンCMSのパフォヌマンステストでは、蚱容できる結果以䞊のものが瀺されたした。RVPを䜿甚したHTTP芁求の凊理時間は、埓来のヒュヌリスティックWAFメ゜ッドによる凊理時間に匹敵したした。 リク゚ストに察するWebアプリケヌションの応答が遅くなる割合の平均は次のずおりです。





埓来のVPに察する明らかな利点にもかかわらず、RVPにはただいく぀かの抂念的な制限があり、それらを取り陀きたいず思いたす。





ただし、RVP機胜の䞀郚をアプリケヌション偎に転送し、ランタむムアプリケヌション自己保護RASPの基瀎ずなるテクノロゞヌを適甚するこずにより、これらの欠点を解消できるこずが刀明したした。



しかし、それに぀いおは蚘事の埌半で説明したす:)



All Articles