Web-sovellusten tietoturvastandardin testaaminen
Koskinen, Sami (2019)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2019060716108
https://urn.fi/URN:NBN:fi:amk-2019060716108
Tiivistelmä
Tietoturva on nousemassa yhä tärkeämmäksi osaksi web-sovellusten kehitystä ja myyntiä. Euroopan unionin vuonna 2018 voimaanastuneen yleisen tietoturva-asetuksen myötä web-sovellusten tilaajat voivat saada konkreettisia rangaistuksia tietoturvallisuuden laiminlyömisestä. Näin ollen web-sovellusten tietoturva pitää pystyä varmistamaan ja todistamaan nykyisille sekä mahdollisille tuleville asiakkaille.
Työn tavoitteena on kehittää tehokas ja kohtuullisella työmäärällä toteutettava testaustapa jo olemassa olevan tietoturvastandardin testaamiselle. Tietoturvastandardi pitää sisällään OWASPin, eli Open Web Application Security Projectin, 10 kriittisintä haavoittuvuutta. Tavoitteena on myös luoda valmius tietoturvaraportin luomiselle.
Työn kehitysvaiheessa etsittiin ensin sopivat työkalut testauksen toteuttamiselle, minkä jälkeen tutustuttiin työkaluihin ja testausmenetelmiin. Testaus toteutettiin aluksi manuaalisesti OWASPin omaa web-sovellusten penetraatiotestaustyökalulla, Zed Attack Proxyllä. Manuaalisen testauksen ja tulosten raportoinnin jälkeen manuaalinen testaus todettiin toimivaksi, mutta liian paljon työtä vaativaksi prosessiksi. Toisessa vaiheessa testausta pyrittiin jatkokehittämään kevyemmäksi, automatisoiduksi prosessiksi. Automatisointiin käytettiin versionhallinnan pilvipalvelua, Bitbuckettia, sekä CircleCI-työkalua, joka on jatkuvan integraation työkalu.
Projektin lopputuloksena syntyi kaksi eri testausprosessia. Ensimmäinen lopputulos oli manuaalinen testausprosessi, jonka avulla voidaan olla yhä varmempia web-sovelluksen tietoturvallisuudesta. Toisena lopputuloksena syntyi automatisoitu tietoturvastandardin testausprosessi, joka onnistuttiin sulauttamaan mukaan web-sovelluksen kehitysvaiheeseen kohtuullisella työmäärällä. Manuaalinen testaus on huomattavasti automatisoitua testausta hitaampi, mutta on sitäkin tarkempi. Automatisoitutestaus soveltuu suurimpien haavoittuvuuksien testaamiseen.
Projektissa päästiin työn tilaajan asettamiin tavoitteisiin. Kehitettävää automatisoidulle testaukselle jäi, sillä ajan puutteen vuoksi web-sovelluksiin tunnistautumista ei ehditty automatisoimaan, jolloin tunnistautumisen takana olevat sivustot jäävät testaamatta. Automatisoitua testausprosessia pystyy kuitenkin hyödyntämään suurimmassa osassa web-sovelluksia. Information security is continuously becoming a important part of web-application development and sales. After the inception of European Union’s General Data Protection Regulations in 2018 web-applications owners can face concrete punishments for neglecting security in web-applications. This means that customers are more interested in information security but without knowledge in the technology behind web-application security, it has become more important for the web-application provider to test and prove the security of their applications.
The goal of this project was to develop an efficient method for testing and proving an existing security standard while maintaining a reasonable workload. The security standard includes all of the Open Web Application Security Projects Top 10 most critical web-application vulnerabilities. A secondary goal for the project was to create a method for efficiently reporting the results of web-application security testing.
In the first part of the development phase of the project, sufficient tools were researched for penetration testing the web-applications. The penetration testing was originally conducted manually using OWASP’s own web-application penetration testing tool, Zed Attack Proxy. After manually testing the security of the web-application based on the security standard, and reporting the results, the manual penetration testing was concluded to be too inefficient for being integrated into web-application development workflow. In the second part of the development phase the goal was to automate the testing that was conducted manually in part one. The automation was implemented using a version control tool, BitBucket, and a continuous integration tool, CircleCI.
The outcome of the project was two separate testing methods. The first one was a manual testing method. The manual testing method is conducted by hand and requires the attention of a penetration tester. The manual testing method is an accurate and extensive testing method for web-applications. The second method was a completely automated testing method for web-applications that could be integrated into web-application development workflow. The automated testing method is less accurate, than the manual one but requires no work from the penetration tester after the initial configuration.
The project goals were reached after developing the automated testing method. Further development is recommended for the automated penetration testing, since authentication could not be automated in the limited time that the project was being worked on. This means that parts of the web-application being tested might remain untested if no authentication is automated. The automated testing method will however test all parts of the web-application that do not require authentication.
Työn tavoitteena on kehittää tehokas ja kohtuullisella työmäärällä toteutettava testaustapa jo olemassa olevan tietoturvastandardin testaamiselle. Tietoturvastandardi pitää sisällään OWASPin, eli Open Web Application Security Projectin, 10 kriittisintä haavoittuvuutta. Tavoitteena on myös luoda valmius tietoturvaraportin luomiselle.
Työn kehitysvaiheessa etsittiin ensin sopivat työkalut testauksen toteuttamiselle, minkä jälkeen tutustuttiin työkaluihin ja testausmenetelmiin. Testaus toteutettiin aluksi manuaalisesti OWASPin omaa web-sovellusten penetraatiotestaustyökalulla, Zed Attack Proxyllä. Manuaalisen testauksen ja tulosten raportoinnin jälkeen manuaalinen testaus todettiin toimivaksi, mutta liian paljon työtä vaativaksi prosessiksi. Toisessa vaiheessa testausta pyrittiin jatkokehittämään kevyemmäksi, automatisoiduksi prosessiksi. Automatisointiin käytettiin versionhallinnan pilvipalvelua, Bitbuckettia, sekä CircleCI-työkalua, joka on jatkuvan integraation työkalu.
Projektin lopputuloksena syntyi kaksi eri testausprosessia. Ensimmäinen lopputulos oli manuaalinen testausprosessi, jonka avulla voidaan olla yhä varmempia web-sovelluksen tietoturvallisuudesta. Toisena lopputuloksena syntyi automatisoitu tietoturvastandardin testausprosessi, joka onnistuttiin sulauttamaan mukaan web-sovelluksen kehitysvaiheeseen kohtuullisella työmäärällä. Manuaalinen testaus on huomattavasti automatisoitua testausta hitaampi, mutta on sitäkin tarkempi. Automatisoitutestaus soveltuu suurimpien haavoittuvuuksien testaamiseen.
Projektissa päästiin työn tilaajan asettamiin tavoitteisiin. Kehitettävää automatisoidulle testaukselle jäi, sillä ajan puutteen vuoksi web-sovelluksiin tunnistautumista ei ehditty automatisoimaan, jolloin tunnistautumisen takana olevat sivustot jäävät testaamatta. Automatisoitua testausprosessia pystyy kuitenkin hyödyntämään suurimmassa osassa web-sovelluksia.
The goal of this project was to develop an efficient method for testing and proving an existing security standard while maintaining a reasonable workload. The security standard includes all of the Open Web Application Security Projects Top 10 most critical web-application vulnerabilities. A secondary goal for the project was to create a method for efficiently reporting the results of web-application security testing.
In the first part of the development phase of the project, sufficient tools were researched for penetration testing the web-applications. The penetration testing was originally conducted manually using OWASP’s own web-application penetration testing tool, Zed Attack Proxy. After manually testing the security of the web-application based on the security standard, and reporting the results, the manual penetration testing was concluded to be too inefficient for being integrated into web-application development workflow. In the second part of the development phase the goal was to automate the testing that was conducted manually in part one. The automation was implemented using a version control tool, BitBucket, and a continuous integration tool, CircleCI.
The outcome of the project was two separate testing methods. The first one was a manual testing method. The manual testing method is conducted by hand and requires the attention of a penetration tester. The manual testing method is an accurate and extensive testing method for web-applications. The second method was a completely automated testing method for web-applications that could be integrated into web-application development workflow. The automated testing method is less accurate, than the manual one but requires no work from the penetration tester after the initial configuration.
The project goals were reached after developing the automated testing method. Further development is recommended for the automated penetration testing, since authentication could not be automated in the limited time that the project was being worked on. This means that parts of the web-application being tested might remain untested if no authentication is automated. The automated testing method will however test all parts of the web-application that do not require authentication.