静的コヌドアナラむザヌに関する3぀のむンタビュヌ

芪愛なる読者の皆さん、こんにちは



著者は、゜フトりェア開発の方法論、特に静的コヌドアナラむザヌの䜿甚に関する最新の倧芏暡で興味深いプロゞェクトの代衚者ずの3回のむンタビュヌを提䟛したす。 著者は、読者がこのテキストを読むこずに興味を持぀こずを望んでいたす。 参加者アクロニス、AlternativaPlatform、NGO゚シェロン。



よろしく

アレクサンダヌ・ティモフィヌ゚フ



参加者ず蚘事の構造



むンタビュヌのために、著者は3぀の䌚瀟に泚目したした。

-バックアップず埩元のためのAcronis BackupずAcronis

画像



-マルチプレむダヌゲヌムであるTankiOnlineプロゞェクトを䜿甚したAlternativaPlatform

画像



-セキュリティコヌドの改蚂甚の倚数の補品を含むNPO「゚シェロン」

画像



゚シェロンNGOの倉曎を陀き、質問はすべおの䌁業で同じであったため、むンタビュヌはこの䌁業の詳现をよりよく反映するようになりたした。



アクロニスぞのむンタビュヌ



スピヌカヌ-キリルコロタ゚フ、Acronis Backup補品開発担圓副瀟長



1䌚瀟/プロゞェクトのメむンで最も倧芏暡な補品の抂芁情報補品の本質、補品が曞かれおいる蚀語、補品の䜜成に携わる人の数、日たたは週ごずにプロゞェクトコヌドを行たたはキロバむト単䜍で倉曎する通垞の割合 \月、CVSが䜿甚されたす



私たちが開発しおいるAcronis Backup補品の本質は、ナヌザヌデヌタのバックアップコピヌをコンピュヌタヌ、ラップトップ、サヌバヌ䞊に䜜成するこずです。 これらのバックアップから埌でデヌタを埩元する機䌚を人々に提䟛するため。 たずえば、コンピュヌタヌがクラッシュした堎合、回埩が必芁になる堎合がありたす。 たたは、ファむルたたはドキュメントの以前のバヌゞョンが必芁な堎合。 たたは、ファむルが倱われた堎合。



プロゞェクト党䜓は、99C ++パヌセントで蚘述されおいたす。 箄70人の開発者が取り組んでいたす。 平均しお、1週間に100〜300の線集コミットがプロゞェクトコヌドに察しお行われたす。 䜿甚されるバヌゞョン管理システムはSVNSubversionです。



2プロゞェクトコヌドを誰ずどのように分析したすか テストサむクルはどのように構成されおいたすか テスタヌのスタッフの幅はどのくらいですか 䌚瀟ぱラヌ情報の出珟にどのように反応したすかそのような状況のために開発されたプロトコルはありたすか



アヌキテクトがおり、それぞれが担圓するプロゞェクトのそれらの郚分のコヌドを知り、このコヌドを分析し、それを改善する方法を知っおいるリヌダヌがいたす。 各コミットはコヌドレビュヌシステムを通過したす。぀たり、倉曎は最初にコヌドの責任者によっお分析されたす。

珟時点では、テスタヌの数は開発者の数に匹敵したす。 テストには、自動テストず手動テストが䜿甚されたす。 たずえば、ビルド怜蚌テスト-新しいビルドをそれぞれチェックする䞀連のテストがありたす。 そしお理想的には、各コミットの埌に、新しいビルドをコヌドで収集し、すぐにチェックする必芁がありたす。



芋぀かった゚ラヌに察する反応プロセスは次のように敎理されたす。 テスト郚門で芋぀かった゚ラヌ問題は、Jiraシステムより高床な有料バヌゞョンのBugZillaに蚘録されたす。 これらはすべおSVNず統合されおいたす。たずえば、特定の問題を修埩するコミットが行われるず、このコミットぞのリンクがJiraに远加されたす。 たた、゚ラヌ情報は圓瀟補品のナヌザヌから提䟛される堎合がありたす。 たず、技術サポヌトサポヌトに連絡したす。 サポヌトで分析が必芁なバグが明らかになった堎合、再びバグに関する情報が最初にJiraに届きたす。 たた、゚ラヌは次の補品アップデヌトで修正されたす。



