<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lukas Vileikis</title>
	<atom:link href="https://www.lukasvileikis.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lukasvileikis.com</link>
	<description>Personal Website</description>
	<lastBuildDate>Mon, 26 Aug 2024 19:36:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>Messed Up at a Conference? You‘re Not Alone – Lessons for Speakers in Remote Conferences</title>
		<link>https://www.lukasvileikis.com/messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences</link>
					<comments>https://www.lukasvileikis.com/messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Mon, 26 Aug 2024 19:36:23 +0000</pubDate>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Conference CFP]]></category>
		<category><![CDATA[Conference Speaker]]></category>
		<category><![CDATA[Conference Speaker and Mic]]></category>
		<category><![CDATA[Conference Speaker and Microphone]]></category>
		<category><![CDATA[Conference Speaker Bio]]></category>
		<category><![CDATA[Conference Speaker Invitation Letter]]></category>
		<category><![CDATA[Remote Conferences]]></category>
		<category><![CDATA[Software Architecture Conference]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=566</guid>

					<description><![CDATA[<p>This blog will walk you through some lessons for conference speakers who speak remotely no matter whether you're a first-time speaker or an expert.</p>
<p>The post <a href="https://www.lukasvileikis.com/messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences/">Messed Up at a Conference? You‘re Not Alone – Lessons for Speakers in Remote Conferences</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Those following me on social media or having a gander through the blogs I write day in and day out may know that I‘ve recently taken part in the <a href="https://softwarearchitecture.live/">Software Architecture Conference</a> as a speaker. I‘ve prepared for the event just like I prepare for any other conference: I‘ve researched details, prepared slides, and timed the speech so I don‘t go overboard when speaking, and, preparing for the worst, I‘ve also uploaded the slides for the conference to Google Drive.</p>



<p>I‘ve put my fair share of preparing for the conference before the event, but that didn‘t stop me from running into an issue!</p>



<p>When it was my time to speak, I connected to the conference using a link I‘d been given before my speech (conference speakers weren‘t visible on the „live screen“ until the host made them visible when it was their time to speak), waited for the speaker before me to finish his speech and for people to ask questions, and then waited to be introduced to the viewers and spoke at the event.</p>



<p>As I was being introduced, I fired up my slides, closed down all of the „alerty“ things such as social media notifications and others, and prepared my microphone.</p>



<h2 class="wp-block-heading">Always Speak In Presenter Mode</h2>



<p>The mistake I made was not putting the presenter mode on when starting to speak and that was the reason behind the fact that <em>while I changed slides when speaking, slides on the screen to the general public remained unchanged.</em> That was the source of confusion to the hosts who, a couple of minutes into my speech, told me that they couldn‘t see slides being changed. Hey, that‘s why you <em>always</em> speak in presenter mode! Not switching the presenter mode on is the source of mistakes like mine.</p>



<h2 class="wp-block-heading">Full Screen Mode, Anyone?</h2>



<p>After I made the mistake of not speaking in presenter mode, I could‘ve just switched the slides into presenter mode and re-started my speech, but I decided that as I had a backup of the slides on Google Drive, I‘d just continue from there. So, I just fired them up and presented my speech that way, but again, I messed up not putting the slides in full screen, thus making the text within the slides difficult to entertain – folks, always put your slides into full-screen mode so the viewers can watch you speak&#8230; If you can‘t find a button to do that (that can happen due to simple stress), click CTRL + F5. Phew, lesson learned.</p>



<h2 class="wp-block-heading">Time Your Speech</h2>



<p>There‘s a reason so many good speakers have stopwatches that they glance at when they speak – if your speech is 30 minutes and you talk for an hour and a half, that‘s probably not going to go down well. In my case speaking at the Software Architecture Conference, things here were better than I‘d expected them to be: even though I messed up the first part of my speech, conference attendees said that due to the fact that the rest of the speech was good, they counted the mistake as a little technical issue that did not affect anything.</p>



<p>The rest of my speech was good because I‘d timed my speech in advance and knew that I had to restart my speech until I hit a specific slide – when I did that, I knew that I could slow down the pace and not feel bad about it.</p>



<p>Always time your speech, folks! You don‘t know what‘s going to occur necessitating you to speed up/slow down. I know of speakers that have/had stopwatches nearby when they‘re speaking and glanced them once or twice during their speech so they know where they stand – there‘s a good chance that if they hadn‘t done that, they‘d gone over their limit.</p>



<h2 class="wp-block-heading">Reading From the Slides is a No-no</h2>



<p>You know one mistake that almost every first-time speaker makes? He/she reads from his/her slides! That may not be an issue for guys in middle/high school, but when you speak at software conferences, you can‘t focus on your laptop – the focus has to be on your audience.</p>



<p>A focus on an audience provides a vital connection and the key to this is rehearsal – many speakers practice their speech at least 10-15 times before jumping on a plane, reaching their hotel, rehearsing their speech there, and speaking on stage.</p>



<p>The same goes for bullet points and the same deal with fonts that are too small, too – I‘ve made my fair share of mistakes at the Software Architecture Conference (ahem, not presenting the slides full-screen was a big one that could‘ve led to this.) Always look at your fonts from the audience‘s point of view in full-screen to avoid that from happening.</p>



<h2 class="wp-block-heading">If You Speak Remotely, Moving Around Is No Longer Necessary</h2>



<p>Most speakers speaking remotely have multiple luxuries available to them:</p>



<ul class="wp-block-list">
<li>They don‘t have to worry about flights and/or accommodation</li>



<li>They can present their speech without having to re-setup their laptop</li>



<li>They present in a space that‘s already familiar to them</li>
</ul>



<p>Aside from that, they don‘t have to worry about becoming „the statue“ that doesn‘t move around when speaking! No one likes to see a speaker that‘s glued in place without engaging with the audience by moving back and forth – but for remote events, that‘s no longer a necessity. The audience are now the viewers of the YouTube stream!</p>



<h2 class="wp-block-heading">No Forced Slide Templates</h2>



<p>One thing that some conferences do is make people use slide templates. For some conferences, that might be fine (e.g. if the conference is organized remotely and the speaker speaks while sitting in a chair), but for others, that can be bad.</p>



<p>A conference speech is more than just the template or pictures on a screen – speakers share their experience that often conveys some sort of emotions. For example, a speech on the „dark arts of technology“ (i.e. how to stop black-hat hackers) may necessitate a lot of dark colors and shady characters and it may not be a fit for a white background. Given that, some conferences do share more than one template a speaker can use and do include darker as well as lighter variants, but in my opinion, speakers need to be provided with an artistic reign that they can use at their discretion.</p>



<p>Many remote conferences provide an option to use their slide templates, but that‘s only that. An <em>option</em>, not a necessity.</p>



<h2 class="wp-block-heading">The Good Things</h2>



<p>Enough bad news! There are a lot of good things that all conferences do and there are some things that conferences organized remotely such as the Software Architecture Conference do exceptionally well, too. Starting from not forcing a slide template on their speakers to giving speakers links to test and see how they‘re being seen or heard beforehand to organizing the conference remotely. They all deserve kudos!</p>



<h2 class="wp-block-heading">Pre-recorded Sessions are Good</h2>



<p>Many remote conferences feature pre-recorded sessions. For some, that may seem weird, but conferences do that because they want to set up everything in advance – most conferences that do this will ask for slides and a video of your recorded speech a week or a couple days prior to the event which is all good because as a speaker, you‘re likely to present yourself in the best way possible when you know that you have multiple do-overs if necessary. You don‘t even have to record your speech on the same day.</p>



<p>Some conferences, such as <a href="https://percona.com/live/">Percona LIVE</a>, may even allow attendees to ask you questions while you speak since your speech will be pre-recorded. You can answer more questions and not necessitate extra time at the end of your speech – win-win, no?</p>



<p>On the contrary, asking for pre-recorded sessions three months before the event begins may not be a great idea – this industry changes rapidly, and it‘s possible that speakers will have to remove/add something from their slides closer to the event.</p>



<h2 class="wp-block-heading">You‘re Using Your Own Devices</h2>



<p>Many speakers will agree with me that conference laptops aren‘t often the very best. Many speakers have to prepare their speech and possibly show a demo or two which may necessitate certain software – the fact that remote conferences allow you to use your own devices is awesome because you are in control of everything that‘s happening and no one knows your devices better than you do. Aside from that, you can be 100% sure that you‘re not getting any notifications because you‘ve turned all unnecessary apps off.</p>



<h2 class="wp-block-heading">More Impact!</h2>



<p>The last thing that speakers speaking remotely can achieve is more impact. There‘s no longer a need to fly to a different country that may be on the opposite end of the world, and at the same time, many attendees of the conferences can attend and watch the conference remotely, too.</p>



<p>Many conferences are accessible via live streams on YouTube and while people may need to log in to ask questions, they can also do so from the comfort of their own home.</p>



<h2 class="wp-block-heading">Summary</h2>



<p>Speaking at a conference remotely may be a different experience when compared to speaking at a live event, however, it comes with perks unique to itself as well.</p>



<p>Did you speak at a remote conference recently? I‘d love to hear your thoughts – share your experience in the comment section, and until next time.</p><p>The post <a href="https://www.lukasvileikis.com/messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences/">Messed Up at a Conference? You‘re Not Alone – Lessons for Speakers in Remote Conferences</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/messed-up-at-a-conference-youre-not-alone-lessons-for-speakers-in-remote-conferences/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OWASP Mobile Top 10 Part 2: Insecure Data Storage</title>
		<link>https://www.lukasvileikis.com/owasp-mobile-top-10-part-2-insecure-data-storage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=owasp-mobile-top-10-part-2-insecure-data-storage</link>
					<comments>https://www.lukasvileikis.com/owasp-mobile-top-10-part-2-insecure-data-storage/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Fri, 14 May 2021 17:08:49 +0000</pubDate>
				<category><![CDATA[OWASP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=435</guid>

					<description><![CDATA[<p>Insecure data storage is the second vulnerability in the OWASP Mobile Top 10 list. Insecure data storage comes straight after improper platform usage &#8211; such</p>
<p>The post <a href="https://www.lukasvileikis.com/owasp-mobile-top-10-part-2-insecure-data-storage/">OWASP Mobile Top 10 Part 2: Insecure Data Storage</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Insecure data storage is the second vulnerability in the <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">OWASP Mobile Top 10</a> list. Insecure data storage comes straight after <a href="https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/">improper platform usage</a> &#8211; such an attack might occur after a malicious party has stolen a mobile device, gained control of a lost mobile device or simply managed to execute some kind of malware on the mobile device of a victim.</p>



<h2 class="wp-block-heading">What is Insecure Data Storage?</h2>



<p>Put simply, insecure data storage refers to, well, insecure storage of data that is then manipulated and abused by an attacker. An attacker can either abuse such a flaw by either having physical access to the device or, as already noted previously, through the use of malicious applications.</p>



<h2 class="wp-block-heading">How Dangerous is the Insecure Data Storage Vulnerability?</h2>



<p>The dangers of the insecure data storage vulnerability are pretty much directly dependent on the application that is vulnerable. For example, as part of one of its releases, Tinder introduced a new feature that was supposed to show people in close proximity to you that are also using the app and by doing so Tinder also retrieved and stored the exact location (the GPS coordinates) of each individual so in this case, the dangers of insecure data storage vulnerability came down to exposed geographical locations of users, in other cases the dangers may be more or less severe. For example, if a mobile application is susceptible to the insecure data storage vulnerability, the vulnerability might reside in SQLite databases, log files, XML, cookie or binary data stores, manifest files or SD cards. Files and data that reside in cloud storage (for example, Dropbox) and are accessed through some kinds of mobile applications, might also be vulnerable to the insecure data storage vulnerability.</p>



<p>In general, the exploiting of such a vulnerability for an attacker is pretty easy. All an adversary needs to do is gain access to a mobile device,  then connect it to a computer, then use software that allows him to see stored perfonal information. If the attacker hasn&#8217;t got access to a mobile device, he also has an option to simply execute malware on the mobile device of the victim. It&#8217;s as easy as that!</p>



<h2 class="wp-block-heading">How to Protect an Application From Insecure Data Storage?</h2>



<p>In general, to protect your mobile application from insecure data storage, consider threat modelling your mobile application, OS, platforms and frameworks you use. Keep an eye on:</p>



<ul class="wp-block-list"><li>Your databases &#8211; the data stored in your SQL databases is obviously one of the primary targets for an attacker. Keep an eye out for it, don&#8217;t store unnecessary data in it and if you do grant access to databases, make sure you only grant the necessary privileges for users to complete their actions.</li><li>Log files &#8211; log files can obviously also contain some useful information for an attacker.</li><li>XML data stores, binary data stores and cookie stores &#8211; those kinds of files should also be reviewed to ensure that they do not store information that isn&#8217;t absolutely necessary and that they don&#8217;t store sensitive personal information.</li><li>The SD card &#8211; the SD card could be one of those points that is often overlooked, but considering how much data an ordinary user has in their phone, the data stored in SD cards could be a goldmine for any attacker. Make sure that your SD card does not include too much sensitive data, also make s If you can, provide an alert to the user informing them about the importance of privacy and security phones.</li><li>The cloud &#8211; another crucial points that could provide some &#8220;juicy&#8221; information to the attacker. Make sure that personal information is not stored in the cloud &#8211; if it must be stored, adequately protect it.</li></ul>



<h2 class="wp-block-heading">Summary</h2>



<p>According to OWASP, insecure data storage vulnerability is one of the most dangerous vulnerabilities mobile applications are susceptible to. To avoid introducing such a vulnerability into your mobile applications, keep an eye out on your your databases, log files, data stores, the SD card and the cloud. Also keep in mind that unintended data leakage might also stem from vulnerabilities in your operating system, frameworks in use, new hardware, also rooted or jailbroken devices.</p>



<p>Keep in mind that the threat agents for this vulnerability include an adversary who has attained access to a mobile device or the execution of malware sent by an attacker. Knowing these things in mind should make your mobile applications more secure.</p><p>The post <a href="https://www.lukasvileikis.com/owasp-mobile-top-10-part-2-insecure-data-storage/">OWASP Mobile Top 10 Part 2: Insecure Data Storage</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/owasp-mobile-top-10-part-2-insecure-data-storage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OWASP Mobile Top 10 Part 1: Improper Platform Usage</title>
		<link>https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=owasp-mobile-top-10-part-1-improper-platform-usage</link>
					<comments>https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Fri, 09 Apr 2021 17:46:11 +0000</pubDate>
				<category><![CDATA[BreachDirectory]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=425</guid>

					<description><![CDATA[<p>The improper platform usage vulnerability is the first vulnerability in the OWASP Mobile Top 10. This blog will provide some insight into what it is</p>
<p>The post <a href="https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/">OWASP Mobile Top 10 Part 1: Improper Platform Usage</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>The improper platform usage vulnerability is the first vulnerability in the <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">OWASP Mobile Top 10</a>. This blog will provide some insight into what it is and how it&#8217;s actually exploited in the wild while also telling you how to protect your own mobile applications.</p>



<h2 class="wp-block-heading">What is Improper Platform Usage?</h2>



<p>The improper platform usage vulnerability refers to a vulnerability that is derived from the improper usage of platforms in use by an application. In other words, this category covers the misuse of a platform feature or the failure to use certain security controls. Probable misuse scenarios could include the misuse of TouchID or some other security control. In general, the improper platform usage vulnerability might appear to be insignificant at first, but in the hands of an attacker, it could certainly be used as an avenue for an attack of a bigger scale.</p>



<h2 class="wp-block-heading">How Dangerous is the Improper Platform Usage Vulnerability?</h2>



<p>As you already probably understood, such a vulnerability might arise when an app fails to use secure coding practices when creating a mobile application. All mobile applications should use certain security controls &#8211; the failure of using them could result in such a vulnerability being introduced into the application in question. According to OWASP, the threat agents for this vulnerability are application-specific and any exposed API call could become a potential attack vector for a nefarious party. In order for this vulnerability to be exploited, the mobile app should have an exposed service or an API call that is implemented using insecure coding techniques.</p>



<h2 class="wp-block-heading">Improper Platform Usage Vulnerabilities in the Real World</h2>



<p>As far as the real world in concerned, improper platform usage vulnerabiltiies usucally stem from exposed service or API calls that are secured improperly. When exploiting these kinds of vulnerabilities in the real world, the attacker is usually able to provide some kind of unexpected sequences of events and (or) malicious input to a vulnerable endpoint &#8211; a service on an API. The service or the API would then process the input and, depending on the vulnerability being exploited (the attacker could potentially exploit any vulnerability outlined in the <a href="https://www.lukasvileikis.com/category/owasp/">OWASP Top 10</a>, potentially grant the attacker access to confidential information.</p>



<h2 class="wp-block-heading">Protecting Your Application Against Improper Platform Usage Vulnerabilities</h2>



<p>To protect your mobile applications from improper platform usage vulnerabilities, limit the applications that are allowed to communicate with your application, familiarize yourself with the <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">OWASP Mobile Top 10</a> and general security best practices, do not violate the security guidelines of the platform you are developing in and avoid unintentional misuse &#8211; if you are implementing services or APIs that are communicating with your application, be sure to implement them properly. If you&#8217;re dealing with iOS, for example, use the iOS Keychain instead of the local storage &#8211; data stored in the local storage is available in unencrypted iTunes backups. If your API or service is communicating with a web server, be sure to harden its security &#8211; test your web server and avoid the <a href="https://www.lukasvileikis.com/category/owasp/" data-type="URL" data-id="https://www.lukasvileikis.com/category/owasp/">OWASP Top 10</a> vulnerabilities prevalent in web applications, perhaps use a firewall, invest into an intrusion detection system etc.</p>



<h2 class="wp-block-heading">Summary</h2>



<p>The first vulnerability in the <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">OWASP Mobile Top 10</a> is related to the use of an insecurely configured service or an API &#8211; a vulnerable endpoint &#8211; that usually interacts with another application. To avoid such a vulnerability being introduced into your mobile applications, limit the applications that are allowed to communicate with your application, familiarize yourself with the <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">OWASP Mobile Top 10</a> and general security best practices, do not violate the security guidelines of the platform you are developing in, avoid unintentional misuse of the platform or security features and you should be well on your way to more secure mobile applications.</p>



<p>However, if you mobile application does get compromised, <a href="https://breachdirectory.com/home?lang=en">be sure to run a check through the data breaches available in BreachDirectory to see if you are at risk of identity theft and secure yourself</a>.</p><p>The post <a href="https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/">OWASP Mobile Top 10 Part 1: Improper Platform Usage</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/owasp-mobile-top-10-part-1-improper-platform-usage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is the OWASP Mobile Top 10?</title>
		<link>https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-is-the-owasp-mobile-top-10</link>
					<comments>https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/#comments</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Tue, 16 Feb 2021 18:39:55 +0000</pubDate>
				<category><![CDATA[OWASP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=418</guid>

					<description><![CDATA[<p>If you ever heard of web application security, you probably heard of OWASP. And if you heard of OWASP, you probably heard about the OWASP</p>
<p>The post <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">What is the OWASP Mobile Top 10?</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>If you ever heard of web application security, you probably heard of OWASP. And if you heard of OWASP, you probably heard about the OWASP Top 10. The Open Web Application Security Project, or OWASP for short, is an international non-profit organization dedicated to web-application security. OWASP is widely known for publishing materials covering their projects &#8211; one of their projects is OWASP Top 10 which is a regularly-updated report outlining security concerns for web application security. The OWASP Top 10, as the name suggests, focuses on the Top 10 risks which threaten web applications. The 2017 edition of OWASP <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/category/owasp/" data-type="URL" data-id="https://www.lukasvileikis.com/category/owasp/" target="_blank">has been covered extensively on this blog</a>, but there&#8217;s also something we haven&#8217;t talked about &#8211; OWASP also releases an OWASP Mobile Top 10. This blog post will cover what it is.</p>



<h2 class="wp-block-heading">What is the OWASP Mobile Top 10?</h2>



<p>The OWASP Mobile Top 10 is just like the <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/category/owasp/" target="_blank">OWASP Top 10</a>, but for mobile applications. Here&#8217;s what it contains (the list contains flaws from the most to the least severe):</p>



<ol class="wp-block-list"><li>Improper Platform Usage &#8211; this category covers the failure to use proper platform security controls (i.e it might cover the misuse of TouchID or some other security control that is part of the mobile system)</li><li>Imsecure Data Storage &#8211; insecure data storage refers to, obviously, insecure storage of data. But what does that mean exactly? Well, it&#8217;s pretty simple to explain &#8211; any data that is (or was) stored insecurely (for example, on a lost mobile device that was attained by a malicious party) could be at risk.</li><li>Insecure Communication &#8211; this one is also pretty self-explanatory. Any communication that is conducted over an insecure medium should be considered compromised. Here &#8220;an insecure medium&#8221; could mean a compromised or a monitored wi-fi network, communicating via an unencrypted channel that is monitored, using compromised network devices for communication etc.</li><li>Insecure Authentication &#8211; this type of vulnerability refers to a poor or a missing authentication scheme that could allow an attacker to anonymously perform malicious actions.</li><li>Insufficient Cryptography &#8211; this vulnerability category includes anything that does not include sufficient cryptographic measures (e.g anyone with access to unencrypted or decrypted data etc.) The attack vectors for this vulnerability include all of the attack vectors available since an attack that might be viable for an attacker to execute depends on the vulnerable application. </li><li>Insecure Authorization &#8211; this vulnerability category is pretty self-explanatory too. If a malicious party understands how a certain authorization scheme (e.g register, login forms etc.) is vulnerable, they can log in to an application as a user, or, in the worst case scenario, an administrator or a manager of some sort.</li><li>Poor Code Quality &#8211; now this vulnerability category is a little bit more interesting because the threats for this vulnerability category might differ depending on the code that is vulnerable: a nefarious party might pass some malicious code in an input box of a mobile application and then gain access to it, perform some type of data theft, etc. This vulnerability category is very specific to the application that is being attacked by the nefarious party because it depends on the code of the mobile application.</li><li>Code Tampering &#8211; this vulnerability category is frequently exploited by making direct changes to the application&#8217;s library (i.e if the code for a mobile game is hosted on GitHub and it&#8217;s used in the mobile game, an attacker could modify the code such that it steals information etc.)</li><li>Reverse Engineering &#8211; this vulnerability category is not a vulnerability in and of itself, but it can lead to a suite of different vulnerabilities when discovered by an attacker because when searching for vulnerabilities, some attackers typically download an app from an app store and analyze (reverse engineer) the app within their own local environment using their own tools. A mobile application that is reverse engineered and found to have some vulnerabilities is bound to be of interest to an attacker.</li><li>Extraneous Functionality &#8211; a nefarious party might seek to understand code functionality in order to better understand what it does, where it connects to, maybe what API endpoints it uses etc. to discover functions that might be extraneous and exploit them afterwards.</li></ol>



<h2 class="wp-block-heading">Summary</h2>



<p>The <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/category/owasp/" target="_blank">OWASP</a> Mobile Top 10 is just like the <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/category/owasp/" target="_blank">OWASP Top 10</a>, but for mobile applications. The above list of the top 10 mobile flaws was last compiled in 2016 so it&#8217;s pretty old, but it&#8217;s still applicable nonetheless &#8211; if you are developing mobile applications, please keep this list in mind and your should do just fine security-wise. I also might start creating OWASP Mobile Security series <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/category/owasp/" target="_blank">just like I did a couple of years earlier</a>, so thank you for reading and stay tuned!</p><p>The post <a href="https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/">What is the OWASP Mobile Top 10?</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/what-is-the-owasp-mobile-top-10/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>The Basics of MySQL Security</title>
		<link>https://www.lukasvileikis.com/the-basics-of-mysql-security/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-basics-of-mysql-security</link>
					<comments>https://www.lukasvileikis.com/the-basics-of-mysql-security/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Fri, 30 Oct 2020 11:57:04 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=399</guid>

					<description><![CDATA[<p>If you have ever built a website, chances are you took care of security. Securing web applications does have its own caveats though &#8211; did</p>
<p>The post <a href="https://www.lukasvileikis.com/the-basics-of-mysql-security/">The Basics of MySQL Security</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>If you have ever built a website, chances are you took care of security. Securing web applications does have its own caveats though &#8211; did you take care of the security of the database? In this post we will look at the options that can make MySQL perform at the very best of its ability security-wise. Keep in mind that this is not a very comprehensive guide (certain topics such as backup security etc. will not be touched) and some of the aspects discussed here are not even limited to MySQL, but it should provide some insight into the security of this relational database management system.</p>



<h2 class="wp-block-heading">Steps to Secure Your MySQL Instances</h2>



<p>MySQL uses security-based Access Control Lists (ACLs) for all operations that users attempt to perform &#8211; that&#8217;s why accounts are one of the key parts of securing it. To keep your MySQL accounts secure, follow these steps:</p>



<ol class="wp-block-list"><li>Require all MySQL accounts to have a password.  While such a thing may seem basic, it should not be overlooked &#8211; if your MySQL accounts do not have a password, anyone can connect to them.</li><li>Never provide a MySQL password over the command line. For example, a query like this should never be executed:<br><code>mysql -u user -ppassword db_name</code><br>You should avoid running queries like the above because on some systems the password might become visible to system status commands that can be invoked by other users &#8211; the command <code>ps</code>, for example, displays information about running processes.<br>You can censor the password by only typing <code>-p</code> without the actual password (you will be prompted for the password afterwards), but there&#8217;s a way to avoid the password being provided in such a way altogether &#8211; on Unix, you can provide your password in a <code>my.cnf</code> file (different files can also be used):<br><code>[client]<br>password=password</code><br>You should also set the file access mode to 400 or 600 to make the file inaccessible to anyone but yourself.<br>To use the file from a command line, use the <code>--defaults-file</code> option specifying the full path to the file:<br><code>mysql --defaults-file=/var/lib/mysql/my.cnf</code></li><li>Make sure that the only account used for running MySQL is the Unix user account with read or write privileges in the database directories.</li><li>Avoid running MySQL or MariaDB as the <code>root</code> user of the system &#8211; if you do so, any user with the <code>FILE</code> privilege could create or modify any files on the server as <code>root</code>.</li><li>Avoid giving anyone except the <code>root</code> user access to the user table in the <code>mysql</code> database.</li><li>Do not choose common passwords or passwords from the dictionary when creating MySQL users or any users in general &#8211; consider using a password manager.</li><li>Never store plain text passwords in the database &#8211; use a one-way hashing algorithm such as BCrypt, and, if you have a lot of users, consider using salts to make password cracking harder when dealing with a huge amount of hashes.</li><li>Do not trust any input provided to your web application by the user &#8211; by doing so you will protect your database against SQL injection attacks.</li><li>Do not grant far-reaching privileges to users who do not need them: for example, do not grant <code>PROCESS</code> or <code>SUPER</code> privileges to everyone. To read more about <code>GRANT</code> and <code>SUPER</code> privileges, <a rel="noreferrer noopener" href="https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_process" target="_blank">take a look at the MySQL documentation</a>.</li><li>The amount of connections pertained to a single MySQL account can be controlled by altering the <code>max_user_connections</code> variable in <code>mysqld</code>.</li></ol>



<p>However, the security of MySQL does not end with securing MySQL accounts. The following things should also not be ignored:</p>



<ol class="wp-block-list" id="block-29300aa0-559a-4754-8ec8-6decec675e28"><li>Have a look into how the MySQL access privilege system works, use the <code>GRANT</code> and <code>REVOKE</code> statements to give and take away privileges from MySQL users, only grant as much privileges as absolutely necessary and never grant them to all of the hosts &#8211; regularly check which accounts have access to what using the <code>SHOW GRANTS</code> statement and <code>REVOKE</code> privileges that are not necessary.</li><li>Consider using a firewall and putting MySQL behind it.</li><li>Protect your web applications that run MySQL with an encrypted connection by using SSL &#8211; MySQL supports internal SSL connections.</li><li>Encrypt your binary log files and relay log files: in MySQL, encryption of these files can be enabled when the system variable <code>binlog_encryption</code> is set to <code>ON</code>.</li><li>Consider making the plugin directory read-only to the server or setting the <code>secure_file_priv</code> variable to a directory where <code>SELECT</code> writes can run safely &#8211; by doing so you will avoid the scenario of a user writing executable code to a file in the plugin directory using <code>SELECT … INTO DUMPFILE</code>.</li></ol>



<h2 class="wp-block-heading">Summary</h2>



<p>In order to ensure the security of your MySQL installation you have to take some steps that are not limited to MySQL and can be applied to pretty much all kinds of software. These steps include requiring all MySQL accounts to have a password, not providing the MySQL password over the command line, avoiding to grant far-reaching privileges etc.</p>



<p>If you&#8217;ve followed all (or most) of the steps outlined above, your database should be well on the way to a more secure future.</p><p>The post <a href="https://www.lukasvileikis.com/the-basics-of-mysql-security/">The Basics of MySQL Security</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/the-basics-of-mysql-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Build Stuff 2019 Retrospective</title>
		<link>https://www.lukasvileikis.com/build-stuff-2019-retrospective/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-stuff-2019-retrospective</link>
					<comments>https://www.lukasvileikis.com/build-stuff-2019-retrospective/#comments</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Mon, 18 Nov 2019 18:30:07 +0000</pubDate>
				<category><![CDATA[Speaking]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=331</guid>

					<description><![CDATA[<p>It&#8217;s November. For some developers it&#8217;s just an ordinary month &#8211; for some of them it means maintenance of projects, for some &#8211; building something</p>
<p>The post <a href="https://www.lukasvileikis.com/build-stuff-2019-retrospective/">Build Stuff 2019 Retrospective</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p> It&#8217;s November. For some developers it&#8217;s just an ordinary month &#8211; for some of them it means maintenance of projects, for some &#8211; building something cool on their own. Some of them visit Build Stuff. A lot of them, actually &#8211; this year Build Stuff has had around 1,400 attendees.</p>



<h3 class="wp-block-heading">Build Stuff 2019</h3>



<p> Build Stuff is an annual conference for developers being organized in Lithuania. Conference theme for this year &#8211; Programming Jungle.</p>



<p> As usual, the conference started off with a welcome talk:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-1024x768.jpg" alt="" class="wp-image-334" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-1024x768.jpg" alt="" class="wp-image-335" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_2-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-1024x768.jpg" alt="" class="wp-image-336" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_WelcomeTalk_3-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> After the welcome talk, we had a keynote delivered by David Phillips who gave insights on storytelling and techniques how to enhance stories &#8211; after that, Patrick Kua spoke about talking with tech leads.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-1024x768.jpg" alt="" class="wp-image-368" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/8-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> On Thursday, we saw Julie Lerman covering the usage of legacy systems:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="750" height="790" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy.png" alt="" class="wp-image-337" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy.png 750w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy-285x300.png 285w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy-256x270.png 256w" sizes="(max-width: 750px) 100vw, 750px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-1024x768.jpg" alt="" class="wp-image-338" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_2-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="740" height="750" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3.png" alt="" class="wp-image-339" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3.png 740w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-296x300.png 296w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-266x270.png 266w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-1024x768.jpg" alt="" class="wp-image-369" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_LivingWithYourLegacy_3-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>After her talk, in another venue, Rene Schulte got on stage to speak about mixed reality:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-1024x768.jpg" alt="" class="wp-image-340" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_ReneSchulte_MixedReality-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> The next day, we saw Alexandra White on stage speaking about the importance of documenting code and keeping things simple too &#8211; she spoke about the importance of proper code documentation and understandable READMEs.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="850" height="520" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation.png" alt="" data-id="341" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation.png" data-link="https://www.lukasvileikis.com/?attachment_id=341" class="wp-image-341" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation.png 850w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation-300x184.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation-768x470.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation-441x270.png 441w" sizes="(max-width: 850px) 100vw, 850px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="880" height="530" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2.png" alt="" data-id="342" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2.png" data-link="https://www.lukasvileikis.com/?attachment_id=342" class="wp-image-342" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2.png 880w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2-300x181.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2-768x463.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_2-448x270.png 448w" sizes="(max-width: 880px) 100vw, 880px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="880" height="535" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3.png" alt="" data-id="343" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3.png" data-link="https://www.lukasvileikis.com/?attachment_id=343" class="wp-image-343" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3.png 880w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3-300x182.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3-768x467.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_3-444x270.png 444w" sizes="(max-width: 880px) 100vw, 880px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="845" height="520" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4.png" alt="" data-id="344" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4.png" data-link="https://www.lukasvileikis.com/?attachment_id=344" class="wp-image-344" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4.png 845w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4-300x185.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4-768x473.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_4-439x270.png 439w" sizes="(max-width: 845px) 100vw, 845px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="860" height="515" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5.png" alt="" data-id="345" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5.png" data-link="https://www.lukasvileikis.com/?attachment_id=345" class="wp-image-345" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5.png 860w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5-300x180.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5-768x460.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_AlexandraWhite_Documentation_5-451x270.png 451w" sizes="(max-width: 860px) 100vw, 860px" /></figure></li></ul></figure>



<p> The event, as usual, had many different  activities including a basketball game, focus-controlled cars and others &#8211; we even had a button-clicking game provided by Oracle where the winner is a person which manages to click the most buttons in 30 seconds:</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-1024x768.jpg" alt="" data-id="346" data-link="https://www.lukasvileikis.com/?attachment_id=346" class="wp-image-346" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="870" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2-1024x870.png" alt="" data-id="347" data-link="https://www.lukasvileikis.com/?attachment_id=347" class="wp-image-347" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2-1024x870.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2-300x255.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2-768x652.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2-318x270.png 318w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Basketball_2.png 1030w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-1024x768.jpg" alt="" data-id="350" data-link="https://www.lukasvileikis.com/?attachment_id=350" class="wp-image-350" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Dancing-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-1024x768.jpg" alt="" data-id="351" data-link="https://www.lukasvileikis.com/?attachment_id=351" class="wp-image-351" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_1-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-1024x768.jpg" alt="" data-id="352" data-link="https://www.lukasvileikis.com/?attachment_id=352" class="wp-image-352" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_FocusControlledCars_2-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="602" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame-1024x602.png" alt="" data-id="353" data-link="https://www.lukasvileikis.com/?attachment_id=353" class="wp-image-353" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame-1024x602.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame-300x176.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame-768x451.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame-459x270.png 459w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_NortalGame.png 1055w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="720" height="790" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Oracle.png" alt="" data-id="354" data-link="https://www.lukasvileikis.com/?attachment_id=354" class="wp-image-354" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Oracle.png 720w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Oracle-273x300.png 273w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Oracle-246x270.png 246w" sizes="(max-width: 720px) 100vw, 720px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-1024x768.jpg" alt="" data-id="355" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-scaled.jpg" data-link="https://www.lukasvileikis.com/?attachment_id=355" class="wp-image-355" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Visma-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li></ul></figure>



<p> Hey, we even had style corners with stickers on the table:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="610" height="790" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_StyleCorner.png" alt="" class="wp-image-356" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_StyleCorner.png 610w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_StyleCorner-232x300.png 232w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_StyleCorner-208x270.png 208w" sizes="(max-width: 610px) 100vw, 610px" /></figure>



<h3 class="wp-block-heading">The Jungle Party</h3>



<p> A party is a traditional part of Build Stuff &#8211; this year it was organized on November 14. We had Dylan Beattie on the stage singing about REST APIs, Javascript frameworks, source control and DMCA takedowns.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="465" height="375" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_1.png" alt="" data-id="357" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_1.png" data-link="https://www.lukasvileikis.com/?attachment_id=357" class="wp-image-357" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_1.png 465w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_1-300x242.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_1-335x270.png 335w" sizes="(max-width: 465px) 100vw, 465px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="430" height="365" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_2.png" alt="" data-id="358" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_2.png" data-link="https://www.lukasvileikis.com/?attachment_id=358" class="wp-image-358" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_2.png 430w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_2-300x255.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_2-318x270.png 318w" sizes="(max-width: 430px) 100vw, 430px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="435" height="375" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_3.png" alt="" data-id="359" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_3.png" data-link="https://www.lukasvileikis.com/?attachment_id=359" class="wp-image-359" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_3.png 435w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_3-300x259.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_3-313x270.png 313w" sizes="(max-width: 435px) 100vw, 435px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="450" height="350" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_4.png" alt="" data-id="360" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_4.png" data-link="https://www.lukasvileikis.com/?attachment_id=360" class="wp-image-360" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_4.png 450w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_4-300x233.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Party_4-347x270.png 347w" sizes="(max-width: 450px) 100vw, 450px" /></figure></li></ul></figure>



<p> And, of course, no event would be complete without some popcorn on the table, would it?</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1020" height="725" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn.png" alt="" data-id="363" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn.png" data-link="https://www.lukasvileikis.com/?attachment_id=363" class="wp-image-363" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn.png 1020w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn-300x213.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn-768x546.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn-380x270.png 380w" sizes="(max-width: 1020px) 100vw, 1020px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="890" height="775" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2.png" alt="" data-id="364" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2.png" data-link="https://www.lukasvileikis.com/?attachment_id=364" class="wp-image-364" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2.png 890w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2-300x261.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2-768x669.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_2-310x270.png 310w" sizes="(max-width: 890px) 100vw, 890px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="645" height="790" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_3.png" alt="" data-id="365" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_3.png" data-link="https://www.lukasvileikis.com/?attachment_id=365" class="wp-image-365" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_3.png 645w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_3-245x300.png 245w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_3-220x270.png 220w" sizes="(max-width: 645px) 100vw, 645px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-1024x768.jpg" alt="" data-id="366" data-full-url="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-scaled.jpg" data-link="https://www.lukasvileikis.com/?attachment_id=366" class="wp-image-366" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-1024x768.jpg 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-300x225.jpg 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-768x576.jpg 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-1536x1152.jpg 1536w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-2048x1536.jpg 2048w, https://www.lukasvileikis.com/wp-content/uploads/2019/11/BuildStuff2019_Popcorn_4-360x270.jpg 360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li></ul></figure><p>The post <a href="https://www.lukasvileikis.com/build-stuff-2019-retrospective/">Build Stuff 2019 Retrospective</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/build-stuff-2019-retrospective/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Cleaning a mechanical keyboard: Corsair Vengeance K70</title>
		<link>https://www.lukasvileikis.com/cleaning-a-mechanical-keyboard-corsair-vengeance-k70/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cleaning-a-mechanical-keyboard-corsair-vengeance-k70</link>
					<comments>https://www.lukasvileikis.com/cleaning-a-mechanical-keyboard-corsair-vengeance-k70/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Mon, 19 Aug 2019 11:59:41 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=319</guid>

					<description><![CDATA[<p>You noticed your keyboard has dirt, some keys are stuck, some keys are not registering properly …or maybe you just spilled some coffee on your</p>
<p>The post <a href="https://www.lukasvileikis.com/cleaning-a-mechanical-keyboard-corsair-vengeance-k70/">Cleaning a mechanical keyboard: Corsair Vengeance K70</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p> You noticed your keyboard has dirt, some keys are stuck, some keys are not registering properly …or maybe you just spilled some coffee on your keyboard. What do you do now?<br> The answer is plain and simple: clean it. Here&#8217;s how to clean a Corsair Vengeance K70.</p>



<p>The Corsair Vengeance K70 comes with Cherry MX Red key switches, ten contoured buttons for gaming, anti-ghosting, adjustable back-lighting, multimedia controls and even a detachable wrist rest. For those of you not familliar with what I am talking about, this is a Corsair Vengeance K70:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1000" height="787" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70.png" alt="" class="wp-image-320" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70.png 1000w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-300x236.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-768x604.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-343x270.png 343w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption>Corsair Vengeance K70</figcaption></figure>



<h3 class="wp-block-heading">Cleaning the keyboard</h3>



<p>Here&#8217;s what you will need in order to clean the K70 (this also applies to other mechanical keyboards too):</p>



<ol class="wp-block-list"><li>Paper towels</li><li>Ear buds</li><li>Warm water</li></ol>



<p>Some people might recommend some canned air or an air compressor, but in my opinion, they&#8217;re not necessary.</p>



<p>To start off with the cleaning of your keyboard, take a picture of the keyboard and then remove all of the keys using a keycap puller or, if you do not have one, remove all of the keys one by one manually. Be very careful when removing larger keycaps, they usually have their own stabilizers. Some keyboards come with a wire stabilizer for larger buttons, but this isn&#8217;t the case with the K70.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="800" height="775" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Accessories.png" alt="" class="wp-image-321" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Accessories.png 800w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Accessories-300x291.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Accessories-768x744.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Accessories-279x270.png 279w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption>Corsair Vengeance K70 accessories</figcaption></figure>



<p>Here&#8217;s how Corsair&#8217;s Cherry MX Red switches look like when the keyboard is dirty:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="560" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches-1024x560.png" alt="" class="wp-image-322" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches-1024x560.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches-300x164.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches-768x420.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches-494x270.png 494w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtySwitches.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>The keys don&#8217;t look all too pretty when the keyboard is dirty either:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="598" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys-1024x598.png" alt="" class="wp-image-323" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys-1024x598.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys-300x175.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys-768x448.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys-463x270.png 463w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-DirtyKeys.png 1225w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>In order to clean the dust and dirt between the switches and on the keys, take some ear buds, pour some warm water on them and sweep the dirt away. Do the same with the keys. Repeat the process until you clean the switches and the keys. Be sure to clean the whole keyboard plate. You can also clean the keys using warm water and some dishwashing soap. The switches, when clean, should look something like this:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="612" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches-1024x612.png" alt="" class="wp-image-324" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches-1024x612.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches-300x179.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches-768x459.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches-452x270.png 452w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-CleanSwitches.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Clean Cherry MX Red Switches</figcaption></figure>



<p>After you have cleaned the switches and the keycaps, lay out all of the keycaps on a paper towel and leave them to dry. <em>Do not use a hair dryer</em> &#8211; the heat coming out of it might cause harm to the keycaps (it might cause the keycaps to bend).</p>



<h3 class="wp-block-heading">Final touch &#8211; reinstating the keycaps</h3>



<p>In order to bring the keyboard back to its former shape, use the snapshot you took earlier to reinstall all the keys into their former positions. After you&#8217;ve successfully done that, you&#8217;re pretty much done. Here&#8217;s how the keyboard should look like now:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="378" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean-1024x378.png" alt="" class="wp-image-325" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean-1024x378.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean-300x111.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean-768x284.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean-604x223.png 604w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/Corsair-Vengeance-K70-Clean.png 1070w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Clean Corsair Vengeance K70</figcaption></figure><p>The post <a href="https://www.lukasvileikis.com/cleaning-a-mechanical-keyboard-corsair-vengeance-k70/">Cleaning a mechanical keyboard: Corsair Vengeance K70</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/cleaning-a-mechanical-keyboard-corsair-vengeance-k70/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress Malware: WP-VCD</title>
		<link>https://www.lukasvileikis.com/wordpress-malware-wp-vcd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-malware-wp-vcd</link>
					<comments>https://www.lukasvileikis.com/wordpress-malware-wp-vcd/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Sat, 03 Aug 2019 21:20:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=305</guid>

					<description><![CDATA[<p>Using nulled WordPress themes and plugins is bad. Why? Because sometimes (well, most of the time) nulled plugins or themes contain malicious code that looks</p>
<p>The post <a href="https://www.lukasvileikis.com/wordpress-malware-wp-vcd/">WordPress Malware: WP-VCD</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p> Using nulled WordPress themes and plugins is bad. Why? Because sometimes (well, most of the time) nulled plugins or themes contain malicious code that looks something like this:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="985" height="335" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions.png" alt="" class="wp-image-312" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions.png 985w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-300x102.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-768x261.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-604x205.png 604w" sizes="(max-width: 985px) 100vw, 985px" /><figcaption>WP-VCD infects functions.php</figcaption></figure>



<p> That&#8217;s wp-vcd.php. When a WordPress website is infected with this piece of malware, the infected file resides in the &#8220;wp-includes&#8221; directory and every time a page on a WordPress website is accessed overwrites the functions.php file with malicious code that looks like this:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="698" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions-1024x698.png" alt="" class="wp-image-314" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions-1024x698.png 1024w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions-300x205.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions-768x524.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions-396x270.png 396w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infected-functions.png 1255w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>functions.php infected by WP-VCD</figcaption></figure>



<p> Removing the code doesn&#8217;t do any good &#8211; as soon as any file gets accessed (the malware overwrites the contents of the functions.php file which can be used to add certain features and functionality to a WordPress website), the code comes back because the main file &#8211; wp-vcd.php &#8211; is not being removed.</p>



<p>Here&#8217;s a couple interesting facts about this piece of malware:</p>



<ul class="wp-block-list"><li>The wp-vcd malware often comes pre-installed in nulled themes;</li><li>Websites affected by this malware can have new WordPress administrator users created with their names similar to &#8220;100010010&#8221;;</li><li>When a script affected by this malware is accessed directly, its code is instantly terminated with the message &#8220;ERROR_WP_ACTION WP_V_CD WP_CD&#8221;;</li><li>The wp-vcd.php file starts with a variable called &#8220;install_code&#8221;, which is a base-64 encoded string;</li><li>The base64-encoded string contains pieces of code that creates a wp-tmp.php file;</li><li>wp-vcd.php file injects code into functions.php and alters the modification date and time;</li><li>Once a website is affected by this piece of malware, it might redirect to shady websites;</li><li>This malware might propagate to all of WordPress themes (inactive themes included) and infect all of WordPress installations on the same server forcing a hosting provider to suspend an account in order to prevent the spread of the malware.</li></ul>



<p>  Files that are usually affected with this malware are:</p>



<ul class="wp-block-list"><li>wp-includes/wp-vcd.php (created by the malware);</li><li>wp-includes/wp-tmp.php (created by the malware);</li><li>wp-content/themes/*(any theme)/functions.php (if the wp-vcd.php file is not removed, malicious code is appended to functions.php and reappears upon removal);</li><li>wp-includes/class.theme-modules.php (created by the malware and when affected by it, functions.php is overwritten by this code. This file installs the wp-vcd malware into the theme);</li><li>wp-includes/class.wp.php (created by the malware, the file tries to insert a WordPress user with the ID and name of &#8220;100010010&#8221; with the password hash &#8220;\$P\$BaRp7gFRTND5AwwJwpQY8EyN3otDiL.&#8221; into the database. Since WordPress has a class-wp.php file by default, the class.wp.php file might not be always noticed when removing malware manually).</li></ul>



<p>The malware scans the themes directory and modifies all functions.php files found within themes. WP-VCD then also makes use of the touch() function in PHP which sets the access and modification time of a specified file:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="985" height="335" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-touch.png" alt="" class="wp-image-315" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-touch.png 985w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-touch-300x102.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-touch-768x261.png 768w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/wp_vcd-infects-functions-touch-604x205.png 604w" sizes="(max-width: 985px) 100vw, 985px" /><figcaption>WP-VCD in action</figcaption></figure>



<p>One interesting fact about this malware (and the above code block in particular) is that the functions.php file will only be infected if its code does not contain &#8220;WP_V_CD&#8221;. In other words, if the content of a functions.php file contains the string &#8220;WP_V_CD&#8221;, the above code block will not run (24th code line, the malware checks if the content of functions.php does not contain &#8220;WP_V_CD&#8221;) and functions.php will not be infected &#8211; the string would then act like a killswitch.</p>



<h3 class="wp-block-heading">Deleting the malware</h3>



<p>Recovering a website from a malware infection is not easy. A developer cannot just delete the contents of one file and call it a day. Instead, it is very important to locate all areas which could have been affected by malware and searching for backdoors in every file in that directory &#8211; checking the integrity of files can prove useful too. A developer also needs to understand why did a website get infected with malware in the first place: most likely that happened due to the fact that the developer installed a nulled theme or a nulled plugin on the website &#8211; often, nulled plugins or themes come with backdoors. Take a look at the following example:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="500" height="300" src="https://www.lukasvileikis.com/wp-content/uploads/2019/08/potentially-malicious-plugin.png" alt="" class="wp-image-316" srcset="https://www.lukasvileikis.com/wp-content/uploads/2019/08/potentially-malicious-plugin.png 500w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/potentially-malicious-plugin-300x180.png 300w, https://www.lukasvileikis.com/wp-content/uploads/2019/08/potentially-malicious-plugin-450x270.png 450w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption>Potentially malicious plugin</figcaption></figure>



<p>The above code block not only describes a WordPress plugin &#8211; it also includes a potentially malicious file if it does not already exist. When included, the file could do all sorts of things &#8211; including spreading malware. In order to prevent such code from jeopardizing the security of your web application, double check the source code of your plugins for malicious code and make sure all plugins you are using come from an official source.</p>



<h3 class="wp-block-heading">Wrap-up</h3>



<p>Malware like WP-VCD is one of the prime examples why developers should never use nulled themes or plugins &#8211; although providing nulled content is pretty typical for websites that offer to download &#8220;premium software for free&#8221;, using nulled plugins or themes comes with a price and often, the price is your website getting infected.</p><p>The post <a href="https://www.lukasvileikis.com/wordpress-malware-wp-vcd/">WordPress Malware: WP-VCD</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/wordpress-malware-wp-vcd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Filtering user input in web applications: the basics</title>
		<link>https://www.lukasvileikis.com/filtering-user-input-in-web-applications-the-basics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=filtering-user-input-in-web-applications-the-basics</link>
					<comments>https://www.lukasvileikis.com/filtering-user-input-in-web-applications-the-basics/#respond</comments>
		
		<dc:creator><![CDATA[Colors]]></dc:creator>
		<pubDate>Sun, 21 Jul 2019 21:05:25 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.lukasvileikis.com/?p=302</guid>

					<description><![CDATA[<p>SQL Injection. Cross-Site Scripting. These are just two of web application security flaws that can be prevented by effectively filtering user input. Web developers can</p>
<p>The post <a href="https://www.lukasvileikis.com/filtering-user-input-in-web-applications-the-basics/">Filtering user input in web applications: the basics</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a rel="noreferrer noopener" href="https://www.lukasvileikis.com/sql-injection-what-it-is-how-it-works-how-it-can-be-mitigated/" target="_blank">SQL Injection</a>. <a rel="noreferrer noopener" href="https://www.lukasvileikis.com/2017-owasp-top-10-for-php-developers-part-7-cross-site-scripting-xss/" target="_blank">Cross-Site Scripting</a>. These are just two of web application security flaws that can be prevented by effectively filtering user input. Web developers can filter user-supplied input in two ways &#8211; either by utilizing white-list or black-list input validation. Each method of input sanitization has their own pros and cons, so I will go through each of them individually.</p>



<h3 class="wp-block-heading">Black-list input sanitization</h3>



<p>Black-list input validation is one of the most common ways user-supplied input can be validated. The way black-list input sanitization works is pretty simple: when a list of disallowed values is created and any of those values appear in a request, the request gets blocked. However, the issue with validating user-supplied input in such a way is that web developers, especially those who are not very keen in the field of web security, are very likely to block only one or very few attack vectors which means that potential attacker would have very many options to choose from when crafting his payload. Nonetheless, there is another option &#8211; white-list input validation.</p>



<h3 class="wp-block-heading">White-list input sanitization</h3>



<p>White-list input validation is very similar to black-list input validation in that it also uses values to understand which requests should be blocked, but it works in an opposite way &#8211; when using white-list input sanitization, developers provide a list of allowed values as opposed to providing only disallowed values. In most cases, white-list input sanitization is much more effective than black-list input sanitization, but in some cases, it might be very difficult to create an effective white-list filter because white-list input validation is only very effective when all good values are known.</p>



<h3 class="wp-block-heading">Sanitizing input in PHP</h3>



<p>Here&#8217;s some functions that can be useful when sanitizing input in PHP:</p>



<ul class="wp-block-list"><li><strong>htmlspecialchars()</strong> or <strong>htmlentities()</strong> &#8211; protects against Cross-Site Scripting attacks by converting characters to HTML entities. It is worth noting that <strong>htmlspecialchars()</strong> only converts special characters while <strong>htmlentities()</strong> converts all of the applicable characters;</li><li><strong>FILTER_SANITIZE_STRING</strong> &#8211; removes tags from a string (used with the <strong>filter_var()</strong> function);</li><li><strong>FILTER_VALIDATE_EMAIL</strong> &#8211; checks if an email address is valid (used with the <strong>filter_var()</strong> function);</li><li><strong>FILTER_SANITIZE_EMAIL</strong> &#8211; removes all illegal characters from an email address (used with the <strong>filter_var()</strong> function);</li><li><strong>FILTER_SANITIZE_URL</strong> &#8211; removes all illegal characters from a given URL;</li><li><strong>FILTER_SANITIZE_SPECIAL_CHARS</strong> &#8211; HTML-encodes special characters;</li><li><strong>(int) $_GET / $_POST</strong> &#8211; allows developers to make sure a given parameter is an integer. <strong>FILTER_VALIDATE_INT</strong> or <strong>is_numeric()</strong> can also be used;</li><li><strong>mysql_real_escape_string()</strong> &#8211; escapes any special characters that are used within a query;</li><li><strong>strip_tags()</strong> &#8211; strips HTML and PHP tags from a string;</li><li><strong>PHP Data Objects (PDO)</strong> &#8211; while PDO is not a function, it is one of the best ways to protect against SQL Injection attacks by using <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/Prepared_statement" target="_blank">prepared statements</a>.</li></ul><p>The post <a href="https://www.lukasvileikis.com/filtering-user-input-in-web-applications-the-basics/">Filtering user input in web applications: the basics</a> first appeared on <a href="https://www.lukasvileikis.com">Lukas Vileikis</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.lukasvileikis.com/filtering-user-input-in-web-applications-the-basics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
