Why are CA's now signing root certs with SHA2?

No. It's irrelevant, although it's better that they don't use weak root signatures. I think the setting may refer to the intermediate CA instead.

Remember that from 01/01/2017 Microsoft will start rejecting SHA-1 signed  SSL certificates, and Google will degrade the security level indicator for those sites with a certificate which is valid after 01/01/2016, and even if it is valid after 01/01/2017.

These SHA-1 rejections mean that the whole trust path must be using SHA-2, and that includes the intermediate CAs. OTOH, if you still want https: to work on Windows XP systems, its Internet Explorer won't be able to validate SHA-2 signed certificates. I guess that's the reason they let you choose, instead of simply using a SHA2 root CA.


How to send a string format exploit through socket

The solution wasn't related to escaping.

Was required to read the buffer before sending the string.

Here is the full solution:

https://github.com/ramonmedeiros/c-wars/tree/master/level2


Keystroke logging in virtual machine with soft keyboard

Some keyloggers capture inputs to virtual keyboards by taking screenshots whenever the mouse clicks. This is still effective if the host has a keylogger and the guest VM is using a virtual keyboard.

The host OS receives the click from the mouse and then passes that event on to the VM. The keylogger on the host could take a screenshot at that time.

Screenshots are just one way of capturing inputs to keyloggers, but it's the example you are looking for.


Does VPNs even protect ftp and virtual machines connections?

If your VPN is configured properly all traffic is included. But, proper configuration is not guaranteed and in fact many VPN are not properly configured by default or cannot be configured properly at all. Typical problems are that they fail to support IPv6 or that the DNS lookup is still done through the local resolver and not through the VPN.

There are sites like dnsleaktest.com and ipv6leak.com which help you to determine if one of these typical problems affect you. It would be best to check this not only from the main system but from the virtual machines too to be sure.

The most secure way would be of course to use dedicated VPN hardware. In this case all traffic is going through this hardware and as long you don't have any additional network access (like WiFi in parallel to VPN) you can be more sure that there is no leak compared to a software only solution.


I definitely agree with thexacre about the ineffectiveness of blacklisting -- and not just because the answer referenced my website :).

Not being able to get rid of the beginning content portion can certainly limit the opportunity for successful XSS via a meta tag, though it's not entirely impossible. For example, if the beginning portion ever changes to begin with a non-numeric word such as "No results for..." you might be able to inject something like:

;url=hxxp://www.maliciousxss.com" HTTP-EQUIV="refresh" blah=" which, based on your description should result in a meta tag similar to:

<meta property="the:property" content="No results for;url=hxxp://www.maliciousxss.com" HTTP-EQUIV="refresh" blah=" (Page 1)" />

I successfully tested it in FF 29.0.1 but I don't believe this would work in any other modern browser.

If the beginning text always starts with a number you could try something like

" STYLE="width:expression(alert('XSS'));" blah="which again based on your example should result in a meta tag similar to:

<meta property="the:property" content="100 results for" STYLE="width:expression(alert('XSS'));" blah=" (Page 1)" />

This one would only work in IE 7 or earlier so it's even more limited.

I had to make some assumptions of site behavior and additional input validation so these particular examples may not work, but I hope I've helped support thexacre's statement that blacklisting is rarely a completely effective approach. Whitelisting (when possible) is better but output encoding is always a must whenever user-generated data is incorporated in the server response.


The Kerberos (v5) RFC does not specify a lifetime but recommends nothing more than 25 hours life for each ticket (section 8.2) and a renewal time of max. one week. There is probably no good answer here as to why Stanford chose to break that recommendation.


Should I take (Pen test) approval from AWS for Fuzz testing my Application API's hosted on AWS?

Yes, you will still need to raise a ticket with AWS. You can find their policy here:
https://aws.amazon.com/security/penetration-testing/

They have no specific guidelines on what penetration testing consists of, but if you are using CloudFront or ELB, they may detect abnormal behavior. Therefore it's safer to register and to prevent an abuse notice.

Also note that even when hosting your own application on EC2 you cannot test on  m1.small, t1.micro or t2.nano.


Microsoft OneNote being detected as Malware

This appears to be an issue with the Generic/Heuristic detection in Avast. It has been raised by others in Avast forum as well :
https://forum.avast.com/index.php?topic=158789.0

https://forum.avast.com/index.php?topic=152101.0

Since the download link you posted is legitimate, it is less likely that it is a malicious download. It can be confirmed by scanning the downloaded file on virustotal.

The only possible reason I can think of is a possible false positive trigger. there are some known malwares that affect OneNote, but these infections are on machines which have OneNote pre-installed.
http://answers.microsoft.com/en-us/office/forum/office_2007-onenote/onenote-related-malware-plants-sirefefn-trojan/32a25d09-5ad4-45d3-abc0-6b9a97b601d3


In general, you can't be absolutely sure that there have been no changes to your data, especially if you're looking at the scenarios where an attacker has access to your application code. In that case, they can probably do anything which your application does, and you can't tell if they have once they are done.

However, if you work on securing access to your systems, and monitor any unexpected access to them, you can get a pretty good idea if something has changed.

For example, if only your application server can connect to your database server, with a limited privilege user, you can immediately reduce the risk of someone being able to edit the database contents - if they got the code in some way which didn't involve compromising the application server (perhaps from an old backup file), they'd still need to compromise the application server to be able to do anything to your data.

You can also implement things like offline auditing - store each day's audit logs on a read only system, as well as on the database system, and compare them on a regular basis. If someone can compromise both copies, you've probably got bigger problems.

Going to even more extensive levels, you can have devices which allow very limited access to data, and all access is logged. Banking systems sometimes take this approach, but it's probably too expensive to implement for any but the largest e-commerce sites.


what is the difference between virus, worm, trojan and other malware

These days most threats do not fall into any single of these categories, almost all will fall into more than one. These are called "blended threats" or more often simply just malware. It's rare that you see malware that only can replicate itself in one way, that's why malware is such a problem.

To be honest these terms don't mean much anymore, as there are many threats out there that don't fall into any of these categories, or more than one of these categories. You have to expect that malware will have several methods of spread. Malware may first be run by an unsuspecting user opening a PDF file from an email, but then spread to other systems over the network and USB sticks. Or it may arrive in a USB stick and spread itself by emailing a PDF to all known contacts.


Do telecom operators listen to every phone calls

It is possible for operators to fake their caller ID's although I have not heard of them doing it for phone calls in practice.

Certainly they are aware of the phone numbers you call, but considering how many calls would go through their systems each minute, I would say that the answer to your title question "Do telecom operators listen to every phone call?" would be a resounding no. It's just not possible without a huge amount of manpower. There are ways to automate the process using keyword recognition etc but it's not practical to have an actual person listening to every call.

Which carrier are you with/where are you located? We might be able to find some further information on any practices like this.


What is at risk if I do not validate Confirm Password on server side and only perform this validation on client side?

The rule is to control server side what actually matters for the server, and client side what matters for user. For example, if you want to allow only certain characters in password and a maximum length, this should be controlled server side. If you just want to be sure that the user knows what he/she has just typed, client side controls are fine.

Some controls can be done twice, because what matters for the server is the data, but what matters for user is to be warned of an error as soon as possible. For example it is fine to first control the validity of a field client side as soon as the field has been typed in to immediately warn the user, and then control it server side when the form is submitted.


What tool(s) can be used for MitM in a controlled environment to decrypt+relay HTTPS over MTLS traffic with SNI?

Oh, fine, since 1.7.8, Nginx supports the proxy_ssl_certificate[_key] directives which do exactly what you need. Set up a reverse proxy with server certificate and key paths put into ssl_certificate and ssl_certificate_key directives respectively, and add client certificate and key in a similar fashion via proxy_ssl_certificate and proxy_ssl_certificate_key.

Don't forget to enable client certificate auth via ssl_client_certificate directive. Your client CA certificate should be used for that. Here's one simple tutorial.

SNI is supported by specifying different server directives on the client side, and by adding corresponding proxy_ssl_server_name directives on the proxy side.

P.S. The difference between this question and the one I considered a duplicate of this one is that you don't want to generate client certificates on the fly (which Nginx can't do for you anyway).


Is there a maximum for the number of certifications on a PGP public key

I don't believe there is a maximum limit on the number of signatures on your key. I'm sure there is one in GnuPG that is dictated by memory allocation restrictions, but it's probably an unreasonably high number that you're very unlikely to ever hit. I should know, as I help maintain the web of trust for the Linux kernel developers, and "too many signatures" is not a problem I've ever come across.

Getting as many signatures as possible is not the right goal to try to reach. There is no such thing as "The One True Web of Trust" -- each user of PGP spins their own individual "webs of trust" that they use to establish key validity for their correspondents. Having a lot of signatures on your key means nothing if none of the signing keys are trusted by the person with whom you are communicating.

Your goal should be to have a few signatures from important key members of each group of correspondents -- lead developers, heads of departments, or thought leaders in your online community.


Why would a password requirement prohibit a number in the last character?

It's likely an effort to discourage passwords that fit common formats or character masks.  If a password policy requires use of a number many people will chose to put their number at the end of a word or words.  Here are a couple examples from corporate environments:

NetSPI Top Password Masks for 2015
2015 Trustwave Global Security Report - password masks