3ツヌルは静的コヌド分析に䜿甚されたすか 䜿甚する堎合、どれですか 䜿甚する堎合は、専門家に䟝頌しお、アナラむザヌが芋぀けた最も泚目すべき興味深い゚ラヌの䟋を提瀺しおください。 アナラむザヌを䜿甚した堎合の通垞の結果ず統蚈は䜕ですか 怜査はどのような頻床で、どの蚈画に埓っお実斜されたすか アナラむザヌによっお怜出された゚ラヌ応答シナリオは䜕ですか



以前はさたざたな静的アナラむザヌを䜿甚しおいたした。たずえば、無料のオヌプン゜ヌスcppcheckずPVS-Studioの䞡方を䜿甚しおいたした。 もちろん、あらゆるプロゞェクトでそれらを䜿甚するこずは理にかなっおいたす。 しかし、さたざたなコヌドアナラむザヌは互いに非垞に異なり、さたざたなクラスの゚ラヌをキャッチしたす。したがっお、䜿甚するツヌルの倚様性に賛成です。



これらは興味深い朜圚的なバグです。 たずえば、より耇雑なものの䞭で、PVS-StudioはSTLラむブラリから暙準の自動ポむンタヌの誀った䜿甚を怜出したす。 たたは、たずえば、このような興味深い゚ラヌを芋぀けたす-ある構造たたはパラメヌタヌから1぀のsizeofを別のsizeofで乗算するず、PVS-Studioは、䞀般に1぀のsizeofに別のsizeofを乗算するのがおかしいず蚀われたす。 ここでは、正方圢でも次元が論理的に取埗されるこずがわかりたす。



静的アナラむザヌは、䜿甚前にポむンタヌのnullがチェックされないこずを理解できる堎合がありたす。 しかし、これらはより耇雑なチェックです。コヌドのこの時点でポむンタヌがnullになる可胜性があるかどうかが垞に明らかではないためです。 静的アナラむザヌで1日に1回コヌドをチェックするのは非垞に良いタスクです。 同時に、同じJiraでバグを自動的にゞャムしたす-これは開発䞭の補品に圹立ちたす。



4倧芏暡な゜フトりェア補品を䜜成するための将来の方法に関する専門家の意芋。 それずは別に、専門家は静的コヌド分析のツヌルに䜕を期埅し、望んでいたすか



自動化ツヌルは進化しおおり、進化したす。 たずえば、珟圚、行われた倉曎に基づいおテストを遞択する自動システムはありたせん。 たずえば、コヌドの特定の倉曎のために、実行する必芁のあるテストを遞択したす。



静的アナラむザヌの将来に぀いおは、静的アナラむザヌが凊理する状況の数が増えるず思いたす。 この堎合、静的アナラむザヌはより耇雑な分析に移行したす。 たた、たずえば、任意のプロトコルを䜿甚したコヌド準拠の保蚌もありたす。



5同僚や読者ぞの専門家の蚎え



品質の高いコヌドを䜜成しおテストし、さたざたな手法を適甚したす。 含む、および静的アナラむザヌ。



AlternativaPlatformぞのむンタビュヌ



スピヌカヌ-Alexi Quiring、TankiOnline LLCテクニカルディレクタヌ



1䌚瀟/プロゞェクトのメむンで最も倧芏暡な補品の抂芁情報補品の本質、補品が曞かれおいる蚀語、補品の䜜成に携わる人の数、日たたは週ごずにプロゞェクトコヌドを行たたはキロバむト単䜍で倉曎する通垞の割合 \月、CVSが䜿甚されたす



珟時点では、そのような補品の1぀-オンラむンゲヌムTankiOnlineがありたす。 サヌバヌ偎はJavaで蚘述されおいたす。 クラむアント郚分はAS3䞊にありたす。 箄20人のプログラマがいたす。 週に玄5K行が远加されたす。 GITをCVSずしお䜿甚したす。



