create account

Visualising Drupal Security Advisory Data by gokulnk

View this thread on: hive.blogpeakd.comecency.com
· @gokulnk · (edited)
$0.79
Visualising Drupal Security Advisory Data
[Drupalgeddon 2.0](https://www.drupal.org/sa-core-2018-002) brought a lot of focus on the Drupal security initiative and its practices. The way the security team was proactive with respect to disclosure,  the way it was communicated to the developers, community and press was commendable. In addition to all these the communication was continuous and all the stake holders were updated with the latest status of the vulnerability and how it needs to be addressed.  

#### Scope of Analysis
After the patches were applied to all the websites that we maintain at [Valuebound](https://valuebound.com) we thought of spending some more time on security advisories and see their distribution across categories and years. So we have analysed the security advisories that are available on https://www.drupal.org/security starting with 1 Dec 2005.

#### Tools
1. Google spreadsheets along with IMPORTXML formula.
2. Power BI.

#### Results
We wanted to do a basic analysis of how Security Advisories have been released till date and what were the security scores of each of these advisories. Though official [Security track record](https://www.drupal.org/drupal-security-team/security-track-record) has some details it was not up to date and it was not detailed enough. So we set out to gather the data. Though there were API endpoints like

``` language
https://www.drupal.org/api-d7/node.json?type=sa&status=1
https://www.drupal.org/api-d7/node.json?taxonomy_forums=1852  
https://www.drupal.org/api-d7/node.json?taxonomy_forums=1856
```

we felt it was too much of work to normalise the data from these endpoints. So we took a different approach of scraping the data from https://www.drupal.org/security. It was not a straight forward job and it was not as easy as we initially we thought it would be. We took the route of scraping https://www.drupal.org/security using our good old Google docs and some queries.

We used  
``` language
=IMPORTXML("https://www.drupal.org/security","//*[contains(@class, 'node-readmore')]//a/@href")
``` 
 for getting the list of all the security advisories. 

Once we had the list of links populated in Google spreadsheet we used IMPORTXML formula on each of them to get the relevant data. Since the data was inconsistent we had to use different queries based on the different time windows during which these announcements were made. After doing an initial round of scraping we did some data manipulations to get all the relevant data in the format we wanted. You can checkout the [default data](https://docs.google.com/spreadsheets/d/1Z_jqtev29Wkus6dusfP43eaLCR-S9gUvuK7ddanFiYM/edit#gid=580595385) and the [cleaned up data](https://docs.google.com/spreadsheets/d/1Z_jqtev29Wkus6dusfP43eaLCR-S9gUvuK7ddanFiYM/edit#gid=392064673)

The next challenge was that two different approaches were used in categories the vulnerabilities. Post August 6th, 2014  NIST Common Misuse Scoring System (NISTIR 7864) mechanism was used for categorizing the vulnerabilities and scoring them. So that data was better structured. Before that Drupal team had its own way of classifying the vulnerabilities.

You can read about them here - https://www.drupal.org/drupal-security-team/security-risk-levels-defined

To have some meaninful insights we wanted to have the security risk score for vulnerabilities that were reported prior to August 6th, 2014. So based on the new guidelines and the security risk level assigned to the vulnerabilities announced before the date we did a reverse mapping.

For highly critical we gave a rating of 22.5, Critical we gave 17, Moderately Critical we gave 12, Less Critical we gave 7 and Not Critical we gave 2.
Though these numbers are not accurate this gives us a broad sense. To have an exact scoring we will need to have a rating for each of the six Risk metrics defined in NISTIR 7864. This can be time consuming and hence we put it on hold for now. It would be great if somebody can rate the old SAs as per the new guidelines. If you would like to take a dig at it you are free to do it here - Drupal core vulnerability analysis. All users have edit access. So please go ahead and update the Columns H to M that are marked in orange and have the text “Details not available”. Once you are done with it you can also update the column G and you can use these values in https://security.drupal.org/riskcalc to find out the Risk Score.

With the currently available data we made some visualizations.

<center>
![](https://valuebound.com/sites/default/files/inline-images/imageLikeEmbed.png)</center>

This was created using Google spreadsheet. As you can see the number of SAs have reduced over the time and it is specially interesting note that vulnerabilities with score less than 10 have reduced drastically post January 2010. I am not sure if this could be attributed to automation tools that were around that time.

Using the data from Google spreadsheets we created a couple of interactive maps in PowerBI.

<center>
[![](https://valuebound.com/sites/default/files/inline-images/Drupal%20Security%20analysis%201.png)](https://app.powerbi.com/view?r=eyJrIjoiNTJjMThmY2UtOTk2Ny00NDIxLWI3YmYtOWJiM2MzZTk1YTdjIiwidCI6ImI2OWIxZjY3LWI1MTItNDQ2NS04OTEwLWZkM2U3NDJmZDk1YSJ9)

[![Drupal Security interactive map](https://valuebound.com/sites/default/files/inline-images/Drupal%20Security%20analysis%202.png)](https://app.powerbi.com/view?r=eyJrIjoiNTJjMThmY2UtOTk2Ny00NDIxLWI3YmYtOWJiM2MzZTk1YTdjIiwidCI6ImI2OWIxZjY3LWI1MTItNDQ2NS04OTEwLWZkM2U3NDJmZDk1YSJ9)

</center>

You can check out these [interactive maps here.](https://app.powerbi.com/view?r=eyJrIjoiNTJjMThmY2UtOTk2Ny00NDIxLWI3YmYtOWJiM2MzZTk1YTdjIiwidCI6ImI2OWIxZjY3LWI1MTItNDQ2NS04OTEwLWZkM2U3NDJmZDk1YSJ9)

If anybody would like to continue the analysis I can share the PowerBi File (pbix) with you. Feel free to ping me on gokulnk#4937


    
👍  , , , , , , , , , , ,
properties (23)
authorgokulnk
permlinkvisualising-drupal-security-advisory-data
categoryutopian-io
json_metadata"{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":43290249,"name":"drupal-security-advisories","full_name":"drupal-composer/drupal-security-advisories","html_url":"https://github.com/drupal-composer/drupal-security-advisories","fork":false,"owner":{"login":"drupal-composer"}},"pullRequests":[],"platform":"github","type":"analysis","tags":["utopian-io","blockchainbi","drupal","security","opensource"],"users":["class","href"],"links":["https://www.drupal.org/sa-core-2018-002","https://valuebound.com","https://www.drupal.org/drupal-security-team/security-track-record","https://docs.google.com/spreadsheets/d/1Z_jqtev29Wkus6dusfP43eaLCR-S9gUvuK7ddanFiYM/edit#gid=580595385","https://docs.google.com/spreadsheets/d/1Z_jqtev29Wkus6dusfP43eaLCR-S9gUvuK7ddanFiYM/edit#gid=392064673","https://valuebound.com/sites/default/files/inline-images/Drupal%20Security%20analysis%201.png","https://valuebound.com/sites/default/files/inline-images/Drupal%20Security%20analysis%202.png","https://app.powerbi.com/view?r=eyJrIjoiNTJjMThmY2UtOTk2Ny00NDIxLWI3YmYtOWJiM2MzZTk1YTdjIiwidCI6ImI2OWIxZjY3LWI1MTItNDQ2NS04OTEwLWZkM2U3NDJmZDk1YSJ9"],"image":["https://app.powerbi.com/view?r=eyJrIjoiNTJjMThmY2UtOTk2Ny00NDIxLWI3YmYtOWJiM2MzZTk1YTdjIiwidCI6ImI2OWIxZjY3LWI1MTItNDQ2NS04OTEwLWZkM2U3NDJmZDk1YSJ9","https://valuebound.com/sites/default/files/inline-images/Drupal%20Security%20analysis%202.png"],"moderator":{"account":"crokkon","time":"2018-05-02T09:07:16.507Z","pending":false,"reviewed":false,"flagged":true},"questions":null,"score":null,"total_influence":null,"staff_pick":null,"staff_pick_by":null,"config":{"questions":[{"question":"Were all relevant aspects or metrics related to the objective analyzed?","question_id":"analysis-1","answers":[{"answer":"All relevant metrics were covered.","answer_id":"analysis-1-a-1","value":25},{"answer":"Only selected metrics were chosen; including more may have provided additional insights.","answer_id":"analysis-1-a-2","value":20},{"answer":"Only a single or narrow aspect was chosen.","answer_id":"analysis-1-a-3","value":10},{"answer":"No metric was chosen.","answer_id":"analysis-1-a-4","value":0}]},{"question":"How would you rate the complexity data extraction for this analysis?","question_id":"analysis-2","answers":[{"answer":"Gathering the data required complex queries and post-processing.","answer_id":"analysis-2-a-1","value":15},{"answer":"The method of extracting data was moderately challenging.","answer_id":"analysis-2-a-2","value":12},{"answer":"The data can be directly imported for visualization - no additional data transformation was needed.","answer_id":"analysis-2-a-3","value":6},{"answer":"No data was extracted.","answer_id":"analysis-2-a-4","value":0}]},{"question":"How would you rate the quality of the visualization of the findings?","question_id":"analysis-3","answers":[{"answer":"Visualizations presented were superb and beyond expectation.","answer_id":"analysis-3-a-1","value":20},{"answer":"Appropriate and sufficient visualization were used to present the results.","answer_id":"analysis-3-a-2","value":16},{"answer":"Visualizations were included, but lacked in quality and/or quantity.","answer_id":"analysis-3-a-3","value":8},{"answer":"Visualizations included were irrelevant to the objective.","answer_id":"analysis-3-a-4","value":0}]},{"question":"Was the analysis reproducible through the use of the contribution content?","question_id":"analysis-4","answers":[{"answer":"All queries or data gathering methods and all data processing scripts were included.","answer_id":"analysis-4-a-1","value":5},{"answer":"The core query or data gathering method was included and the data processing steps were described.","answer_id":"analysis-4-a-2","value":4},{"answer":"Data gathering methods and processing steps were sketched.","answer_id":"analysis-4-a-3","value":2},{"answer":"Data gathering methods were not included.","answer_id":"analysis-4-a-4","value":0}]},{"question":"Was it a new and unique analysis?","question_id":"analysis-5","answers":[{"answer":"Yes, it was a unique analysis.","answer_id":"analysis-5-a-1","value":5},{"answer":"It’s similar to another contribution, but covers deeper or additional aspects.","answer_id":"analysis-5-a-2","value":4},{"answer":"It’s similar to another contribution, but covers a different time period.","answer_id":"analysis-5-a-3","value":4},{"answer":"It’s a recurring analysis covering too short a time frame (i.e., daily).","answer_id":"analysis-5-a-4","value":0}]},{"question":"How would you describe the formatting, language and overall presentation of the post?","question_id":"c-1","answers":[{"answer":"The post is of very high quality.","answer_id":"c-1-a-1","value":10},{"answer":"The post is of decent quality, but not spectacular in any way.","answer_id":"c-1-a-2","value":7},{"answer":"The post is poorly written and/or formatted, but readable.","answer_id":"c-1-a-3","value":3},{"answer":"The post is really hard to read and the content is barely understandable.","answer_id":"c-1-a-4","value":0}]},{"question":"How would you rate the overall value of this contribution on the open source community and ecosystem?","question_id":"c-2","answers":[{"answer":"This contribution brings great and impactful value, and can be used for applications outside the specific project.","answer_id":"c-2-a-1","value":20},{"answer":"This contribution adds significant value to the open source community and ecosystem, or is of critical importance to the specific project.","answer_id":"c-2-a-2","value":16},{"answer":"This contribution adds some value to the open source community and ecosystem or is only valuable to the specific project.","answer_id":"c-2-a-3","value":8},{"answer":"This contribution adds no value to the open source community and ecosystem or the specific project.","answer_id":"c-2-a-4","value":0}]}]}}"
created2018-05-02 06:36:33
last_update2018-05-02 09:07:15
depth0
children7
last_payout2018-05-09 06:36:33
cashout_time1969-12-31 23:59:59
total_payout_value0.594 HBD
curator_payout_value0.198 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length5,847
author_reputation17,871,219,215,380
root_title"Visualising Drupal Security Advisory Data"
beneficiaries
0.
accountutopian.pay
weight1,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,383,088
net_rshares158,124,303,652
author_curate_reward""
vote details (12)
@arcange ·
**WARNING** - The message you received from @zulfajri321 is a **CONFIRMED SCAM!**
**DO NOT FOLLOW** any instruction and **DO NOT CLICK** on any link in the comment!

For more information, read this post: 
https://steemit.com/steemit/@arcange/anti-phishing-war-the-crooks-continue-their-bashing-campaign

If you find my work to protect you and the community valuable, please consider to upvote this warning or to [vote for my witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=arcange&approve=1).
properties (22)
authorarcange
permlinkre-visualising-drupal-security-advisory-data-20180502t112706000z
categoryutopian-io
json_metadata{"image":["http://i.cubeupload.com/d1Dr28.png"]}
created2018-05-02 09:27:03
last_update2018-05-02 09:27:03
depth1
children0
last_payout2018-05-09 09:27:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length515
author_reputation1,149,895,830,375,428
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,406,264
net_rshares0
@crokkon · (edited)
.
.
properties (22)
authorcrokkon
permlinkre-gokulnk-visualising-drupal-security-advisory-data-20180502t091641089z
categoryutopian-io
json_metadata"{"app": ""}"
created2018-05-02 09:16:42
last_update2022-09-18 11:56:42
depth1
children2
last_payout2018-05-09 09:16:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1
author_reputation81,214,366,861,104
root_title"Visualising Drupal Security Advisory Data"
beneficiaries
0.
accountutopian.pay
weight1,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,405,019
net_rshares0
@gokulnk ·
Thanks for the feedback. No issues. I hope Utopian opens up for non github open-source projects as well. I will be updating the post with some more analysis that I am working on.
properties (22)
authorgokulnk
permlinkre-crokkon-re-gokulnk-visualising-drupal-security-advisory-data-20180502t094222415z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-05-02 09:42:24
last_update2018-05-02 09:42:24
depth2
children1
last_payout2018-05-09 09:42:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length178
author_reputation17,871,219,215,380
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,408,345
net_rshares0
@crokkon · (edited)
.
.
properties (22)
authorcrokkon
permlinkre-gokulnk-re-crokkon-re-gokulnk-visualising-drupal-security-advisory-data-20180502t100123543z
categoryutopian-io
json_metadata"{"app": ""}"
created2018-05-02 10:01:24
last_update2022-09-18 11:56:36
depth3
children0
last_payout2018-05-09 10:01:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1
author_reputation81,214,366,861,104
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,410,890
net_rshares0
@steembottrackerr ·
<center>https://steemitimages.com/200x200/https://s-media-cache-ak0.pinimg.com/originals/81/28/3c/81283c6aed7bdb5b9f8ad73b8ce62c2f.jpg</center>
---
<center>Hello @gokulnk , Congratulations ✅ . Your content began to appear in the hot section.
I am the information account of "SteemBotTracker" site.
</center>
---
<center>
Your Informations
Total SBD: 59.559
Total STEEM: 63.739
</center>
---
<center>
I recommend to increase this;
You can make "Resteem" and advertise to the followers of the whale accounts.
"Resteem Bot" for you;
✅ The most profitable Resteem Whale @byresteem  has 25.500 Followers + 7000 Sp + Upvote with min +55 accounts. 
</center>
---
<center>
You can purchase "upvote" by bid bots.
"Upvote Bot"
✅ The most profitable whale in the last round. @appreciator
</center>
---
<center>
I'm taking this message once. You need to use the #steembottrackerr tag for more information.
Those who "upvote" this interpretation will be awarded a "UpVote" prize of 100 Sbd per week per person.
I am a bot, I can not answer the comment. I hope I could help. Good luck. Sorry if I disturbed you.
</center>
properties (22)
authorsteembottrackerr
permlink20180511t015606718z
categoryutopian-io
json_metadata{"tags":["advice"],"app":"steemjs/test"}
created2018-05-11 01:56:09
last_update2018-05-11 01:56:09
depth1
children0
last_payout2018-05-18 01:56:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,136
author_reputation-1,493,369,324,060
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,055,890
net_rshares0
@steemitboard ·
Congratulations @gokulnk! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/votes.png)](http://steemitboard.com/@gokulnk) Award for the number of upvotes

Click on any badge to view your Board of Honor.
For more information about SteemitBoard, click [here](https://steemit.com/@steemitboard)

If you no longer want to receive notifications, reply to this comment with the word `STOP`

**Do not miss the [last announcement](https://steemit.com/steemitboard/@steemitboard/steemitboard-new-level-notifications) from @steemitboard!**

> Do you like **SteemitBoard**'s project? **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
properties (22)
authorsteemitboard
permlinksteemitboard-notify-gokulnk-20180531t030520000z
categoryutopian-io
json_metadata{"image":["https://steemitboard.com/img/notify.png"]}
created2018-05-31 03:05:18
last_update2018-05-31 03:05:18
depth1
children0
last_payout2018-06-07 03:05:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length829
author_reputation38,975,615,169,260
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id58,533,565
net_rshares0
@zulfajri321 ·
fossbot voter comment
Great Jobs on this post!  My New Bots Just gave you a free upvote!  mcg6000(.)com/booster    
👎  
properties (23)
authorzulfajri321
permlinkre-gokulnk-visualising-drupal-security-advisory-data-20180502t064123185z
categoryutopian-io
json_metadata{}
created2018-05-02 06:41:24
last_update2018-05-02 06:41:24
depth1
children0
last_payout2018-05-09 06:41:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length93
author_reputation-526,731,267,047
root_title"Visualising Drupal Security Advisory Data"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id53,383,732
net_rshares-30,898,093,099
author_curate_reward""
vote details (1)