Attackers like this user habit because it makes their hybrid password cracking or guessing attacks easier.  They can focus on combining word lists with numbers added to the end rather than a more time consuming brute force approach.

So some organizations implement a policy like this in an attempt to improve security by getting users to put their numbers is a less predictable place.  It sounds like in your situation they're not combining this with any other complexity checking and instead rejecting all passwords that end in a number, regardless of how random they are otherwise.  That's not a very good way to implement this type of checking, but they're not alone in taking this approach.


Is suspicious network activity likely to be caused by a rootkit?

What is the most effective way to check out malicious connection activity on my network?

Wireshark is really the best way to inspect the packets your after. If there were a root kit that was hiding from wireshark (possible but highly unlikely) then you could set up wireshare another machine and man-in-the-middle the suspect machine with arp poisoning between the supect machine and your gateway.

  Is it possible to know how much packets are received and sent from a certain tcp connection on my router?

Not from your router, check out the user manual You can use ntop to see that infromation.


Why can't I just let customers connect directly to my database?

TL,DR: Don't.

  (My-)SQL permissions are pretty fine-grained, so I'd wager there shouldn't be any obvious security issues

Even with permission on the record level, it does scale easy. If a user has irrestricted SELECT on a table, they can select any record on that table, even those not belonging to them. A salary table would be a bad one. If any user has DELETE or UPDATE, they may forget the WHERE clause, and there goes your table. It happens even to DBAs, so why would it not happen to a user?

  Performance should be way better, since we skip the entire HTTP communication and web app code

And you throw away all security, auditing, filtering and really fine grained permission control from using an application to validate, filter, grant and deny access. And usually most of the time spent on a transaction is the database processing the query. Application code is less than that, and you will not remove the HTTP communication, you just replace it with SQL communication.

  New features are a matter of database migrations, everything is reflected in the schema

That's why so many people use a "spreadsheet as a database." And it's a nightmare when you need to reconcile data from multiple sources.

  Powerful query capabilities are provided to users, without any additional effort

It's like putting a powerful engine on a skeleton chassis, bolting on a seat, and taking it to a race. There's no extra weight slowing the car down, so it's very fast!

It's the same here. Sure, it's fast and powerful, but without security measures provided by the application, no session, record-level access control, "users do what they are allowed to", or auditing.

One of the most common vulnerabilities on web applications is SQL Injection, and you are giving a SQL console to your users. You are giving them a wide variety of guns, lots of bullets, and your foot, your hand, your head... And some of them don't like you.


Creating sub CA signed with Let's Encrypt certificate

Usually no, only certificates marked as being a CA can issue certificates. (or, more accurately, you can do that, but no vpn client or web browser will trust it.)

To see if your certificate is a CA, open it and look at the Basic Constraints field; a CA will look like this

while an End Entity will look like this:

End Entities are not allowed to issue certs, and good luck getting Let's Encrypt to give you a CA cert...


Redirect malware in BIOS or MBR can't remove it

As @ByteCommander stated in one of the comments this Ad you are seeing is most likely coming from either the router you are connected to or (directly or indirectly) from your ISP.

Things you could do to test/fix this issue:

Setup an SSH or VPN tunnel to a server you trust (or possibly even use TOR).
Switch out your router (if it is yours and you are not "borrowing" internet from someone else.
Change your computers DNS settings to 8.8.8.8 (google dns)

I seriously doubt this has anything to do with your MBR or BIOS.  You are correct in suspecting something outside the OS because the issue persists on your Ubuntu Live CD ... however, if your BIOS was infected the code would most likely be targeting windows (quite difficult to write a cross compatible root-kit in C/C++ with limited ROM space).


Create additional database in server using sql injection

First, determine if you can use a 'create' statement in a query like that.


The efficacy of a 1-hour annual online series of videos to affect user behaviour is very low (industry stats are 0-5% change in behaviour - perhaps statistically insignificant). Compliance is higher within the days after training, but then trails off very quickly. This type of training needs to be coupled with other supports in order to see results, but it is possible to see positive results up to 70% (consistent adoption of targeted behaviours) with certain supplements to this kind of training. Repetition of training and support and follow-up are perhaps more important than the knowledge transfer itself.

As for supplements, the most effective methods include regular prompting of behaviours and providing immediate feedback to the user as to the correctness of the presented behaviour. The most common form of this is simulated phishing, but it can include any behaviour the organization wishes to see.

In some phishing simulation programmes, studies have shown a decrease in users clicking links in emails of up to 70%. This usually requires regular testing and users slowly learn what to do over time. The key is regularity and immediate feedback.

This same approach can be done for password policies, tailgating, locking computers, incident reporting, USB device handling, etc.

Awareness is awareness. Knowledge transfer is knowledge transfer. But behavioural change is a different ballgame. It starts with knowledge (sometimes), but then it needs to transition to action. And that can't be done with a 5 minute video.

(I am writing a book on this very topic)


Is it possible for an SSH MITM to attack only if the key isn't in the known_hosts?

First of all, the answer depends on your SSH client. Let's assume you are using latest OpenSSH client.
The SSH2 protocol starts like this:

Client -> Server: Initiate connection, send client software version + SSH version
Server -> Client: Server software version and SSH version
Client -> Server: Client supported algorhitms
Server -> Client: Server supported algorhitms
Client -> Server: Diffie-Hellmann key exchange init
Server -> Client: Diffie-Hellmann parameters and server key!

Let's say known_hosts contains the known good RSA key, but the server sent an ECDSA key. OpenSSH detects a key change!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
78:16:03:b0:88:c3:9b:a7:7d:34:87:a5:8b:36:f1:4f.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:1
ECDSA host key for 127.0.0.1 has changed and you have requested strict checking.
Host key verification failed.

Now the question is: Is StrictHostKeyChecking set to yes in your SSH config?

And last but not least, if you are worried about being hacked by an SSH MiTM, I suggest you authenticate with SSH keys instead of using passwords. It is much more secure, and your password is safe (as long as you don't use the password for sudo :) or something else).


Content on a usb flash drive available for a limited time

DRM-based solution may be the only solution to such need.

With such solution, when the client opens the document / software / whatever is stored on the USB key, the application must contact your server requesting for a key to decipher the document.

All you have to do then is to decide at which moment you stop distributing the key for this document.

Properly implemented, DRM also limits copy possibilities since even if someone copies the content of the USB flash drive, it will remain ciphered and the key from your server will still be needed in order to open it.

The main drawback for such feature is that it requires a compatible software (for instance Adobe Acrobat for .pdf files) and that a network connectivity is required.


Are MAC addresses of hosts always visible to other hosts on a WLAN?

Yes, MAC addresses are always visible to other hosts on the same LAN, regardless of whether or not it is wireless. In fact, they are fundamentally necessary, as they are how two local devices communicate with each other. There is no way to disable the usage of MAC addresses, however you can spoof them, essentially assigning a new, arbitrary address to a device. As long as it does not collide with any other existing addresses, it will be used to route traffic to it as usual.

Note, however, that an attacker-controlled wireless access point may not be fooled by a spoofed MAC address, since all devices have their own unique quirks when it comes to establishing a wireless connection. This WiFi fingerprinting can correlate the identity of two devices even if the MAC address has been changed. Anonymity may be hard to achieve when you are connecting to a router that is not under your control. Assume that that router knows which machine is yours. If you just want to avoid appearing in hosts' ARP caches, then changing your MAC address is sufficient.


Using OpenVPN on Windows instead of VPN apps: missing certificate

Here's what worked for me:
In my case, I'm using SurfShark. I don't know what resources other VPN providers offer, but I was able to download a certificate from SurfShark's website and install it on my Windows 10 PC by double clicking the downloaded file.
The next step is to open Windows certificate manager where you should be able to navigate to the location of the certificate that was installed. In my case it was under "Trusted Root Certification Authorities" Labeled "SurfShark Root CA".
Use the tool bar or right click to copy the certificate and then navigate to the OpenVPN Certificate Store folder in the certificate manager and paste the certificate there.
At this point you should be able to launch the OpenVPN app on Windows, select one of your profiles, edit, and you should be able to see your certificate in a drop down list.
Hope this helps...


Configuring GCM cipher suites in Jetty based server

The document you are linking to lists only the standard cipher suite names; it does not promise that all these cipher suites are actually supported by any JSSE provider, in particular the one which comes with Java and is called SunJSSE. That the standard name TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 is defined just means that if a JSSE provider wants to provide support for that cipher suite, then it must provide it under that name.

This document, which allegedly pertains to Java 7 as well, lists the cipher suites which SunJSSE actually supports; some enabled by default, others disabled by default. I see no GCM cipher suite at all...

Support for GCM cipher suites may be added in a future version; you might want to try some previews of Java 8 (Java 8 release is due March 2014). In any case, GCM cipher suites in SSL require TLS 1.2 (they don't work with previous protocol versions), and the AES_256 is 256-bit AES which, with the cryptographic implementations provided with Java, requires the JCE Unlimited Strength Jurisdiction Policy Files (a remnant of the US export regulations on cryptographic material).


How to manage Cisco ASA series without management cable?

You may be able to manage the ASA without a console cable if the ASA's inside interface is configured to be on a network, you can access that network, you can find its IP address, and you can guess the login credentials. This being a lab you have a better chance of guessing the credentials as they may be kept simple.

If that doesn't work then there's no other way to access the device without a console cable. If this is a lab I'd be very surprised if there wasn't a console cable somewhere. If the problem is you don't have a serial adapter for your laptop/tablet/whatever then you can run a roll-over cable from the aux port of a cisco device you can access to the console of the one you can't, configure the aux port as a serial out, you can then telnet to a local IP on that device to the aux port, and console in that way.


How secure is Windows 10 account control?

Is there any way he could access my files/folders info?

Yes, he could reboot from a live CD and then access your files directly, unless the drive is encrypted.

He could also attempt privilege escalation by leveraging any vulnerability within Windows 10 (such as this), or via any insecure configuration on your machine (e.g. overwriting a .exe that he has write permission to of which the administrator later executes).

Or he may be able to leave a USB stick in which acts as a network interface and directs your traffic through a device he controls. Usually all bets are off if there's physical access available.

This all depends of course on the skills and motivations of your "friend".


How to protect websites against ZIP bombs and reference bombs?

Zip bombs are harmless if you don't extract them. Antivirus software will go through them a file at a time.
You don't even need malice to get this effect - lots of poorly coded websites cause browsers to freeze or crash.
The defense is described in your link: cap the memory allocated to a parser thread and have it stop once the limit is reached.

An anecdote: I had to implement method (3) in a system with all trusted users. "Trusted" is a bit of an understatement; it involved five different layers of assurance. The defense was required against many models of paper scanners defaulting to their maximum resolution and no compression, and the users subsequently uploading... check the typical scanner resolution limit and do the math.

While it's not only the most naive of software that would be affected by such attacks, their effect is no different from what already happens to it regularly through incompetence without malice.


What attacks are most likely against SSL/TLS web service sessionid?

The attacks against this system fall into three separate categories; Authentication, Session Management, and attacks against TLS.

The Mozilla Secure Coding Guideline for Authentication details
the following attacks of concern:

online & offline brute force password guessing
user enumeration
mass account lockout (Account DoS)
offline hash cracking (time trade-off)
lost passwords

The Mozilla Secure Coding Guideline for Session Management
details the following attacks of Concern:

Session Hijacking
Session Fixation
Brute Forcing Valid Session IDs

The OWASP Transport Layer Security Cheat Sheet details various
    ways that TLS/SSL can be made more secure.  Some of the concerns
    are:

Renegotiation DoS
Weak ciphers/NULL encryption method
Invalid certificate
divulging session id over an insecure channel


What is the use of EXE and DLL files on iOS device

As you've noticed, Mono/.NET applications compile to .exe and .dll files even for non Windows systems. Note that these files don't actually contain native code of your application, they're essentially just wrapper for .NET IL codes archive. IIRC, the reason a .NET application is wrapped in .exe so that if you try to run the application in old Windows that didn't have .NET framework installed, the application will display an error message prompting you to to install .NET framework. In other platforms, running these .NET .exe files requires a native wrapper to unpack the IL code from the .exe/.dll files.


If you have done all those changes to your router and the WiFi "name" or SSID is being changed then you could possibly have a compromised device on your network.  This isn't guaranteed to be the problem as some routers allow remote management so it could be the case that someone is able to connect from a remote location and perform changes.  One question to ask yourself is why they would need/ want to make changes?  If it was a malicious person that had compromised your desktop computer for example, they might want to maintain access for a longer period of time, and by making changes this is more likely to alert you to their activities.  I would suggest it is possibly more likely to be someone who is playing a joke and trying to wind you up??


TLS and SSL are effectively the same thing, but just different versions of each other where TLS is newer than SSL. More often than not people are actually referring to TLS.

In the scope of SQL Server, TLS is enabled via SChannel which is a/the Windows secure channel implementation. This is the same system used by HTTPS on Windows. It's enabled by default on Windows, but depending on what versions of everything are in play you would need to futz with some registry settings to enable things:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\***

Where there's Client/Server options with flags DisabledByDefault/Enabled. This KB goes into detail about enabling TLS 1.2 on the servers.

Which version of TLS you're using is dependent on a number of factors such as OS, server, and client versions. For instance SQL 2005 doesn't support TLS 1.2, and anything newer requires explicit configuration before it'll be activated. See the above-mentioned link for specifics.

I'm not aware of a way to extract the exact version used via API or configuration. You may have to check the TLS handshake via wireshark or similar.


This isn't trying to make users install malware. This is trying to run malware on the build server. They fork the repository, install a malicious build script, create a Pull Request (PR) for the fork, and then the build will run for the PR and it will look like it's coming from your repository. When Github staff look at why their build servers are mining bitcoins, they'll see that it's a build job for your repository. (But they're probably smart enough to see it's from a malicious PR)


So it appears the cache functionality was removed, I guess the documentation for the option wasn't removed. See the following entry in the change log which states:

  Completely remove caching functionality as it was near worthless and added a lot of overhead

https://github.com/sullo/nikto/blob/40867b08f5a9c5c8897da92c1d23ff3d1a446b4c/program/docs/CHANGES.txt#L49

Why did you want to use this option? What is the problem you're actually trying to solve?


Is it safe to tell your users what kind of hashing algorithm you use?

If it is not safe, then your hash function is pure junk, and you should not use it.

In any decent security analysis, it is assumed that the attacker already knows all the software that you are using, because:

There are not so many possibilities.
A lot can be guessed based on application behaviour and output.
An attacker who could get a glimpse at your database might also have a copy of your PHP scripts, and thus knows.
Even in cases where the attacker does not know your hash function, it is very difficult to quantify such lack of knowledge: to what extent does the attacker not know ?
In particular, the attacker may also register as a user, with a password he chooses, and then observe the resulting hash, allowing him to quickly test any potential hash function.

On the other hand, making the used hash function explicit may give you a reputation of "competent site owner" which would bring confidence to technically-inclined customers.


A VM is nominally supposed to prevent code in the guest from escaping to the host. So when such an escape is possible, then it is due to a security hole in the VM implementation. Some such holes have been found in various VM engines.

See for instance Cloudburst, an exploit described in 2009. In this case, the video emulation is instrumental to the escape, because the engine's goal of providing fast video emulation implies using some internal sharing of resources between host and guest, and this it at odds with the security goal of the isolation layer. Modern computers are complex systems, so full virtualization is also complex, and it is rather unavoidable such holes of that kind happen.

To be fair, holes which allow true guest escape are rather rare. Good maintenance (promptly applying security fixes from the vendor) for a VM engine is a reasonably low-risk strategy. Note, though, that the same cannot be said for information leaks: a VM can learn things on what happens in other VM, or in the host, through timing attacks. It has been demonstrated (in lab conditions) for encryption algorithms: one VM could learn the secret key used by another VM, because that other VM was using a table-based AES implementation, and was running on the sister core of the attacker's VM (thus with a shared L1 cache).

Guest escape can be facilitated by the configuration, though. For instance, when the host shares part of its filesystem with the guest, then, by definition, the guest has access to part of the host filesystem. Similarly, host and guest often share a more or less virtual network, thus remotely exploitable holes on the host are in range from the guest.


Are intermediate signing certs the only secure+practical way to manage OpenVPN client certs?

There are really a few options.  You could try to use a hardware security manager that would lock the key away and only allow signing.  This would prevent any of the IT staff from accessing the key itself, but is a lot more complicated to set up.

You can also (and really should in either case) set up intermediate certificates so that the root isn't compromised by a working key compromise.

You could also implement a cryptographic time-stamping server that has a key that isn't available to IT.  They could then sign as of a given cryptographically verified time and each IT staff member's certificate could be invalidated as of a certain time.  The system could then trust certificates signed by that intermediate key up until a certain point, but not trust later certs or certs that are not time stamped.  This would let you get around having to replace all keys they ever made when they leave.


How to store client secret securely on application base in Windows?

You should use DPAPI to encrypt the data before storing it in Isolated Storage. While DPAPI is mostly targeted at per-user security, not per-app, it does have some provisions for your scenario:

  A small drawback to using the logon password is that all applications
  running under the same user can access any protected data that they
  know about. Of course, because applications must store their own
  protected data, gaining access to the data could be somewhat difficult
  for other applications, but certainly not impossible. To counteract
  this, DPAPI allows an application to use an additional secret when
  protecting data. This additional secret is then required to unprotect
  the data.


On Windows boxes, is patching for Spectre and Meltdown necessary?

the only point of easy penetration to a system seems to be via javascript running in a web browser.

How about Flash? Java? Silverlight? VBA in an office document? Any applications that load web-pages inside of themselves?

  The thing is, once a box has rogue code running, it's already compromised.

With code running under your user account a lot can be done. But compromised is a relative term. You can't for example install a low level key logger. Permissions might stop you from reading other applications memory space even when run under the same user account. And of course you have no access to files and processes run under other user accounts. A user on a corporate machine could not hijack another logged in users session.

Being able to read arbitrary RAM values can give you the access tokens required to defeat all of this.


PHP's safe_mode is a deprecated feature - that was meant to solve the shared-server security problem at the PHP level. This was never a good idea, and thus the feature was deprecated and removed as of PHP 5.4 (your target is running PHP 5.3.10 which is ancient). This answer will demonstrate why safe_mode wasn't a great idea to begin with and will contain two parts - bypassing PHP's safe_mode and elevating privileges. Without further ado - let's get down to business.

Bypassing safe_mode

When approaching the safe_mode problem the first important thing to note is there isn't one canonical solution, and it really depends on your target configuration (and a bit of luck). Following is a overview of the techniques that might work.

pcntl_exec - If you have a bit of luck, the PCNTL extension is enabled. If it is - you can use it to gain code execution, as it isn't affected by the safe_mode directive. To check if it is enabled you can run the following command: echo function_exists('pcntl_exec');.
The LD_PRELOAD trick - A little known fact is that while safe_mode restricts the accessible environment variables - for this setting to be effective the safe_mode_allowed_env_vars directive must be set (you can check its value by running var_dump(ini_get('safe_mode_allowed_env_vars')); if an empty string is returned you're in luck - this means that the safe_mode restrictions on the environment is effectively disabled and the LD_Preload trick can be used as described here to gain code execution bypassing the safe_mode.
Another option to bypass safe_mode is to upload a shell that uses server side technology that is available on the target and is other than PHP. The most common candidate is Perl, which you've already mentioned isn't available. You can also check to see if Python or Ruby are available. If neither is available it's time to whip out your SSI shell and check out if it'll work.
Last but not least - exploit a vulnerability that allows code execution outside the PHP interpreter. There are a lot of such vulnerabilities that was published lately, and as your target is running an old version - it's most likely that you'll manage to find a vulnerability such as CVE-2016-9137 that you can exploit to gain code execution.

Elevation of Privilege

If you have a bit of luck - the lack of writing privilege is the effect of the safe_mode directive, and thus as it's bypassed - you now have write permission. But if you have no such luck - you'll need to escalate privileges on the OS level. There are a couple of ways to go around to perform such an escalation:

The old school way - find some SUID left on the system, and exploit it to gain root privileges (that will allow you, among other things, to have a write permission everywhere you want). A nice write-up demoing such an endeavor can be found here.
Use a kernel exploit - from the screenshot in your question it would seem that your target uses a pretty old, which means it might be vulnerable to a public kernel exploit such as DirtyCOW or some other exploit.

Congratulation if you've followed till here, and everything worked out fine up to this point - you now have fully compromised your target and have a root level shell, it's time for a write-up. Also, with all your new gained knowledge, you should remember - with great power comes great responsibility.


SQL injection with UNION and two queries with same input

Your intuition is correct that this does not provide sufficient protection against SQL injection.  You may need to treat this it as a blind SQL injection
have a couple of options for explaining how to exploit this:

Attack the first SQL with a union returning one column - you can get information out of  if there's different behavior between failure of the first and second SQL
Leverage another attack besides the UNION attack.  There are many other techniques for getting information out via blind SQL injection - timing based or out of band being the most common.  Although specific techniques will depend on the database.

There are a variety of tools (Burp Suite, Sqlmap...) which will automate the process for you if you need to actually generate an exploit for the developer.  Make sure, in any case, you use this as a "teachable moment" to explain about blind SQL injection, and that any kind of untrusted data in a SQL statement is going to be exploitable.


Is monitoring registry hives enough to detect new malware installation?

There are just too many ways in which malware can persist on a Windows machine without touching the registry. For example:
Windows Startup Folder
Although it is the most simple and obvious to be found, still I am describing it here just to show that this technique doesn't require touching the registry. In Windows family of operating systems every user has a particular statup folder in which any executable or shortcut file placed will be automatically executed by the operating system upon user login. For Windows XP and Windows Server 2003, the starup folder path is:

C:\Documents and Settings\"User Name"\Start Menu\Programs\Startup

For Windows 7 and Windows 8, the path is:

C:\Users\<User Profile folder name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

If the malware is placed in the above locations, it will be executed every time the user is logged in and this technique doesn't require any modification to the Windows registry.

Trojanize Binaries
The malware can also infect pre-existing binaries and embed itself with the auto-executable executable files. For example, replacing uTorrent.exe with a trojanized uTorrent.exe in which the malware is embedded with the main executable results in execution of the legitimate program as well as execution of the malicious malware file and no mofification is required to be made to the registry (assuming that uTorrent.exe is in the auto-executable files list).

DLL Hijacking
Just placing the malware DLL file at a particular location can also result in the execution of the malicious DLL file. This attack is commonly known as the DLL Hijacking in which the malicious DLL file is placed in a location that is searched first by the OS before it gets to the legitimate DLL path. Again, no changes is required to the registry for executing the malicious DLL through DLL hijacking.

We haven't even touched the BIOS persistent malware even though those techniques have also been publicly demonstrated. In short, there are too many techniques and methods through which malware can be executed automatically at boot time. Once the attacker gets hold of the machine, it is usually futile to detect it at that point. The detection should then move to the network and outgoing traffic from the machine should be analyzed. Note however, that you cannot run netstat, wireshark or any other tool on the compromised machine as rootkits can hide itself from any tool running on the compromised machine. Therefore, keeping in view the concept of defense in depth, you should analyze and protect your assets from the identified threats at multiple locations and hope that not every location can be compromised at once by the attacker.


Do anti-XSS rules of Web Application Firewall break business logic?

In a general sense, WAFs are historically notorious for false positives- issuing alerts on legitimate requests when in non-blocking mode, and for edge case breakage of applications, difficult or impossible to reproduce in non-production environments, when in blocking mode.

As a result, the overall space is evolving away from signature- and granular request-specific alerting- which is really the responsibility of the application- and moving more towards reputation analysis, statistical anomaly detection, and providing pooled intelligence around the behavior of threat actors.


Pentesting against own web service hosted on 3rd party platform

In general, you're correct you'll need the permission of the hosting company where you are scanning services deployed on their infrastructure. This is partially so that their Intrusion Detection Systems are aware that it's an authorised scan.

Both AWS and Azure have policies detailing the process and what's acceptable to test.  The AWS one is here and the Azure one is here . If a hosting company doesn't have a published policy, it's worth contacting them to check.

Also it can depend on the exact service that you're using from the cloud hosting provider.  So for example for AWS, they allow you to test IAAS style offerings such as AWS EC2 where the customer is responsible for the operating system and not SAAS offerings like AWS S3 where Amazon are responsible for the operating system and associated software.  However Azure appears to have a more wide ranging policy where you can test any services you own.

Also test types can be restricted, for example DoS testing may well not be allowed as obviously that can have an affect on the cloud provider.

For "traditional" hosting it generally depends on the type of service you have. If you're using shared hosting where you just have access to the webroot you may well be restricted from testing, as obviously there's a risk of affecting other users on the same server, however where you have a full OS image (e.g. Digital Ocean Droplets) you tend to be ok as long as you've notified them (in the case of digital Ocean, via a support ticket).

There's also a longer list of where to go for different companies here


What does it really mean if a TCP session gets hijacked?

If you are an active man in the middle who can read and modify the traffic (as in the case of the link you have in your question) then TCP hijacking is possible since you can capture the packets from both sides and modify both content and TCP header (and thus also the sequence numbers) before forwarding.

  I read somewhere that this was not possible.

It is hard to tell what you've really read and where but I assume that you were reading about blind TCP hijacking. In this case the attacker can only inject traffic but does not see the original traffic nor can stop the original traffic. In this situation it is much harder (although not fully impossible) to hijack the TCP connection since the attacker need to guess the correct sequence numbers and ports instead of having the correct sequence numbers from the captured traffic.


How to deal with security audit false positives?

Just because an automated scan returns a result, that does not mean that it is an 'audit'. It's just a scan.

For any finding, it needs to be

verified that it exists
if exists, it needs to be justified
if justified, it needs to be placed in context with existing mitigations
its risks need to be assessed

For documentation purposes, it is a good idea to write down these 4 things so that future findings can be compared, and the justifications, mitigations, and risks can be reviewed in the future to make sure they remain relevant.

So, for your two findings, acknowledge that the module exists but that it poses no risk because it is not active, and confirm both findings on both servers as being true or not (there are all kinds of reasons why a scan will show different findings on the same config).


How does Glassdoor know what my password is... on other, unrelated websites?

I see three possibilities:

Glassdoor knows about a breach that haveibeenpwned.com doesn't know about.
Glassdoor isn't telling the truth. Perhaps they have only found your email in a breach, and not your password. Could be an honest mistake, or perhaps they want it to sound more serious and urgent to justify the extra work they force you to do.
Your memory is wrong, and you did in fact use the same password at some point in time (not necessarily now).

Only way to find out which one is to ask Glassdoor.


Is browser side encryption realistically secure?

What you are proposing is the same architecture that is used in online password managers like Lastpass and online Bitcoin wallets like Blockchain. You have named the two big threats: Javascript tampering and a compromised computer.

You deal with the threat of Javascript tampering by securing the server and convincing the users that your Javascript is secure.

Regarding malicious browser extensions or other malicious code on the computer, you can't do much about that. You have to leave it up to your users to ensure that their computer is secure.


802.11 data frames missing from Wireless frames capturing

Since you specify that you are getting some data frames (indicating you are indeed in monitor mode), the most likely issue is that the capabilities of the wireless device generating data exceeds the capabilities of the wireless device capturing data.

For example, if the data client is 802.11ac and the capture device is 802.11n, the capture will only include frames that the 802.11n chipset recognizes. Or the data client could be 3x3:3 chipset while the capture devices is a 3x3:2 or a 2x2:2.

In this type of situation, your capture device will only be able to "see" frames that are transmitted within it's capabilities to understand.

On the other hand you are able to capture the management frames because those typically are sent at the lowest base/required data rate configured for the SSID (which must be supported by all associated clients and is typically uses a single spatial stream and lower data rates).


How to force openssh client to require both SSH certificate and SSHFP record?

This isn't really an answer because I have no idea how to make the openssh CLI client do that, short of modifying the c code.

Academically, it's an interesting question whether you actually gain anything by mixing protection models like that; both are methods of authenticating that you are in fact talking to the server that you think you are.

ssh fingerprints say "I have no idea which server I'm talking to, but it's the same server as last time". Security assumption: you were talking to the correct server the first time.

Whereas certificates say "According to the CA, I'm talking to server.domain.com". Security assumption: the CA is honest.

Let's break this down into cases to see if you gain anything by combining them:

Case 1: You trust the fingerprint. Maybe, for example, you called the admin and they read you the fingerprint over the phone. Great, you have full confidence in the identity of the server using the fingerprint alone, the certificate gains you nothing.

Case 2: You trust the CA. They are honest and would not issue a cert for server.domain.com to anyone except the rightful owner. Great, you have full confidence in the identity of the server using the certificate alone, the fingerprint gains you nothing.

Case 3: You trust the CA and the fingerprint. Pick one, either will be watertight by itself.

Case 4: You don't trust the fingerprint or the CA. On first-time connect you were shown a cert from a CA that you don't trust and a fingerprint that you have no way to verify out-of-band. Well, you really can't authenticate this server at all, can you?

Generally speaking, certificates from a publicly trusted CA are a stronger auth method than fingerprints -- unless you are verifying fingerprints out of band, in which case the certificates gain you nothing.

I suppose there's a Case 5: the CA was trustworthy at the time of your first connection to the server, but the CA started misbehaving later. That's basically equivalent to not trusting the CA at all because if you assume that they could become compromised in the future (with no public announcement), then what proof do you have that they are not already compromised? Trusting CAs kinda has to be an all-or-nothing thing. I'm going to argue that if you check fingerprints out of band, then this reduces to Case 1, and if you don't then it reduces to Case 4. Still nothing gained by combining methods.


Modsecurity CRS how to deal with field arrays

This is a tricky one and I have to confirm your conclusions.
It would be sweet, if the following form would work, but it does not:
SecRule ARGS:/test.*/   "@unconditionalMatch"   "id:1006,phase:1,pass,ctl:ruleRemoveTargetById=930120;%{MATCHED_VAR_NAME}"```

So I guess dropping the rule for all of ARGS is the next best thing you can do. Maybe limit the rule exclusions to the path as well.


Cipher that does not give confirmation whether decryption is successful

Why exactly should a confirmation be given when the password is correct?

The attacker only gets such confirmation if the message is protected against modification using some kind of MAC or if the attacker can conclude from the decrypted data if he got the right key. The latter is unlikely if the decrypted data are not the final layer but only the result of another encryption. But it could be likely for the last step of the layered decryption.

  And what ciphers are actually good for this kind of layered encyption?

Encryption methods which don't have any detection of message modification by themselves are suitable for this. These are methods like AES-CBC or 3DES and others which don't have message authentication integrated.

But that does not mean that such layered encryption with multiple smaller keys would actually be better than a single encryption with a longer key (equivalent to the length of all the smaller key together). It only would not be that worse in terms of key security. But it would still be more complex to implement - which also means also more likely to implement it wrong. Or in other words: don't do it.


Encrypt data using PBKDF2, but still provide password reset feature

All the data that was encrypted by the data encryption key will be lost in this case, because as you said, the password was forgotten. Now if the password was merely changed, but not forgotten, then you could unwrap the data encryption key with the password-derived key upon initial login, store that previously-wrapped key in the session, then re-wrap and store the data encryption key again when the user changes their password. So that's not a problem. It's just that if the password is ever forgotten, then so is the data that depends on that password in order to unwrap the data encryption key. There's no other secure way around this, unless you have some sort of backup scheme, maybe protected by site-wide encryption with keys protected by, say, a KMS. But in that case, why wouldn't you just ditch password-based encryption to begin with, and use the KMS instead?


Does connecting an android device via usb to a PC pose a risk if charging is selected?

Theoretically, there is definitely a risk, though practically (with that specific phone), the risk is mitigated; regardless, no USB policy should mean no USBs of any kind are plugged into the computer (not just flash drives). What's preventing the phone from acting just as if it's a flash drive (hint: it's the software) - they're communicating through the same port and data lines.

You are assuming the phone's manufacturer is secure - Google hasn't tampered with the hardware, OS or firmware
You are assuming the phone's OS is secure - Android doesn't act maliciously and is bug free.
At a nation state/APT level, you are assuming there are no zero-days exploits (take a look at Stuxnet)

TLDR: no USBs of any kind should be plugged in.


How can API documentation helpful to exploit any application?

This question is quite vague.
A service's API documentation is for end-users to utilize its service, it has information such as how to retrieve data, send data, store data, access data, manipulate data the list goes on. Usually, depending on the level of service, this API access can be restricted to different groups of people such as paid/premium users, public users, organization users or employees etc.
To answer your question, having access to your private API documentation that is meant for internal use do enable the hacker to find exploits/loopholes with how the API was implemented that is if there are loopholes to be found.

Hacker A (with no access to documentation) vs Hacker B (with access  to documentation)
Hacker B will have a heads-up over Hacker A, as simple as that. Knowledge is power!


Is Heap Spraying only valid for browser applications?

No, heap spray can be used for any exploit that needs heap data to be aligned a certain way. Example include the ExternalBlue exploit that targets SMB. It heaps sprays a bunch of SMB objects to align the memory, so that the right objects get corrupted.


Should I add protections where I dont understand how hacker can break system?

Yes, you should add protections, but they need to be appropriate for the situation.

All user input must be validated.  The fundamental principle is that you do not define what "bad" input is, you define what "good" input is and reject everything else.  To take your example, you've defined "items > 20" as bad.  But what if "items" is -1?  What if it's the quantity );DROP TABLE Orders;--?

The basic technique is that you look at each user input field and define what a "good" value looks like, taking into account both your software's capabilities and your business rules.  For example, "items" might be "an integer, greater than 0, less than 20, and less than or equal to the amount in stock" -- this rejects too-large orders, too-small orders, and exotic inputs such as SQL injection, without needing to worry about what an attacker might be trying to do or how your software might react.

This must be done server-side.  Client-side validation is there to help the honest user; a dishonest user can only be stopped server-side, since they control the client.

To use your house analogy, all user input is part of the door.


Mail Signing Certificate – What are the impacts when revocated?

Yes, if it is set to be revoked the next week when a new CRL is set to be released, I would wait.

Given that you said and put quotations around "probably" in reference to being valid for the remaining week, this would be a red flag to me and again, I would wait the week until next CRL.  If access is not absolutely necessary and required for business operations...I would wait.

To determine when a cert. has been revoked, you can use the command line for windows and a few commands to generate an output file with this information.  Details of how to do so are here:

http://blogs.technet.com/b/pki/archive/2006/11/30/basic-crl-checking-with-certutil.aspx

This is for Windows systems only.  For linux systems visit:

http://linux.die.net/man/1/verify


Can I assume that an empty user agent will always be a robot?

Almost always, but not always. It could be a user behind a misconfigured proxy, or a browser extension, or (more likely) someone using telnet/netcat:

netcat server 80
GET / HTTP/1.0
<enter>
<enter>

And done.

You can ban users without User-Agent set, but it's dead easy to set one. curl, wget, aria2, python and almost every single command/library/framework out there will have an option to override the User-Agent string.

You'd better implement rate-limiting on sensible pages, captchas when the limit is reached, and ban after a number of captcha misses.


How does syskey in Windows increase the security in a domain?

Addressing each part in turn:

1) This control protects against the following threat scenario: An attacker gets physical control of the machine's hard disk. They extract the local SAM database, which contains password hashes for the accounts on the machine and brute force them to get the passwords which they use to log onto another machine they do not have physical control of. SYSKEY works by encrypting the local copy of the password hashes and writing the encryption key to a floppy. You provide the floppy with the key on at system boot.

2) Any machine that isn't a domain controller only stores hashes for local accounts in it's SAM database, so it doesn't really change the attack if the client is participating in a domain or not.

3) Apparently SysKey just writes to whatever's been assigned the drive letter A:, so if you force a USB key to use A: in Disk Management, it'll work. The drive must be present and mounted at boot, so you have to use a floppy or USB disk, not a network share or device. You should also store the floppy/USB (and any backups you make of it) separately from the machine, since the threat is that physical control of the machine is lost.

Lastly, in more general terms, you're doing it wrong! You've implemented a control without knowing what it does. Do a proper risk assessment, understand the threat, then select the control.

It's quite likely, for example, that implementing full disk encryption and using strong passwords and tightening physical security on the device will be more than enough to manage the risk of someone carrying out the attack described above.


PTES: Differences between Internet Footprint, OSINT and footprinting

If I understand the PTES correctly, OSINT occurs in the process first, including the element Internet Footprint, and finally Footprinting.

This document correlates tools to those processes -- http://www.nothink.org/metasploit/documentation/metasploit_msf_analysis_ptes.pdf -- pages 5 to the mid-bottom of page 10 are OSINT, bottom half of page 9 to the same (mid-page 10) are Internet Footprint, while Footprinting is bottom of page 10 to page 15.


Is it safe to let the user name an object key in JavaScript?

It is somewhat dangerous and not always correct to use user defined properties on Objects. It is typically recommended to use a Map object (in recent browsers) or some of the custom libraries to emulate it.

Some pitfalls are described here: http://2ality.com/2012/01/objects-as-maps.html


Are path traversals attacks possible with invalid directories between?

Is it still possible ,with some trick perhaps to ignore docs, to perform a path traversal attack ?

Yes, it's pretty simple, just use ../ and it will be normalized before the file is opened (on *nix systems anyway, I don't know for sure on Windows).

Something like this would work.

$path = '../test.txt';
$full_path = "./valid_dir/docs/" . trim($path);
readfile($full_path);


The need for created timestamp in tokens

Often I've used the created timestamp as a way of proving uniqueness.  The general assumption is that the granularity of the timestamp will be unique enough that a given receiver can assume that only one request with the timestamp or with a unique value that includes the timestamp will be received.

That would prevent some forms of replay attack, where an attacker gets a copy of an authenticated request and replays it at a later time to get updated information without having the necessary credentials.


Risk analysis Information Security Checklist

Sounds like what you're looking for is ISO/IEC 27002 - Information technology – Security techniques – Code of practice for information security management

  Outline for ISO27002:2005

  Framework
  Acceptable Use of Information Technology Resources
  Information Security Definition & Terms
  Risk assessment
  Security policy – management direction
  Organization of information security – governance of information security
  Asset management – inventory and classification of information assets
  Human resources security – security aspects for employees joining, moving and leaving an organization
  Physical and environmental security – protection of the computer facilities
  Communications and operations management – management of technical security controls in systems and networks
  Access control – restriction of access rights to networks, systems, applications, functions and data
  Information systems acquisition, development and maintenance – building security into applications
  Information security incident management – anticipating and responding appropriately to information security breaches
  Business continuity management – protecting, maintaining and recovering business-critical processes and systems
  Compliance – ensuring conformance with information security policies, standards, laws and regulations


In firefox, you can edit the Trust level you give to a certificate. Go to the Advanced options, encryption and in the CA list, click on any certificate and then "Edit Trust".

This gives you some flexibility.


Difference in between salt and random padding in cryptography

When we use a block cipher, that has a certain block size as DES has 64-bit and AES has 128-bit block size. With the modes of operations, we support larger size of plaintexts than the block sizes.

When the plaintext size is not divisible exactly by the blocksize of the cipher, some part must be filled for the last block (padding) and after the decryption must be removed (unpadding). There are various types of padding; as;

xxxxxxxxxxx1000000000 //bit padding
xxxxxxxxxxx0000000005 //ANSI X.923,
xxxxxxxxxxx0505050505 //PKCS#5 or PKCS#7 padding

The first one can be removed by searching the first 1 from the right.
For the second one, there must be x (in number) 0x (in bytes) appended to the plaintext. Adding just random bits will not help, since we cannot resolve while unpadding.

Note: padding is also required in public key cryptography.


Can we use one CA to revoke certificates generated by another CA?

No, not in pratice.
No, you can't. CA can revoke certificates it signed/issued only. There is a number of reasons of this choice. Although, RFC 5280 supports delegated revocation authorities (through registering it in the Issuing Distribution Point CRL extension), in practice it is not implemented by crypto clients in most cases.
One simple example: two CAs issued certificate with matching serial number (serial number uniqueness must be provided for each separate CA key, technically, two CAs may have certs with the same serial number) and you revoke it. The question: which certificate did you revoke?
The only thing you can do is to revoke subordinate CA certificate (effectively revoke all certificates down in path of that subordinate CA).


How to improve security of a ISP-provided wifi router

The general advice is buy your own gear, always. Anything with the ISPs software on it likely can receive automatic firmware upgrades/config changes which can be from annoying (losing advanced configs, etc) to dangerous (some don't even have code signing!).

If you buy your own router + APs you'll want to use bridge mode. This essentially just opens the floodgates of the internet directly to your router (the new one), putting it in charge of firewall and port forwarding configs. You can technically plug your new one into the old one without changing anything but then you get into something called Double NAT which is not recommended because performance and various other weirdness. It's not less safe (maybe more secure through obscureness however). This isn't a security option in it of itself.
You don't need a second device to do VLANs if you buy a good enough router/one which supports DD/OpenWRT. Hardware firewalls aren't necessary either since the vast majority of the time when you have a pretty flat structured network with no special intercommunications rules you can just stick with the "isolate networks" option. You can, of course, get a hardware firewall however it'd be overkill for what you want because nearly every consumer AP+Router supports a guest network which is more or less what you need OOTB.


Creating a Plugin for TOR Browser Bundle

It is recommended that you run the Tor browser with the default settings to prevent browser fingerprinting. Tor even warns you when you change the browser's window size. Installing browser extensions is certainly inadvisable.


My Magento shop is vulnerable to hacking

if your shop is as compromised as you say here the only way to protect yourself is to start from scratch. A new Host (or reinstalled host), Install proper Defenses (like firewalls). Use a proper Webshop that have withstood Security tests (Drupal commerce for example, but I am biased towards drupal). I would also suggest you get a local Webshop Expert and help you get a safe environment.

good luck


PCI-DSS for VX570 and POS on same network

Technically, all systems on the same network as the POS workstation are in scope. Any system on a network segment where cardholder data is stored, transmitted, or processed is in scope, not just the systems that actually store, process, or transmit the data.

see page 10 of the following:
https://www.pcisecuritystandards.org/documents/pci_dss_v2.pdf

The scope includes any system connected to the cardholder data environment. The cardholder data environment includes the network zones where cardholder data is stored, transmitted, or processed.


Can BIOS virus/malware be used to steal data?

Depends on the BIOS if it can connect to the internet. Most modern UEFI are able to do so, but usually don't for security reasons
Depends on the Malware. When the Malware is in the BIOS it could supply the necessary "driver" (code) to utilize your Network connection and might even implement DHCP so it get an IP and then I could probably connect to the internet and send data there.
That Malware needs to be able to understand the Filesystems (e.g. NTFS, FAT32, ext4, ...). Most BIOS are limited to only be able to read FAT32, but again your Malware might be able to expand the capabilites.

Overall it depends on the Malware, your BIOS and Mainboard. For the malware to actually do this, it would need either presupplied network code from the BIOS or would need to have the specific code for that mainboard model to utilize the network components.

Also a counter Question: Do you mean BIOS, EFI or UEFI? A malware for a UEFI would be simpler to implement than for a BIOS, because BIOS is not really standardized, while UEFI is ("Universal Extensible Firmware Interface", the universal and extensible are the issue here).

TLDR: Yes it can reach the internet, even though hard.

You can see it like this: Windows and Linux are also able to access the internet and essentially can't do more than a BIOS.

Also be aware of this: Can BIOS malware be installed from OS?
You need to install the malware first before being able to do anything.

Greetings.

PS: your malware would also need the usual IP-Networkingstack implemented. e.g. IPv4 Packets, Ethernet-Frames, maybe even DNS


Is possible to build a firewall for all I/O devices and interfaces on a PC?

High-availability operating systems which have multiple layers of software abstraction and filtering acting like input/output firewalls already exist. These operating systems leverage multiple layers of input formatting and protection at each device input area but these are generally for specialized high availability hardware. Effectively these are very good at dealing with buffer overflow problems and rewriting poorly formatted or intentionally manipulated input.

The problem with doing this on traditional PC's occurs with Direct Memory Access protocols like PCIe, Firewire, and Thunderbolt. Due to the use of these interfaces we may not be able to put appropriate software hooks in place to prevent attacks. So for traditional hardware this may be a hard problem. That said with the costs of custom hardware dropping maybe it's time this could be re-addressed. I think enough people are concerned about security at this point that the interest is certainly present now.


Partially. The Trusted Computing Group have a standard for what measurements must (and optionally) take place during the boot process, eg: PCR 0 is the CRTM, PCR 1 is the measurement of the BIOS etc.  PCRs 0 to 7 are set during this process. Other PCR values can be written to after boot, eg: PCR 10 is the defacto standard for Linux IMA.

The way you write to PCRs is to "extend" them: if PCR 10 contains 0xABCD and I write 0x1234 to it then PCR 10 will end up with the value hash( 0xABCD || 0x1234 ) - this prevents "faking" measurements after they've been taken.


Security implications of not reusing SSL session in FTPS

There are potential issues with disabling session resumption for PASV mode FTP. These issues are solved by session resumption as it allows the server to know that the party that initiated the connection is the same one who is now transmitting data (as PASV mode uses multiple ports).
In general however, there are no security implications for disabling session resumption, although it will put a higher load on the server if it has to do a complete TLS handshake for each connection, especially if there are many connections. Its only purpose is to reduce connection latency.
There are two types of session resumption:

Session identifiers are the original technique for implementing session resumption. These identifiers are unique values a server gives to each client. The server will store the session information alongside the session identifier. When the client connects a second time, it presents the server with the session ID, and the server will resume the session.

Session tickets are an encrypted blob of data containing information about the session that the server gives to clients. The clients will cache this ticket and will send it to the server next time it connects. The server now only has to store the key to decrypt the ticket. This is similar to a session ID, but rather than the server storing each per-client session, the server offloads this storage to the client. This is the most common form of session resumption.

TLS 1.3 will additionally add a new type of session resumption, called 0-RTT.


If you do not have the resources to be able to reasonably secure a deployed web application or web presence and segregate your internal network from that web presence then I would recommend outsourcing the hosting of the "public" presence. With that said you now have two resources that you must ensure are secured from threats. The hosting company will certainly take care of some of that for you, but the web application itself will be your responsibility to secure.

In my opinion, segregation is always important. The problem is that segregation can be difficult. Many people that think they have segregation of their network sorted out, do not in fact have segregation figured out and attackers can pivot through things like backup or development networks.

Now I will qualify that with the fact that just because you have segregated your "public" presence and your "private" presence does not leave you in the clear. Take HBGary for example - They had credentials stolen from their vulnerable web application that were used to log into someone's email (password replay attack) then they social engineered the SysAdmin posing as an exec who desperately needed SSH access while "travelling in Europe".

If your two networks can co-exist separately then I would definitely advise doing so, just keep in mind that this is not the silver bullet against compromise.

P.S.

  Imagine an attack on our Website. Either (D)Dos or something that bricks our files. In this case we could say goodbye to our files and have to use a older backup, losing important progress.

Please do yourself a favour and take frequent offline backups.


What security aspects must online assessment sites consider?

I need a list of some possible security issues

Could be almost anything on this list. Just to select some from the top ten list on owasp:

Injection -

  Injection flaws occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing data without proper authorization.

Broken Authentication and Session Management -

  Application functions related to authentication and session management are often implemented incorrectly, allowing attackers to compromise passwords, keys, or session tokens, or to exploit other implementation flaws.

Cross-Site Scripting (XSS) -

  XSS can occur whenever an application  accepts untrusted data in a new web page without proper validation or escaping, or updates an existing web page with user supplied data. XSS allows attackers to execute scripts in the victim’s browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites.

Broken Access Control -

  Restrictions on what authenticated users are allowed to do are not always properly enforced. Attackers can exploit these flaws to access unauthorized functionality and data, such as access other users' accounts, view sensitive files, modify other users’ data, change access rights, etc.

Security Misconfiguration -

  Good security requires having a secure configuration defined and deployed for the application, frameworks, application server, web server, database server, platform, etc. Secure settings should be defined, implemented, and maintained, as defaults are often insecure. Additionally, software should be kept up to date.

Sensitive Data Exposure -

  Many web applications and APIs do not properly protect sensitive data. Attackers may steal or modify such weakly protected data to conduct credit card fraud, identity theft, or other crimes. Sensitive data deserves extra protection such as encryption at rest or in transit, as well as special precautions when exchanged with the browser.

Insufficient Attack Protection -

  The majority of applications and APIs lack the basic ability to detect, prevent, and respond to both manual and automated attacks. Attack protection goes far beyond basic input validation and involves automatically detecting, logging, responding, and even blocking exploit attempts. Application owners also need to be able to deploy patches quickly to protect against attacks.

Cross-Site Request Forgery (CSRF) -

  A CSRF attack forces a logged-on victim’s browser to send a forged HTTP request, including the victim’s session cookie and any other automatically included authentication information, to a vulnerable web application. Such an attack allows the attacker to force a victim’s browser to generate requests the vulnerable application thinks are legitimate requests from the victim.

Using Components with Known Vulnerabilities -

  Components, such as libraries, frameworks, and other software modules, run with the same privileges as the application. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover. Applications and APIs using components with known vulnerabilities may undermine application defenses and enable various attacks and impacts.

Underprotected APIs -

  Modern applications often involve rich client applications and APIs, such as JavaScript in the browser and mobile apps, that connect to an API of some kind (SOAP/XML, REST/JSON, RPC, GWT, etc.). These APIs are often unprotected and contain numerous vulnerabilities.

I think the main ones you should focus on are injection and cross site scripting.


Root CA or Intermediate CA in firewall trust store

I won't give a full explanation of how certificate validation works as there are already a number of great answers on this site if you search "how does certificate validation work".

Your questions:

  The firewall received a signed certificate from the Intermediate CA and the client did as well. Do I need to add the Root CA certificate or the Intermediate CA certificate to the firewall trust store?

The only real answer here is "Depends how your firewall works, the manual should tell you". Usually you trust a root CA.

  More importantly, why? Why is the Root CA certificate added and not the Issuing CA certificate? I think I know why but if someone could break down the details and go through what the exact process the firewall would go through to validate the client certificate.

For the exact process, see any of the other excellent answers on this site.

For an intuition, ask your self why you set up a root CA and an Intermediate CA in the first place? Why didn't you just make a root and issue your client certs off that? Usually the answer is that you want the ability to revoke the Intermediate CA if it gets compromised. If you tell your programs to explicitely trust the Intermediate CA, then even if you revoke it at the root, the software will continue to trust it, because you told it to. You may also run in to technical problems as many cert validation engines get unhappy if the cert chain doesn't end with a self-signed cert.


What is the niche that Kerberos authentication fills called?

You might be thinking of a realm:

  A Kerberos realm is a set of managed nodes that share the same Kerberos database. The Kerberos database resides on the Kerberos master computer system, which should be kept in a physically secure room. A read-only copy of the Kerberos database might also reside on other Kerberos computer systems.

(Source.)

On Windows, Kerberos usually works within domains:

  A domain is defined as a logical group of network objects (computers, users, devices) that share the same Active Directory database.

(Wikipedia source.)


Signature and Timestamp for Long Term Document Archival Question

Your best approach would be to secure multiple signatures from different trusted authorities. In case one of the private keys is compromised, the file could still be validated.

This will incur additional costs, but increase resilience to certificate revocation. Or you could also establish a (more costly yet) procedure of periodic certificate revalidation (re-signing).

You need to consider what it is that you want to achieve here: if you want to independently assure the reader of the document's validity, then you need external TSA signing. Otherwise you could supply a document hashing service for internal double-check, which would do to assure you that no document tampering took place outside the document archival facility... but could never assure you of the trustworthiness of the facility itself (and more reason to do otherwise it's that it would be DIY encryption, in violation of Rule #1 of DIY Encryption - "Don't Do It" ).

Check out SeT Laboratory Paper, "TSA Key Compromise or Loss".


I've had to solve this same issue twice before:

My first web app, I actually knew enough to MD5 hash users' passwords; I did not, however, know about salt, and worked that in later.
Actually the same web app, a few years later, when I decided to "upgrade" to SHA-512 from the existing MD5.

In both cases, I used neither of your options, but rather option 3: Upon a user's next login, use the password to generate the new hash and replace the old one (after verifying against the old one).

In the case of adding a salt, this was pretty trivial: All I did was default everyone to a salt of "" (empty string), which could be concatenated and then hashed without having any effect whatsoever on the resultant hash; once authenticated, I generated a new salt for the user and then re-hashed the password, saving that new result.

Upgrading from MD5 to SHA-512 was a tad trickier, but by simply looking at the string length of the has in the table (I didn't use a new column for the new hash, merely expanded the existing one to accommodate the longer hash) I could tell which algorithm to use and then authenticate the user appropriately; once authenticated, if they were still on the old hash I would compute a new one (also taking the opportunity to generate a brand new salt) and store that.

In both cases I of course did eventually run into the situation where further down the road "old style" passwords still existed. After waiting an appropriate amount of time (e.g. 6 months), simply decide that those that haven't logged in since the new style was adopted are "inactive": Generate and store a new, completely random password for them (using the new style of storing it, of course), and if they ever did come back they would have to use your password reset mechanism to regain access. (Alternatively, leave as-is, but effectively invalidate it by simply dropping the code for the old style.) You could (if applicable) also send an e-mail to these users, asking them to log in to complete a security upgrade on their account, before invalidating their current password.

This approach does involve additional code in the authentication routine, of course, but it's only temporary -- once everyone has upgraded (whether by logging in or by being "forced" in as in the previous paragraph), you can remove all code responsible for performing the upgrade. Security upgrade complete, with the majority of your users (and all of your regular users) having never noticed a thing!


When using VPN on a WiFi network, can the traffic of other non-VPN computers on the WiFi be monitored?

It is not really a "tunnel" actually only the connection between you and the Server is encrypted. This is calles a remote-access-VPN

However there is also a thing called site-to-site VPN which is used to connect whole network with ech other in an encrypted way.

I assume you have some sort of client software which usually means you are using the remote access vpn.

Your computer is able to see other computers traffic in a wifi scenario, thats the reason you are using encryption.


What is the suggested best practice for changing a user's email address?

The problem I see with confirming the old email address is that sometimes people change address because they cannot access the old one anymore. For example, the old address might have expired (and maybe even reassigned to someone else!). Or they might just have forgotten the password to the old address, and have no alternative ways to prove their identity. Or the old address belonged to a company where they used to work, and they don't have access to it anymore. Or it might have been blocked or terminated for for other reasons (violation of ToS, DoSed, filled with spam and practically unusable, etc.)
So the way I see it, you have two ways to log in to an account: using your password, or using your email account to request a password reset. Therefore the email account is an alternative way to authenticate. Now, whenever you make changes to the ways you can authenticate, you should verify your identity. And if you can't rely on the old email account (that you are about to change) the obvious solution seems to ask for your current password before you can change the address.

Ask for your current password (it's a valid verification of your identity) to be able to change the email address.
Verify you have access to the new email address and, if verified, make it the new default one.
Maybe do something with the old address that has been changed.

What you do with the old account, in my opinion, has some pros and cons. You could decide to:

Send a notice to the old email, for example: "Your email address for accessing Website Example has been changed, if you didn't expect this your account might have been compromised, etc." You might also provide a link to recover the possibly compromised account, with a token that expires after some time. The problem with this option is that if the old account has been reassigned to someone else, you would not want to let them know too much information (and definitely not give them a direct recovery option)
Just throw away the old email once it's been successfully updated, without sending any notices. The problem with this is that if an attacker manages to steal a user's password, they can take over their account completely and lock them out.
Don't send anything to the old email, but keep it in the database for some time, for support or recovery, in case the real owner of a compromised account (with the old email) shows up asking for help. The problem with this option is that the real owner, in case the account is compromised, might not realize it until... how long?


Is it possible to create a new image standard which supports privacy?

If you can read it, you can copy it. This is why all attempts at copy-protection are doomed from the start.

You can make it harder for the end user to forward it, like in the scheme you suggest. But somebody will build a custom version of the OS and modify it to ignore the EXIF note that forbids forwarding.

If nothing else, a user can always take a picture of the phone while it is displaying the picture.

So - no, a standard like that is not feasible. From a technology perspective, the best you can do is make it harder, but people will always find and use ways to evade it.


Is SiteKey a valid defense against Phishing?

SiteKey is not an effective defense against phishing.  In principle, it could be helpful for a tiny population of expert users who are very conscientious about examining the image and know how web security works, but those users are rare.  However, a mechanism like this really needs to help protect average users, not just computer security experts.  And, for typical users, SiteKey is not an effective defense against phishing, for reasons explained below.

The good news is that, today, phishing appears to be relatively low on the scale of risks.  Phishing attacks don't seem to be very successful today.  Therefore, the deficiencies in SiteKey may be acceptable.  That said, SiteKey is mostly security theater: it doesn't add much security, for the typical user.

I should elaborate on how I can make such strong statements.  As it happens, this question has been studied in the research literature and there is experimental data on it -- and the data is fascinating.  The data turns out to have some surprises for all of us!

Experimental methodology.
SiteKey's use of a custom "security images" (and security phrase) has been evaluated in a user study, conducted with ordinary users who were asked to perform online banking in the lab.  Unbeknownst to them, some of them were 'attacked' in a controlled way, to see whether they would behave securely or not and whether the security images helped or not.

The researchers evaluated two attacks:

MITM attack: The researchers simulated a man-in-the-middle attack that strips off SSL.  The only visible indication of the attack is that lack of a HTTPS indicator (no HTTPS in the address bar, no lock icon, etc.).
Security image attack: The researchers simulated a phishing attack.  In this attack, it looks like the users are interacting with the real bank site, except that the SiteKey security image (and security phrase) is missing.  In its place, the attack places the following text:

  SiteKey Maintanance Notice:
  Bank of America is currently upgrading our award winning SiteKey feature. Please contact customer service if your SiteKey does not reappear within the next 24 hours.

I find this a brilliant attack.  Rather than trying to figure out what security image (or security phprase) to show to the user, don't show any security image at all, and just try to persuade the user that it's OK that there is no security image.  Don't try to defeat the security system where it is strongest; just bypass the entire thing by undermining its foundation.

Anyway, the researchers then proceeded to observe how users behaved when they were attacked in these ways (without their knowledge).

Experimental results.
The results?  The attacks were incredibly successful.

Not a single user avoided the MITM attack; every single one who was exposed to the MITM attack fell for it.  (No one noticed that they were under attack.)
97% of those exposed to the security image attack fell for it.  Only 3% (2 out of 60 participants) behaved securely and refused to log in when hit with this attack.

Conclusions.
Let me attempt to draw some lessons from this experiment.

First, SiteKey (and security images) is ineffective.  SiteKey is readily defeated by very simple attack techniques.
Second, when assessing what security mechanisms will be effective, our intuitions are not reliable.  Even expert security professionals can draw the wrong conclusions.  For instance, I've seen some competent and knowledgeable security folks argue that security images add some security because they force the attacker to work harder and implement a MITM attack.  From this experiment, we can see that this argument does not hold water.  Indeed, a very simple attack (clone the website and replace the security image with a notice saying the security image feature is currently down for maintenance) is extremely successful in practice.

So, when the security of a system depends upon how users will behave, it is important to conduct rigorous experiments to evaluate how ordinary users will actually behave in real life.  Our intuitions and "from-first-principles" analyses are not a substitute for data.
Third, ordinary users don't behave in the way security folks sometimes wish they would.  Sometimes we talk about a protocol as "the user will do such-and-such, then the server will do thus-and-such, and if the user detects any deviation, the user will know he is under attack".  But that's not how users think.  Users don't have the suspicious mindset that security folks have, and security is not at the forefront of their mind.  If something isn't quite right, a security expert might suspect she is under attack -- but that's usually not the first reaction of an ordinary user.  Ordinary users are so used to the fact that web sites are flaky that their first reaction, upon seeing something odd or unusual, is often to shrug it off and assume that the Internet (or the web site) isn't quite working right at the moment.  So, if your security mechanism relies upon users to become suspicious if certain cues are absent, it's probably on shaky grounds.
Fourth, it's not realistic to expect users to notice the absence of a security indicator, like a SSL lock icon.  I'm sure we've all played "Simon Says" as a kid.  The fun of the game is entirely that -- even when you know to look out for it -- it is easy to overlook the absence of the "Simon Says" cue.  Now think about a SSL icon.  Looking for the SSL icon is not the user's primary task, when performing online banking; instead, users typically just want to pay their bills and get the chore done so they can move on to something more useful.  How much easier it is to fail to notice its absence, in those circumstances!

By the way, you might wonder how Bank of America (or other banks who use similar methods) have responded to these findings.  After all, Bank of America emphasizes their SiteKey feature to users; so how have they reacted to the discovery that the security image feature is all but useless in practice?  Answer: they haven't.  They still use SiteKey.  And if you ask them about their response, a typical response has been something of the form "well, our users really like and appreciate SiteKey".  This tells you something: it tells you that SiteKey is largely a form of security theater.  Apparently, SiteKey exists to make users feel good about the process, more than to actually protect against serious attacks.

References. For more details of the experiment I summarized above, read the following research paper:

The Emperor's New Security Indicators.  Stuart E. Schechter, Rachna Dhamija, Andy Ozment, and Ian Fischer.  IEEE Security & Privacy 2007.


Router tries to manipulate HTTPS connections?

While it is the typical case of https eavesdropping, most likely there is no malicious intent in the background.

For example, the router can provide some web filtering or other defense for you with it.

Furthermore, it is impossible to be done without your consent: the manufacturer can't create such SSL certificates to the domains you visit, what are commonly accepted by all the browsers you use. You will surely see the warnings of your browsers due to failed certs.

On this reason, doing this for malicious purposes is practically impossible by router manufacturers.

I think it is more likely that you switched some content-based web filtering function of the router on, but did not read the docs saying, how to import the certs of the router into your browser (requires typically many clicks).

Check the router docs, and turn this off. From a router manufacturer, I want a router, not a virus filter.


Does digital signature really ensure data integrity?

Assuming the cryptographic algorithm is strong and the key used does not have any weakness, the attacker will NOT be able to generate the corresponding private key from a public key. That is the whole point of Public Key Cryptosystems.

The attacker would usually be needed to solve a computationally impossible problem in finite time (Factorize a huge number in case of RSA or solve discrete logarithm problem in case of ElGamal) to generate the private key just from the public key.

So, the attacker will not be able to forge any signatures unless and until she does, what is described above.


Should a PCI-DSS certification be renewed?

From the intro section 'Scope of PCI DSS Requirement' in v3.2:

  The first step of a PCI DSS assessment is to accurately determine the scope of the review. At least annually and prior to the annual assessment, the assessed entity...

A SAQ is completed in lieu of an assessment and given that the assessment requirement is annual, by implication that SAQ requirement is annual as well.


The block size that dd will process count of is determined by the bs (ibs, obs) argument to dd:

bs=BYTES
      read and write up to BYTES bytes at a time (default: 512);
      overrides ibs and obs

That's per this new the man page; back when I learned on SunOS 4 it was more clear that "bs" stood for "block size":

bs=n
   Sets both input and output block sizes to n bytes, superseding ibs= and obs=. If
   no conversion other than sync,noerror , and notrunc is specified, each input
   block is copied to the output as a single block without aggregating short blocks.

And as you can see in this answer early versions of Unix used a 512 byte "block", or unit of allocation, in filesystems.  That's why the current default for dd bs is still 512 bytes!

You can also specify other size units; for example, bs=5M to have a block size of 5 Megabytes:

N and BYTES may be followed by the following multiplicative suffixes:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024,
xM =M, GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E,
Z, Y.

In your case, no matter what the bs is set to, if you choose count=0 you won't write anything!  If you leave bs unset and choose count=1, you'll write 512 bytes.

This strict control over "block size" makes much more sense when you're dealing with tapes or other sequential, limited devices.  If you write 128k blocks of data to a tape drive with 64k block size, you just lost half your data!  Writing to a file(system), unlike an actual device, is far more forgiving about allocating space for whatever you want to give it.


SSL protocol paper "Investigations about SSL"

Seems eucybervote.org isn't available anymore. You can try the web archive.