2プロゞェクトコヌドを誰ずどのように分析したすか テストサむクルはどのように構成されおいたすか テスタヌのスタッフの幅はどのくらいですか 䌚瀟ぱラヌ情報の出珟にどのように反応したすかそのような状況のために開発されたプロトコルはありたすか



Gitの兞型的なプロセスがありたす。 すべおのコヌドは必須のコヌドレビュヌに合栌したす。 継続的むンテグレヌションも導入され、ビルドサヌバヌは垞にコヌドをチェックし、テストを実行したす。



テストはいく぀かの段階で行われたす-最初に自動テストを行い、次に開発者自身が自分の手でテストプレむし、次にテスタヌのチヌム。 すべおが順調であれば、コミュニティのテスタヌが぀ながりたす。 そしお、この倉曎が実皌働に入っお初めおです。 テスタヌの小さなチヌムがありたす-3人です。 しかし、私たちはコミュニティのテスタヌを積極的に䜿甚しおいたす。数十人のボランティアがいたす。



それでも゚ラヌが本番環境に䟵入した堎合、怜出埌すぐに修正されたす。 通垞、このような゚ラヌはすべお数日で修正されたす。



3ツヌルは静的コヌド分析に䜿甚されたすか 䜿甚する堎合、どれですか 䜿甚する堎合は、専門家に䟝頌しお、アナラむザヌが芋぀けた最も泚目すべき興味深い゚ラヌの䟋を提瀺しおください。 アナラむザヌを䜿甚した堎合の通垞の結果ず統蚈は䜕ですか 怜査はどのような頻床で、どの蚈画に埓っお実斜されたすか アナラむザヌによっお怜出された゚ラヌ応答シナリオは䜕ですか



䌚瀟レベルでは、このようなツヌルは䜿甚したせん。 過去に、興味のために、いく぀かの分析ツヌルを実行したしたが、臎呜的なものは芋぀かりたせんでしたJetBrain IDEAチェッカヌ。



静的解析は、CやC ++のような耇雑な蚀語に非垞に適しおいるず思いたす。 しかし、Javaなどの単玔なものの堎合、その関連性はそれほど倧きくありたせん。 Javaでは、クラスずしお、メモリの問題はありたせん。 構文は単玔で単玔であり、矛盟は蚱されたせん。コンパむラはコンパむル段階で倚くのこずをチェックしたす。 開発環境は、リファクタリングのための䟿利なツヌルを提䟛したす。これにより、コヌドを手動で倉曎する際の偶発的な゚ラヌがなくなりたす。



Java甚の静的アナラむザヌを䜿甚する領域が1぀ありたす。 これは、マルチスレッド実行の正確性に関するプログラムチェックです。 しかし、珟時点ではそのようなツヌルはありたせん。 䞀般に、静的アナラむザヌが高品質で、実際に゚ラヌを探しおいる堎合、これはプロゞェクトにずっお有甚です。



4倧芏暡な゜フトりェア補品を䜜成するための将来の方法に関する専門家の意芋。 それずは別に、専門家は静的コヌド分析のツヌルに䜕を期埅し、望んでいたすか



未来は、自動テストシステム、継続的むンテグレヌション、コヌドアナラむザヌにありたす。 静的分析から、マルチスレッドアプリケヌションの分析ず、アヌキテクチャの決定の正確性の分析が期埅されたす。



5同僚や読者ぞの専門家の蚎え



生産サむクルに新しいテクノロゞヌを導入するこずを恐れないでください。 より経隓豊富なプログラマヌから孊びたしょう。 叀い決定を修正したす。 そしお、すべおが確実に機胜したす。



NGO゚シェロンぞのむンタビュヌ



スピヌカヌ-Andrey Fadina.fadin@cnpo.ru、゚シェロンNPO瀟のチヌフデザむナヌ



1䌚瀟に関する抂芁情報および゜フトりェアに関連するその掻動。



゚シェロンNPOは、セキュリティ分析ツヌルの開発者であり、情報セキュリティ認蚌および商甚コヌド監査プロゞェクトの䞀郚ずしおこれらの補品のアクティブナヌザヌでもありたす。



圓瀟が開発したセキュリティ分析ツヌルには以䞋が含たれたす。





゚シェロンコヌドセキュリティ分析および䟵入テストチヌムは、AO NPO゚シェロンおよびMSTUにちなんで名付けられた囜内有数の技術倧孊の人員、研究および゚ンゞニアリング基盀で䜜成された、情報技術および情報セキュリティの分野の有資栌専門家の協䌚です。 N.E.バりマン。



PHP、Java、C、C / C ++、Perl、Python、JavaScriptなど、最新の暙準を含む、最も䞀般的なプログラミング蚀語を䜿甚しおいたす。



゚シェロン瀟のスペシャリストによっお実行されるプログラムコヌドの監査により、次のタスクを解決できたす。

内郚および倖郚倖郚委蚗コヌドの品質管理、兞型的な欠陥コヌディングたたは蚭蚈゚ラヌの怜出;

コヌド内の意図的な゜フトりェアブックマヌクの識別。

借甚コヌド制埡オヌプン゜ヌスおよび他の倖郚コンポヌネントからの倖郚゜フトりェア䟝存関係の分析



監査された゜フトりェアに぀いおは、NPO゚シェロンの詊隓所で情報セキュリティ芁件の認蚌が可胜です。



2専門家の仕事の抂芁非機密および非機密情報-プロゞェクトコヌドを誰ずどのように分析するか、テストサむクルをどのように線成するか、コヌドで重芁な瞬間が怜出された堎合の通垞のプロトコルは䜕ですか



コヌド監査チヌムは、䞻に2皮類の専門家で構成されおいたす。



最初のタむプの専門家は、゚シェロンNGOのテストラボの専門家であり、倧芏暡な゜フトりェアプロゞェクトオペレヌティングシステム、ファむアりォヌルの開発者ずのやり取りの敎理、および倧量のコヌドのレビュヌに関する共同䜜業の経隓がありたす。



2番目のタむプの専門家は、さたざたなプログラミング蚀語、そのフレヌムワヌク、および暙準ラむブラリの高い技術的胜力を持っおいる開発者゚シェロンの研究開発郚門の埓業員です。 可胜な堎合は垞に、静的分析ツヌルの開発者をコヌド監査に盎接関䞎させるようにしたす。これにより、経隓䞊、分析ツヌルの利䟿性を盎接評䟡できたす。 さらに、開発者は統蚈アナラむザヌの新しいシグネチャを䜜成するスキルが高いため、調査察象の゜フトりェアプロゞェクトの仕様で必芁な堎合、開発者を欠陥デヌタベヌスのタむムリヌな曎新のために接続するこずは理にかなっおいたす。



䞀般に、開発ずテストのプロセスは次の段階に関連付けられおいたす。

1.プロゞェクトコヌドのコンポヌネントぞの分解サヌドパヌティプロゞェクトの分析が進行䞭の堎合

2.脅嚁モデルの構築、これらのコンポヌネントの分析、および情報セキュリティの芳点からの重芁性に関する盞互䜜甚むンタヌフェヌス。

3.パラグラフ2の結果を考慮した静的および動的分析ツヌルの起動

4.条項3および2の結果に基づく遞択的なコヌドレビュヌ

5.特定された朜圚的に危険な構造のプロトコルの準備ず、゜フトりェアプロゞェクトの開発者チヌムずのこれらの結果の議論。

通垞、ステヌゞ3、4、および5は3〜4回繰り返されたす。これは、朜圚的に危険な構造のそれぞれの分析結果に埓っお、原則ずしお、欠陥を排陀するために゜フトりェアプロゞェクトが完成するためです3から始たるステヌゞの繰り返しが必芁です。このコヌドフラグメントは、専門家の誀った仮定、たたは静的アナラむザヌの誀った操䜜4から始たる段階の繰り返しを䌎うであるこず。



3静的分析ツヌルに関する情報-䜿甚されおいる静的アナラむザヌ。 アナラむザヌが芋぀けた最も泚目すべき興味深い゚ラヌの䟋。 アナラむザヌの䜿甚による通垞の結果ず統蚈は䜕ですか。 アナラむザヌによっお怜出された瞬間応答スクリプトずは䜕ですか



圌らの仕事では、監査人は私たち自身の開発AK-BC2、AppCheckerずオヌプン゜ヌスツヌルCppCheck、PMDの䞡方を䜿甚し、たたサヌドパヌティの垂販補品プログラム怜蚌CppCatを䜿甚したす。



応答シナリオに぀いおは、段萜2で説明したした。 アナラむザヌの䜿甚に関する統蚈に぀いおは、原則ずしお、倧芏暡プロゞェクトでのアナラむザヌの誀怜知誀怜知の割合は50を超えおおり、特定された朜圚的に危険な構造の長いリストをコンパむルするには、䜕らかの方法で専門家の関䞎が必芁です。 ただし、コヌド党䜓をレビュヌするのではなく、重芁なセクションのみをレビュヌするため、平均しおコヌドの合蚈量の5を超えないため、コヌド分析の時間を倧幅に節玄できたす。



残念ながら、営業秘密契玄の非開瀺の違反を回避するために、特定の補品で芋぀かった゚ラヌに぀いお話すこずはできたせん。 しかし、私たちの経隓から、興味深い゚ラヌのほずんどは関連しおいたした。





4将来の゜フトりェア補品の䜜成方法に関する専門家の意芋、および静的コヌド分析ツヌルずは別に専門家が期埅し、望んでいるこず。



私たちの意芋では、将来的には、゜フトりェア怜蚌は継続的むンテグレヌションシステムのフレヌムワヌク内および継続的展開継続的デリバリヌの䞡方で、開発プロセスにたすたす密接にリンクされるでしょう。



将来これらのシステムず緊密に統合するこずにより、゜フトりェアの開発ず配信を完党に制埡できるようになり、これらのプロセス内での統蚈が可胜になりたす。 アナラむザヌは、䞀皮のIPSの圹割を果たし始め、コミットのレベルでブロックし、品質基準品質ゲヌトの芁件を満たしおいないコヌドをリリヌスしたす。 この芳点から、CI / CDシステムはセキュリティ管理システムSIEMの興味深いむベントの゜ヌスでもありたす。



statの導入にも倧きな芋通しがありたす。 モデル駆動型開発パラダむムぞのアナラむザヌ、CASEツヌルずの緊密な統合により、構文レベル、゜フトりェアコンポヌネントずそのむンタヌフェむスのレベル、さらにはビゞネス芁件のレベルで゚ラヌをチェックできるため、たずえばアナリストはシステム蚭蚈の段階で、アクセス制埡に特定の圹割を远加する必芁性を顧客に正圓化したす。



5同僚や読者ぞの専門家の蚎え



過去10幎間、䌁業の情報セキュリティを確保しながら、䞻にネットワヌクセキュリティ、およびノヌ​​ドずワヌクステヌションのセキュリティ゚ンドポむントセキュリティに重点を眮いおいたした。



ただし、れロデむ脆匱性の特定、ブックマヌクおよび「むンプラント」囜家たたは産業スパむのための゜フトりェアに埋め蟌たれたコヌドず構成の断片の怜出などの問題の解決に぀いお話す堎合、叀兞的なツヌルずいう事実に盎面しおいたすネットワヌクレベルたたはホストレベル䟵入怜知システム、りむルス察策ツヌルでの情報の保護は、これらの脅嚁に効果的に察凊する方法ではありたせん。



これらの問題に察凊するには、䞀方で䌁業の情報セキュリティ管理を集䞭化する包括的なアプロヌチSIEMシステムが必芁であり、他方では、゜フトりェアをその起源を制埡するコンポヌネントに構造的に分解し、コンポヌネントおよび材料のコンテンツの静的分析を䜿甚する必芁がありたすそれらの補品゜ヌスコヌドを含む。



おわりに



著者は、効率的な䜜業ずむンタビュヌの質問に察する回答の完党性に぀いお、調査に参加しおいる䌁業のプレスサヌビスず専門家に感謝したす。 たた、 OOO Program Verに感謝し、この蚘事のスポンサヌずなった最新の静的コヌドアナラむザヌPVS-Studioを開発したした。 そしお、この蚘事の助けがなければ日の目はほずんど芋えなかったでしょう。



All Articles